模型提供方
open-multi-agent 在托管、云端与本地提供方之间保持智能体配置的形态一致。更改 provider、model 和相应的凭据;团队定义的其余部分保持不变。
受支持的运行时是 Node.js 20 及以上;推荐 Node.js 22 或 24。Node.js 20 上游已经 EOL,保留它只是作为迁移兼容窗口。OMA 会在下一个大版本移除对 Node.js 20 的支持, 时间不早于 2026-10-31。对 OpenAI 与 OpenAI 兼容的 Chat Completions 端点,core 使用 OpenAI SDK v6。
const agent = { name: 'my-agent', provider: 'anthropic', model: 'claude-sonnet-4-6', systemPrompt: 'You are a helpful assistant.',}内置提供方快捷方式
Section titled “内置提供方快捷方式”框架为下列每一个都内置了对应的提供方名。设置 provider 和对应环境变量,适配器即会处理端点。
在底层,Anthropic、Gemini 和 Bedrock 使用各自专用的 API。其余内置快捷方式是对 OpenAI 兼容端点的预配置封装;与下方 OpenAI 兼容表格相同的线路格式,只是
baseURL已预先配置好。
| Provider | Config | Env var | Example model | Notes |
|---|---|---|---|---|
| Anthropic (Claude) | provider: 'anthropic' | ANTHROPIC_API_KEY | claude-sonnet-4-6 | 原生 Anthropic SDK。 |
| Gemini | provider: 'gemini' | GEMINI_API_KEY | gemini-2.5-pro | 原生 Google GenAI SDK。需要 npm install @google/genai。 |
| OpenAI (GPT) | provider: 'openai' | OPENAI_API_KEY | gpt-4o | |
| Azure OpenAI | provider: 'azure-openai' | AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT | gpt-4 | 可选 AZURE_OPENAI_API_VERSION、AZURE_OPENAI_DEPLOYMENT。 |
| GitHub Copilot | provider: 'copilot' | GITHUB_COPILOT_TOKEN(回退到 GITHUB_TOKEN) | gpt-4o | 在 OpenAI 协议之上的自定义 token 交换流程。 |
| Grok (xAI) | provider: 'grok' | XAI_API_KEY | grok-4 | OpenAI 兼容;端点为 api.x.ai/v1。 |
| DeepSeek | provider: 'deepseek' | DEEPSEEK_API_KEY | deepseek-v4-flash | OpenAI 兼容 Chat Completions。deepseek-v4-flash 当前解析为 DeepSeek-V4-Flash-0731(公测);deepseek-v4-pro 仍是 Preview API。两者都支持 1M 上下文与 384K 最大输出。Flash 端点也支持 DeepSeek 原生的 Responses API,而 OMA 内置适配器使用 Chat Completions。旧版 deepseek-chat / deepseek-reasoner 已于 2026-07-24 下线。 |
| Doubao (Volcengine) | provider: 'doubao' | ARK_API_KEY | doubao-seed-1-8-251228 | OpenAI 兼容。字节跳动火山引擎 Ark 端点 https://ark.cn-beijing.volces.com/api/v3。见 providers/doubao。 |
| Hunyuan (Tencent MaaS / TokenHub) | provider: 'hunyuan' | HUNYUAN_API_KEY | hy3-preview | OpenAI 兼容。默认端点 https://tokenhub.tencentmaas.com/v1(腾讯当前平台;sk-... 密钥,Hunyuan 3 系列模型)。工具调用已在 hy3-preview 上验证。见 providers/hunyuan。 |
| Hunyuan (legacy Tencent Cloud) | provider: 'hunyuan' + HUNYUAN_BASE_URL | HUNYUAN_API_KEY | hunyuan-turbos-latest | 旧版端点 https://api.hunyuan.cloud.tencent.com/v1(console.cloud.tencent.com/hunyuan 密钥;独立的密钥命名空间)。腾讯已宣布该平台即将下线(2026-06-30 停售,2026-09-30 全面关停)。在此之前可设置 HUNYUAN_BASE_URL=https://api.hunyuan.cloud.tencent.com/v1 指向它。工具调用已在 hunyuan-turbos 和 hunyuan-functioncall 上验证。 |
| MiniMax (global) | provider: 'minimax' | MINIMAX_API_KEY | MiniMax-M3 | OpenAI 兼容。 |
| MiniMax (China) | provider: 'minimax' + MINIMAX_BASE_URL | MINIMAX_API_KEY | MiniMax-M3 | 设置 MINIMAX_BASE_URL=https://api.minimaxi.com/v1。 |
| MiMo | provider: 'mimo' | MIMO_API_KEY(+ 可选 MIMO_BASE_URL) | mimo-v2.5-pro | OpenAI 兼容。默认使用按量付费端点 https://api.xiaomimimo.com/v1;Token Plan 密钥(tp-...)需要订阅页面提供的集群 base URL,例如 https://token-plan-cn.xiaomimimo.com/v1。通过内置的 MiMo 适配器支持推理 / 工具调用循环。见 providers/mimo。 |
| Qiniu | provider: 'qiniu' | QINIU_API_KEY | deepseek-v3 | OpenAI 兼容。端点 https://api.qnaigc.com/v1;多个模型系列,见 Qiniu AI docs。 |
| AWS Bedrock | provider: 'bedrock' | 无(AWS SDK 凭据链) | anthropic.claude-3-5-haiku-20241022-v1:0 | 无 API 密钥。设置 AWS_REGION,或把 region 作为第 4 个参数传给 createAdapter。凭据来自环境变量、共享配置或 IAM 角色。较新的 Claude 模型可能需要跨区域推理配置前缀,如 us.。同时支持 Llama、Mistral 和 Cohere。见 providers/bedrock。需要 npm install @aws-sdk/client-bedrock-runtime。 |
OpenAI 兼容提供方
Section titled “OpenAI 兼容提供方”当一个服务端支持 OpenAI Chat Completions 时,不需要任何捆绑的快捷方式。使用 provider: 'openai' 并把 baseURL 指向该服务。
| Service | Config | Env var | Example model | Notes |
|---|---|---|---|---|
| Ollama (local) | provider: 'openai' + baseURL: 'http://localhost:11434/v1' | none | llama3.1 | |
| vLLM (local) | provider: 'openai' + baseURL | none | server-loaded | |
| LM Studio (local) | provider: 'openai' + baseURL | none | server-loaded | |
| llama.cpp server (local) | provider: 'openai' + baseURL | none | server-loaded | |
| OpenRouter | provider: 'openai' + baseURL: 'https://openrouter.ai/api/v1' + apiKey | OPENROUTER_API_KEY | openai/gpt-4o-mini | |
| Groq | provider: 'openai' + baseURL: 'https://api.groq.com/openai/v1' | GROQ_API_KEY | llama-3.3-70b-versatile | |
| Mistral | provider: 'openai' + baseURL: 'https://api.mistral.ai/v1' | MISTRAL_API_KEY | mistral-large-latest | 见 providers/mistral。 |
| MiMo | provider: 'openai' + baseURL: 'https://api.xiaomimimo.com/v1' | MIMO_API_KEY | mimo-v2.5-pro | 在使用工具调用的智能体循环时,优先选用内置的 mimo 提供方。Token Plan 用户应设置自己的 token-plan-*.xiaomimimo.com/v1 base URL。 |
| Zhipu GLM | provider: 'openai' + baseURL: 'https://open.bigmodel.cn/api/paas/v4' | ZHIPU_API_KEY | glm-4-plus | 见 providers/zhipu。 |
| Qwen (DashScope) | provider: 'openai' + baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1' | DASHSCOPE_API_KEY | qwen-plus | 见 providers/qwen。 |
| Moonshot AI (Kimi) | provider: 'openai' + baseURL: 'https://api.moonshot.ai/v1' | MOONSHOT_API_KEY | kimi-k2.5 | 见 providers/moonshot。 |
| LiteLLM (proxy) | provider: 'openai' + baseURL: 'http://localhost:4000/v1' + apiKey | LITELLM_API_KEY(若代理启用了鉴权) | 代理上的任意模型 | LiteLLM 把 100+ 提供方(OpenAI、Anthropic、Azure、Bedrock、Vertex 等)统一到一个 OpenAI 兼容端点之后。运行 litellm --config config.yaml 并把 baseURL 指向该代理。 |
其他服务只要实现了 OpenAI Chat Completions API,也能以同样方式接入,但这里未把它们列为已验证的提供方。对于密钥不是 OPENAI_API_KEY 的服务,通过 apiKey 显式传入;否则 openai 适配器会回退到 OPENAI_API_KEY。
OMA 注册的是 JSON schema 的 function 工具。如果 OpenAI 兼容响应里出现独立的
custom 工具调用变体,适配器会抛出 UnsupportedToolCallError,而不是丢弃这次调用
或呈现一次空的成功回合。
预算上限与受治理运行
Section titled “预算上限与受治理运行”Token 计数与 provider 无关。成本核算仍由应用拥有,因为 provider 定价、缓存 token
规则、地域与合同价格都会变化。配置一次 estimateCost,再在编排器或单次团队运行上
设置上限:
const orchestrator = new OpenMultiAgent({ maxCostBudget: 1, estimateCost: (usage, context) => priceTable[context.model](usage),})
const result = await orchestrator.runTeam(team, goal, { governanceIntent: 'required', requiredRoles: ['reviewer', 'security'], maxCostBudget: 0.25,})两个作用域都设置上限时,较低者生效;maxTokenBudget 同理。如果 required 运行在
必要执行事实完整前耗尽有效上限,会报告 governanceConclusion: 'unsatisfied'
与 governanceReason: 'budget',不会被表示为治理成功。应用指定的 mode 优先于
required 拓扑,但未满足的下限会以 unsatisfied / overridden 和
governance-overridden 标记披露。自动路由优先级最低。
对于 governanceIntent: 'preferred',可设
preferredUnderBudget: 'degrade',在存在有效上限时选择 Single。结果会携带
review-skipped-due-to-budget;这个软偏好对 required 治理判决仍是
not-applicable。默认值为 attempt,保持原行为。
这些控制不会执行预先的价格或延迟估算。estimateCost 在每次 provider 响应后
转换用量,token / 成本检查仍发生在既有的模型轮次与任务边界,因此可能超出一个
正在执行的模型轮次。preferredUnderBudget: 'degrade' 是应用声明的策略选择,
不是对某个计划必然超预算的预测。
Vercel AI SDK(可选)
Section titled “Vercel AI SDK(可选)”AI SDK 桥接器让智能体通过任意 AI SDK 提供方运行,而不是使用内置的 provider 工厂。使用 npm i ai @ai-sdk/<provider> 安装可选 peer;peer 版本范围接受 AI SDK 5、6 和 7,AI SDK 7 要求 Node.js >= 22。
在 AgentConfig 上传入 adapter: new AISdkAdapter(model)。设置 adapter 后,该智能体会忽略 provider、apiKey、baseURL 和 region。混合团队仍照常工作:只有带 adapter 的智能体使用 AI SDK。
import { openai } from '@ai-sdk/openai'import { AISdkAdapter } from '@open-multi-agent/core/ai-sdk'import { OpenMultiAgent } from '@open-multi-agent/core'
const oma = new OpenMultiAgent()await oma.runAgent( { name: 'researcher', model: 'gpt-4o', adapter: new AISdkAdapter(openai('gpt-4o')), systemPrompt: 'You are a researcher.', }, 'What are the latest AI trends?',)协调器通过 runTeam(team, goal, { coordinator: { adapter: new AISdkAdapter(...) } }) 接受同一个钩子。完整应用见 integrations/with-vercel-ai-sdk。
扩展思考 / 推理
Section titled “扩展思考 / 推理”AgentConfig 上的一份 thinking 配置会映射到各提供方的原生推理设置:
const agent = { name: 'deep-reasoner', provider: 'anthropic', model: 'claude-opus-4-6', systemPrompt: 'Reason carefully before answering.', thinking: { enabled: true, budgetTokens: 8_000 },}budgetTokens映射到 Anthropic 的thinking.budget_tokens和 Gemini 的thinkingConfig.thinkingBudget。effort('low' | 'medium' | 'high')映射到 OpenAI 兼容的reasoning_effort。框架 union 之外的值(例如'minimal'或'none')可通过extraBody: { reasoning_effort: '<value>' }传入。- DeepSeek 还会把
enabled映射为thinking: { type: 'enabled' | 'disabled' },并接受effort: 'max'。其他内置的 OpenAI 系列适配器会忽略 DeepSeek 专有的max值。显式的extraBody取值优先。 - 适配器会忽略无法识别的字段,因此同一份配置可安全用于混合提供方团队。
推理以 reasoning 事件流式传输。跨提供方切换时保留推理需通过 preserveReasoningAsText 选择启用;参见上下文管理和 patterns/cross-provider-reasoning。
本地模型工具调用
Section titled “本地模型工具调用”框架支持对由 Ollama、vLLM、LM Studio 或 llama.cpp 提供服务的本地模型进行工具调用。工具调用通过 OpenAI 兼容 API 原生处理。
已验证的本地模型包括 Gemma 4、Llama 3.1、Qwen 3、Mistral 和 Phi-4。Ollama 在 ollama.com/search?c=tools 发布其支持工具的模型。
如果某个本地模型把工具调用以文本形式返回,而非 tool_calls 线路格式,框架会自动从文本输出中提取它们。这对思考型模型或配置不当的本地服务端有帮助。
对慢速的本地推理,在 AgentConfig 上使用 timeoutMs:
const localAgent = { name: 'local', model: 'llama3.1', provider: 'openai', baseURL: 'http://localhost:11434/v1', apiKey: 'ollama', tools: ['bash', 'file_read'], timeoutMs: 120_000,}在消费级硬件上高度量化的 MoE 模型,在默认采样下可能陷入重复循环或臆造工具调用 schema。AgentConfig 暴露了 topK、minP、frequencyPenalty、presencePenalty、parallelToolCalls 和 extraBody,用于服务端专属的参数,如 vLLM 的 repetition_penalty。完整配置见 providers/local-quantized。
- 模型不调用工具?确认它出现在 Ollama 的 Tools category 中。
- 正在使用 Ollama?用
ollama update更新到最新版本。 - 代理干扰本地服务端?使用
no_proxy=localhost。