ObjectOS
配置

AI 服務

LLM、Embedder、RAG 與 MCP —— 多 Provider 可插拔,執行時可切換。

ObjectOS 把 AI 視為一等能力,分為三個可插拔層

作用
Chat / 生成@objectstack/service-ai會話、工具呼叫、流式輸出
Embeddings@objectstack/service-embedder + 介面卡文本 → 向量,用於語義搜尋和 RAG
Knowledge / RAG@objectstack/service-knowledge + 介面卡文件 → 已索引的知識庫

三層都是可選的,都是與 Provider 解耦的,並且都可以在 Console → Configuration 中執行時重配,無需重啟。

Chat / 生成

Vercel AI SDK 驅動。把你想用的 Provider 作為 peer 依賴安裝:

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

然後註冊服務及一個或多個模型:

import { ServiceAI } from '@objectstack/service-ai';
import { openai }     from '@ai-sdk/openai';
import { anthropic }  from '@ai-sdk/anthropic';

ServiceAI.configure({
  defaultModel: 'fast',
  models: {
    fast:     openai('gpt-4o-mini'),
    smart:    openai('gpt-4o'),
    claude:   anthropic('claude-3-5-sonnet-latest'),
  },
  enableStreaming: true,
  maxHistoryLength: 50,
});

Provider API key 來自各 SDK 的標準環境變數:

Provider環境變數
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');

const convo = await ai.createConversation({
  model: 'smart',
  systemPrompt: 'You are a helpful assistant.',
});

const reply = await ai.sendMessage({
  conversationId: convo.id,
  message: 'Summarize ObjectStack in two sentences.',
});

在流程中使用

automation 能力暴露了一個 ai_call 步驟型別:

{
  type: 'action',
  action: 'ai_call',
  inputs: {
    model:   'fast',
    prompt:  'Categorize this ticket: {!trigger.record.subject}',
    schema:  { category: 'string', priority: 'string' },
  },
  output: 'classified',
}

詳見 Flows & Automation

Embedder

Embedder 服務把文本轉換為稠密向量。ObjectStack 為多個 Provider 提供了介面卡——因為 embedding 生態迭代很快,最佳選擇取決於成本、延遲和語言。

Provider介面卡說明
OpenAI@objectstack/embedder-openaitext-embedding-3-small/-large
Azure OpenAI@objectstack/embedder-openai(Azure 配置)企業級,按區域部署
阿里通義 DashScope@objectstack/embedder-dashscopetext-embedding-v3
智譜 GLM@objectstack/embedder-zhipuembedding-2
矽基流動 SiliconFlow@objectstack/embedder-siliconflow開源模型聚合
火山 Doubao@objectstack/embedder-doubao字節跳動
MiniMax@objectstack/embedder-minimax
Ollama(自託管)@objectstack/embedder-ollama適合內網/離線
Custom@objectstack/embedder-custom接入你自己的 HTTP 端點
None內建完全停用 embedding

在程式碼中配置:

import { ServiceEmbedder }      from '@objectstack/service-embedder';
import { OpenAIEmbedderPlugin } from '@objectstack/embedder-openai';

ServiceEmbedder.configure({ defaultModel: 'small' });
// 然后注册适配器插件:
new OpenAIEmbedderPlugin({
  model: 'text-embedding-3-small',
  // OPENAI_API_KEY from env
});

或在執行時通過 Console → Configuration → AI → Embedder 選擇。無需重啟切換 Provider;已有向量仍可檢索(你可以在後臺重建索引)。

Knowledge / RAG

Knowledge 服務負責文件接入、切塊、embedding(通過 Embedder 服務)和檢索。底層儲存和檢索後端可插拔:

介面卡後端適用場景
@objectstack/knowledge-memory程序內開發、演示、小型知識庫
@objectstack/knowledge-tursoTurso/libSQL + sqlite-vss單區域生產環境,嵌入式向量
@objectstack/knowledge-ragflowRAGFlow高質量開源 RAG,含切塊和重排
import { ServiceKnowledge }     from '@objectstack/service-knowledge';
import { TursoKnowledgePlugin } from '@objectstack/knowledge-turso';

ServiceKnowledge.configure();
new TursoKnowledgePlugin({
  databaseUrl: process.env.TURSO_DATABASE_URL,
  authToken:   process.env.TURSO_AUTH_TOKEN,
});

已索引的知識庫成為一等物件——可以在流程中查詢,可以在 Console 中呈現,也可以作為檢索上下文掛接到 AI 助手。

MCP —— Model Context Protocol

ObjectOS 可以通過開放的 Model Context Protocol 把自己作為工具伺服器暴露給 AI Agent(Claude Desktop、IDE、自定義 Agent)。

import { McpServerPlugin } from '@objectstack/mcp';

new McpServerPlugin({
  // expose specific objects + actions as MCP tools
  expose: ['todo_task', 'support_ticket'],
});

Agent 通過 MCP 發現並呼叫 ObjectOS 的 Action——遵循呼叫使用者的許可權集。MCP 伺服器還暴露一小組通用工具:search_recordsget_recordcreate_recordinvoke_action

執行保證

  • 無強制雲依賴。 使用 Ollama 做對話 + Ollama Embedder + memory knowledge —— 完全離線可用。
  • 可熱切換。 在 Console 修改 Provider;新請求在下次呼叫時使用新 Provider,無需重啟。
  • 按租戶配置。 每個 Environment 擁有獨立的 AI 設定。租戶 A 用 OpenAI,租戶 B 用 Anthropic —— 同一執行時。
  • 審計日誌條目。 每次會話、工具呼叫、Embedder 請求都可被審計(@objectstack/plugin-audit)。
  • 成本可感知。 Token 數和 Provider ID 寫入審計日誌,便於成本分攤/分析。

下一步

On this page