ObjectOS
設定

AI サービス

LLM、埋め込み、RAG、MCP — プロバイダーをまたいでプラグイン化でき、実行時に差し替え可能。

AI サービス

ObjectOS は AI を第一級の機能として扱い、3 つのプラグイン可能なレイヤーを提供します。

レイヤーパッケージ役割
チャット / 生成@objectstack/service-ai会話、ツール呼び出し、ストリーミング
埋め込み@objectstack/embedder-openai(OpenAI 互換)テキスト → ベクトル(セマンティック検索と RAG 用)
ナレッジ / RAG@objectstack/service-knowledge + アダプタードキュメント → インデックス化されたナレッジベース

3 つとも任意であり、3 つともプロバイダー非依存で、3 つとも再起動なしに Console → Configuration から実行時に再設定できます。

チャット / 生成

Vercel AI SDK を基盤としています。必要なプロバイダーをピア依存としてインストールしてください。

pnpm add @ai-sdk/openai          # OpenAI
pnpm add @ai-sdk/anthropic       # Claude
pnpm add @ai-sdk/google          # Gemini
pnpm add @ai-sdk/gateway         # AI gateway / OpenRouter / proxies

次に、Vercel SDK アダプターを指定して AI サービスプラグインを登録します。

import { AIServicePlugin, VercelLLMAdapter } from '@objectstack/service-ai';
import { openai } from '@ai-sdk/openai';

kernel.use(new AIServicePlugin({
  adapter: new VercelLLMAdapter({ model: openai('gpt-4o') }),
  models: [
    { id: 'fast',  provider: 'openai', model: 'gpt-4o-mini' },
    { id: 'smart', provider: 'openai', model: 'gpt-4o' },
  ],
  defaultModelId: 'fast',
}));

models リストは実行時のモデルレジストリに渡され、デフォルトモデルの解決やトレースにおけるコスト按分を駆動します。デフォルトでは、プラグインは ai 設定ネームスペースにもバインドされ、オペレーターが Console でプロバイダー / 認証情報 / モデルを編集すると、アダプターをライブで再構築します。そのため再起動は不要です。

プロバイダーの API キーは、各 SDK の通常の環境変数から取得されます。

プロバイダー環境変数
OpenAIOPENAI_API_KEY
AnthropicANTHROPIC_API_KEY
GoogleGOOGLE_GENERATIVE_AI_API_KEY
AI GatewayAI_GATEWAY_API_KEY

Console ではこれらを実行時設定として貼り付けることもできます。同じ優先順位(env > settings)に従いますが、ライブ編集なので再起動は不要です。

コードから AI サービスを使う

const ai = kernel.getService<IAIService>('ai');

// One-shot chat
const result = await ai.chat(
  [{ role: 'user', content: 'Summarize ObjectStack in two sentences.' }],
  { model: 'smart' },
);

// Structured output
const { object } = await ai.generateObject(
  [{ role: 'user', content: 'Classify this ticket: ...' }],
  { schema, model: 'fast' },
);

このサービスは complete()streamChat()embed()listModels() も公開しています。会話は ai_conversations / ai_messages レコードとして永続化され、REST API(POST /api/v1/ai/chatPOST /api/v1/ai/conversations)経由で管理されます。

エージェントとフローから使う

宣言的な AI — エージェント、スキル、ツール — については AI Agents を参照してください。フローは、登録済みの任意のアクション(ai.chat() / ai.generateObject() 呼び出しをラップするアクションを含む)を action ノードとして呼び出せます。周辺の文脈については Flows & Automation を参照してください。

埋め込み(Embedders)

埋め込みはテキストを密ベクトルに変換します。単一の OpenAI 互換アダプター @objectstack/embedder-openai は、OpenAI に加えて、OpenAI 互換の /v1/embeddings エンドポイントを公開するあらゆるプロバイダーをカバーします。プリセット(ベースURLを自動設定します)を選ぶか、baseUrl をカスタムエンドポイントに向けてください。

プロバイダーpreset備考
OpenAIopenaitext-embedding-3-small/-large
Azure OpenAIazurebaseUrl で完全なデプロイメント URL を指定
阿里通义 DashScopedashscopetext-embedding-v3
智谱 GLMzhipuembedding-2
硅基流动 SiliconFlowsiliconflowOSS モデルのアグリゲーター
火山 DoubaodoubaoByteDance
MiniMaxminimax
Ollama(セルフホスト)ollamaエアギャップ環境に対応(http://localhost:11434/v1
カスタム(省略し、baseUrl を設定)独自の OpenAI 互換エンドポイントを使用

コードでの設定:

import { createOpenAIEmbedder } from '@objectstack/embedder-openai';

const embedder = createOpenAIEmbedder({
  preset: 'openai',
  model: 'text-embedding-3-small',
  // apiKey from OPENAI_API_KEY env if omitted
});

または Console → Configuration → AI → Embedder から実行時に選択します。再起動なしでプロバイダーを切り替えても、既存のベクトルは検索可能なまま残ります(バックグラウンドで再インデックスできます)。

ナレッジ / RAG

ナレッジサービスは、ドキュメントの取り込み、チャンク分割、埋め込み(embedder サービス経由)、検索をオーケストレーションします。実際のストレージと検索のバックエンドはプラグイン可能です。

アダプターバックエンド適した用途
@objectstack/knowledge-memoryインプロセス開発、デモ、小規模な KB
@objectstack/knowledge-ragflowRAGFlowチャンク分割 + リランキングを備えた高品質な OSS RAG
import { KnowledgeServicePlugin } from '@objectstack/service-knowledge';
import { KnowledgeRagflowPlugin } from '@objectstack/knowledge-ragflow';

kernel.use(new KnowledgeServicePlugin({ defaultTopK: 10 }));
kernel.use(new KnowledgeRagflowPlugin({
  endpoint: process.env.RAGFLOW_ENDPOINT, // e.g. http://localhost:9380
  apiKey:   process.env.RAGFLOW_API_KEY,
}));

インデックス化されたナレッジベースは第一級のオブジェクトになります。フローからクエリしたり、Console に表示したり、検索コンテキストとして AI アシスタントに紐付けたりできます。

MCP — Model Context Protocol

ObjectOS は、オープンな Model Context Protocol を介して、AI エージェント(Claude Desktop、IDE、カスタムエージェント)に対してツールサーバーとして自身を公開できます。

import { MCPServerPlugin } from '@objectstack/plugin-mcp-server';

kernel.use(new MCPServerPlugin({
  transport: 'stdio', // or 'http'
  autoStart: true,
}));

エージェントは MCP を通じて ObjectOS のツールを検出し呼び出します — 呼び出しユーザーの権限に従います。サーバーは AI サービスのツールレジストリをブリッジし、list_objectsdescribe_objectquery_recordsget_recordaggregate_data などの汎用ツールを含みます。

運用上の保証

  • クラウド依存を必須としない。 チャットに Ollama、埋め込みに Ollama embedder、ナレッジに memory を使えば、完全なエアギャップ運用が可能です。
  • ライブで差し替え可能。 Console でプロバイダーを変更すると、次の呼び出しから新しいリクエストが新しいプロバイダーを使用します。再起動は不要です。
  • テナントごとの設定。 各 Environment は独自の AI 設定を持ちます。テナント A は OpenAI、テナント B は Anthropic — 同一ランタイムで実現できます。
  • 監査ログの記録。 すべての会話、ツール呼び出し、embedder リクエストを監査できます(@objectstack/plugin-audit)。
  • コストを意識。 トークン数とプロバイダー ID は監査ログに流れ、チャージバックやコスト分析に利用できます。

次に読むべきもの

On this page