AI サービス
ObjectOS の AI を設定する場所。製品内 AI ランタイムのプロバイダー設定、オープンな埋め込みとナレッジのパッケージ、そして MCP サーバー。
ObjectOS は、オープンソースの ObjectStack フレームワークに含まれる AI の基本要素(MCP サーバー、Knowledge Protocol とそのアダプター、埋め込み)の上に、製品内 AI ランタイムを追加します。データに問い合わせる ask アシスタント、作成を支援する build アシスタント、そして /api/v1/ai/* のチャットエンドポイントです。
セルフマネージドのデプロイメント(ObjectOS Enterprise)では、製品内 AI を有効にするのはライセンスです。ライセンスのない単一組織のデプロイメントは Community の動作(オープンな MCP サーバー、AI は自分で用意)で実行され、ライセンスがあれば、AI Builder と「データに質問する」機能が自社のインフラストラクチャ上で有効になります。Docker → License を参照してください。
何をどこで設定するか
| レイヤー | 設定する場所 | 提供元 |
|---|---|---|
| チャットのモデルプロバイダー | ai 設定名前空間:Setup → Configuration → AI & Embedder、または OS_AI_* 環境変数 | ObjectOS |
| 埋め込み | @objectstack/embedder-openai、OpenAI 互換の埋め込み | オープンなフレームワーク |
| ナレッジ / RAG | @objectstack/service-knowledge とアダプターのプラグイン | オープンなフレームワーク |
| MCP サーバー | デフォルトで /api/v1/mcp で有効。OS_MCP_SERVER_ENABLED=false で無効になります | オープンなフレームワーク |
チャットのモデルプロバイダー
インストールしたり登録したりする AI パッケージはありません。@objectstack/service-ai は 11.0 でオープンな ObjectStack のディストリビューションから外れました。それが提供する AI ランタイムは、オープンソースのフレームワークではなく ObjectOS とともに提供されます。
プロバイダー、モデル、認証情報は ai 名前空間の設定なので、ほかのすべての設定と同じように解決されます。環境変数は Setup に保存された値より優先され、その値をロックします(System Settings → Resolution order)。
| 変数 | 設定するもの |
|---|---|
OS_AI_PROVIDER | プロバイダー。サポートされる値には gateway、openai、anthropic、google、deepseek、dashscope、cloudflare、siliconflow、openrouter が含まれます。 |
OS_AI_OPENAI_API_KEY · OS_AI_OPENAI_MODEL · OS_AI_OPENAI_BASE_URL | OpenAI、または任意の OpenAI 互換 API(Azure、ローカルのゲートウェイ、サードパーティのエンドポイント)。OS_AI_PROVIDER=openai とともに使います。モデルのデフォルトは gpt-4o です。 |
OS_AI_ANTHROPIC_API_KEY · OS_AI_ANTHROPIC_MODEL | Anthropic。OS_AI_PROVIDER=anthropic とともに使います。 |
OS_AI_GOOGLE_API_KEY · OS_AI_GOOGLE_MODEL | Google。OS_AI_PROVIDER=google とともに使います。 |
OS_AI_GATEWAY_MODEL · OS_AI_GATEWAY_API_KEY | Vercel AI Gateway。OS_AI_PROVIDER=gateway とともに使います。 |
OS_AI_DEEPSEEK_API_KEY、OS_AI_DASHSCOPE_API_KEY…… | プリセットの OpenAI 互換プロバイダーごとに、_API_KEY と _MODEL の変数が 1 つずつあります。たとえば OS_AI_DEEPSEEK_MODEL=deepseek-chat です。 |
たとえば、Setup を使わずに、デプロイメント全体でサードパーティの OpenAI 互換プロバイダーに固定するには:
OS_AI_PROVIDER=openai
OS_AI_OPENAI_API_KEY=sk-...
OS_AI_OPENAI_MODEL=your-model
OS_AI_OPENAI_BASE_URL=https://your-provider.example.com/v1OpenAI 互換のベース URL には OS_AI_OPENAI_BASE_URL、または Setup の同じフィールドを使ってください。OPENAI_BASE_URL はプラットフォームレベルの変数ではありません。
プロバイダーが設定されていないとき
ランタイムは起動時に、最初に見つかった上流の認証情報からアダプターを選びます。
AI_GATEWAY_MODEL(とAI_GATEWAY_API_KEY):Vercel AI Gateway を通じてOPENAI_API_KEYANTHROPIC_API_KEYGOOGLE_GENERATIVE_AI_API_KEY- どれもない場合:
MemoryLLMAdapter。背後に実際のプロバイダーがないエコーモードです。
これらは上流の名前のままで、OS_* に改名されてはいません。OS_AI_MODEL は、OpenAI、Anthropic、Google を直接検出する場合のモデル ID を上書きします。起動後、ランタイムは ai 設定名前空間を読み取り、プロバイダーが環境変数または Setup に保存された値から来ている場合はアダプターを差し替えます。
呼び出す
製品内 AI は /api/v1/ai/* で提供されます。チャット(JSON またはストリーミング)、補完、環境が提供するモデル、会話です。@objectstack/client SDK は、その ai 名前空間を通じてこれにアクセスします:ai.chat、ai.chatStream、ai.complete、ai.models、ai.conversations。宣言的な AI(エージェント、スキル、ツール)については エージェントを参照してください。
埋め込み
@objectstack/embedder-openai は、OpenAI の POST /v1/embeddings の形を話す任意のエンドポイントで動作します。OpenAI、Azure OpenAI、DashScope、Zhipu BigModel、SiliconFlow、Doubao、MiniMax、Ollama、または独自のゲートウェイです。プリセットは既知のプロバイダーのベース URL を埋め、baseUrl はそれ以外の任意のエンドポイントを指します。
import { createOpenAIEmbedder } from '@objectstack/embedder-openai';
const embedder = createOpenAIEmbedder({
preset: 'dashscope',
apiKey: process.env.DASHSCOPE_API_KEY!,
model: 'text-embedding-v3',
});apiKey は必須です。パッケージの README に、各プロバイダーのベース URL と代表的なモデルが記載されています。
オープンなフレームワークには、まだ埋め込みを使うナレッジアダプターはありません。@objectstack/knowledge-memory と @objectstack/knowledge-ragflow は埋め込みのオプションを取りません。
ナレッジ / RAG
ナレッジサービスはナレッジのソースを宣言し、返ってくるものを権限でフィルターします。検索そのものはアダプターのプラグインが行います。
| アダプター | バックエンド | 向いている用途 |
|---|---|---|
@objectstack/knowledge-memory | プロセス内 | 開発環境とテスト。永続化がないので本番向けではありません |
@objectstack/knowledge-ragflow | RAGFlow | チャンク分割、埋め込み、ハイブリッド検索、リランキングを RAGFlow が行います |
オープンなフレームワークでの組み込み方:
import { KnowledgeServicePlugin } from '@objectstack/service-knowledge';
import { KnowledgeRagflowPlugin } from '@objectstack/knowledge-ragflow';
kernel.use(new KnowledgeServicePlugin({
sources: [{
id: 'product_docs',
label: 'Product documentation',
adapter: 'ragflow',
source: { kind: 'http', urls: ['https://docs.example.com/sitemap.xml'] },
adapterConfig: { datasetId: 'rgf_doc_dataset_id' }, // RAGFlow dataset to bind
}],
}));
kernel.use(new KnowledgeRagflowPlugin({
endpoint: process.env.RAGFLOW_ENDPOINT!, // e.g. http://localhost:9380
apiKey: process.env.RAGFLOW_API_KEY!,
}));RAGFlow アダプターはデータセットを作成しません。RAGFlow の UI で一度作成し、そこでチャンク分割の方法、埋め込みモデル、リランクのポリシーを選びます。
ソースのレコードを持つすべてのヒットは、呼び出し元の権限に照らして再チェックされます。素の ObjectQL クエリをゲートするのと同じ行レベルセキュリティです。検索を search_knowledge ツールとして製品内のチャットに公開するのは、ObjectOS ランタイムの一部です。
MCP:Model Context Protocol
すべての ObjectOS デプロイメントは、すでに /api/v1/mcp で Model Context Protocol を提供しています。デフォルトで有効で、インストールするプラグインはありません。stdio で提供することもできます。クライアントの接続、stdio への切り替え、エージェントが得るツールについては AI ツールを接続する(MCP)で扱っています。
オープンなフレームワークで MCP サーバーのプラグインを明示的に登録するには:
import { MCPServerPlugin } from '@objectstack/mcp';
kernel.use(new MCPServerPlugin({
transport: 'stdio', // or 'http'
autoStart: true,
}));ツールはオプションごとにオプトインするものではありません。プラグインは起動時に、AI ツールのレジストリ、メタデータサービス、データエンジンを橋渡しします。すべての呼び出しは、呼び出したユーザーの権限のもとで実行されます。
次に進む
- エージェント:宣言的なエージェント、スキル、ツール
- AI ツールを接続する(MCP):外部のクライアントをアプリに向ける
- システム設定:設定がどう解決され、環境変数が何をロックするか
- セキュリティとコンプライアンス:AI のデータの流れがどう分離されるか
@objectstack/embedder-openaiのソース@objectstack/service-knowledgeのソース@objectstack/knowledge-ragflowのソース@objectstack/mcpのソース