# 自定义 AI 供应商配置 Openclaw 支持多种 AI 供应商,包括内置供应商和自定义供应商。本文档介绍如何配置自定义 AI 供应商和模型。 --- ## 快速开始 ### 配置方式 配置文件位于 `~/.openclaw/openclaw.json`。 **最简配置示例**(以硅基流动为例): ```json5 { // 环境变量配置 API Key env: { SILICONFLOW_API_KEY: "sk-xxx..." }, // 设置默认模型 agents: { defaults: { model: { primary: "siliconflow/Qwen/Qwen2.5-72B-Instruct" } } }, // 配置自定义供应商 models: { providers: { siliconflow: { baseUrl: "https://api.siliconflow.cn/v1", apiKey: "${SILICONFLOW_API_KEY}", api: "openai-completions", models: [ { id: "Qwen/Qwen2.5-72B-Instruct", name: "通义千问 2.5 72B" } ] } } } } ``` --- ## API 协议支持 Openclaw 支持两种主流 API 协议: | 协议 | `api` 值 | 兼容服务 | |------|----------|----------| | OpenAI | `openai-completions` | 硅基流动、DeepSeek、Moonshot、Ollama、vLLM、LM Studio 等 | | Anthropic | `anthropic-messages` | Anthropic、AWS Bedrock Claude 等 | 大多数国内服务都兼容 OpenAI 协议,使用 `api: "openai-completions"` 即可。 --- ## 国内 AI 服务配置示例 ### 硅基流动 (SiliconFlow) 硅基流动提供多种开源模型的 API 服务。 ```json5 { env: { SILICONFLOW_API_KEY: "sk-xxx..." }, agents: { defaults: { model: { primary: "siliconflow/Qwen/Qwen2.5-72B-Instruct" } } }, models: { providers: { siliconflow: { baseUrl: "https://api.siliconflow.cn/v1", apiKey: "${SILICONFLOW_API_KEY}", api: "openai-completions", models: [ { id: "Qwen/Qwen2.5-72B-Instruct", name: "通义千问 2.5 72B" }, { id: "deepseek-ai/DeepSeek-V3", name: "DeepSeek V3" }, { id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1", reasoning: true } ] } } } } ``` ### DeepSeek DeepSeek 官方 API: ```json5 { env: { DEEPSEEK_API_KEY: "sk-xxx..." }, agents: { defaults: { model: { primary: "deepseek/deepseek-chat" } } }, models: { providers: { deepseek: { baseUrl: "https://api.deepseek.com/v1", apiKey: "${DEEPSEEK_API_KEY}", api: "openai-completions", models: [ { id: "deepseek-chat", name: "DeepSeek Chat" }, { id: "deepseek-reasoner", name: "DeepSeek R1", reasoning: true } ] } } } } ``` ### 月之暗面 (Moonshot / Kimi) ```json5 { env: { MOONSHOT_API_KEY: "sk-xxx..." }, agents: { defaults: { model: { primary: "moonshot/moonshot-v1-128k" } } }, models: { providers: { moonshot: { baseUrl: "https://api.moonshot.cn/v1", apiKey: "${MOONSHOT_API_KEY}", api: "openai-completions", models: [ { id: "moonshot-v1-8k", name: "Moonshot 8K" }, { id: "moonshot-v1-32k", name: "Moonshot 32K" }, { id: "moonshot-v1-128k", name: "Moonshot 128K" } ] } } } } ``` ### 智谱 AI (GLM) ```json5 { env: { ZHIPU_API_KEY: "xxx..." }, agents: { defaults: { model: { primary: "zhipu/glm-4-plus" } } }, models: { providers: { zhipu: { baseUrl: "https://open.bigmodel.cn/api/paas/v4", apiKey: "${ZHIPU_API_KEY}", api: "openai-completions", models: [ { id: "glm-4-plus", name: "GLM-4 Plus" }, { id: "glm-4-flash", name: "GLM-4 Flash" } ] } } } } ``` ### 通义千问 (阿里云) ```json5 { env: { DASHSCOPE_API_KEY: "sk-xxx..." }, agents: { defaults: { model: { primary: "dashscope/qwen-max" } } }, models: { providers: { dashscope: { baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1", apiKey: "${DASHSCOPE_API_KEY}", api: "openai-completions", models: [ { id: "qwen-max", name: "通义千问 Max" }, { id: "qwen-plus", name: "通义千问 Plus" }, { id: "qwen-turbo", name: "通义千问 Turbo" } ] } } } } ``` ### 百川 AI ```json5 { env: { BAICHUAN_API_KEY: "sk-xxx..." }, agents: { defaults: { model: { primary: "baichuan/Baichuan4" } } }, models: { providers: { baichuan: { baseUrl: "https://api.baichuan-ai.com/v1", apiKey: "${BAICHUAN_API_KEY}", api: "openai-completions", models: [ { id: "Baichuan4", name: "百川 4" }, { id: "Baichuan3-Turbo", name: "百川 3 Turbo" } ] } } } } ``` ### 火山引擎 (Volcengine / 豆包) 火山引擎提供字节跳动的 AI 模型服务(豆包等)。 ```json5 { env: { VOLCENGINE_API_KEY: "your-api-key..." }, agents: { defaults: { model: { primary: "volcengine/doubao-1-5-pro-32k-250115" } } }, models: { providers: { volcengine: { baseUrl: "https://ark.cn-beijing.volces.com/api/v3", apiKey: "${VOLCENGINE_API_KEY}", api: "openai-completions", models: [ { id: "doubao-1-5-pro-32k-250115", name: "豆包 1.5 Pro 32K" }, { id: "doubao-1-5-lite-32k-250115", name: "豆包 1.5 Lite 32K" } ] } } } } ``` **企业用户自定义 Header**:如果需要为请求添加自定义 Header(如标识调用来源),可通过环境变量配置: ```bash export MODEL_AGENT_CLIENT_REQ_ID="X-Custom-Header-Name" export MODEL_AGENT_CLIENT_REQ_VALUE="your-custom-value" ``` --- ## 本地模型配置 ### Ollama Ollama 是最简单的本地模型运行方式。Openclaw 可以自动发现 Ollama 中的模型。 **安装和使用:** ```bash # 1. 安装 Ollama # macOS: brew install ollama # Linux: curl -fsSL https://ollama.com/install.sh | sh # 2. 拉取模型 ollama pull llama3.3 ollama pull qwen2.5:32b # 3. 启动 Ollama 服务 ollama serve ``` **配置 Openclaw:** ```json5 { // 设置任意值启用 Ollama(Ollama 本身不需要真正的 key) env: { OLLAMA_API_KEY: "ollama-local" }, agents: { defaults: { model: { primary: "ollama/llama3.3" } } } } ``` Openclaw 会自动发现本地 Ollama 中支持工具调用的模型。 **手动配置(可选):** 如果 Ollama 运行在非默认端口或其他主机: ```json5 { models: { providers: { ollama: { baseUrl: "http://192.168.1.100:11434/v1", apiKey: "ollama-local", api: "openai-completions", models: [ { id: "llama3.3", name: "Llama 3.3" } ] } } } } ``` ### LM Studio LM Studio 提供 OpenAI 兼容的本地 API: ```json5 { agents: { defaults: { model: { primary: "lmstudio/local-model" } } }, models: { providers: { lmstudio: { baseUrl: "http://localhost:1234/v1", apiKey: "lm-studio", api: "openai-completions", models: [ { id: "local-model", name: "本地模型" } ] } } } } ``` ### vLLM vLLM 是高性能的本地推理服务器: ```json5 { models: { providers: { vllm: { baseUrl: "http://localhost:8000/v1", apiKey: "vllm-local", api: "openai-completions", models: [ { id: "Qwen/Qwen2.5-72B-Instruct", name: "Qwen 2.5 72B" } ] } } } } ``` --- ## 模型配置详解 ### 完整模型配置 ```json5 { models: { providers: { "my-provider": { baseUrl: "https://api.example.com/v1", apiKey: "${MY_API_KEY}", api: "openai-completions", // 或 "anthropic-messages" models: [ { id: "model-id", // 模型 ID(必填) name: "显示名称", // 显示名称(可选) reasoning: false, // 是否支持推理模式(可选) input: ["text"], // 输入类型(可选) contextWindow: 128000, // 上下文窗口大小(可选) maxTokens: 8192, // 最大输出 token(可选) cost: { // 成本配置(可选) input: 0, output: 0, cacheRead: 0, cacheWrite: 0 } } ] } } } } ``` ### 配置字段说明 | 字段 | 必填 | 说明 | 默认值 | |------|------|------|--------| | `baseUrl` | ✅ | API 端点地址 | - | | `apiKey` | ✅ | API 密钥,支持 `${ENV_VAR}` 引用 | - | | `api` | ✅ | API 协议类型 | - | | `models` | ✅ | 模型列表 | - | | `models[].id` | ✅ | 模型 ID(**不含 provider 前缀**) | - | | `models[].name` | ❌ | 显示名称 | 使用 id | | `models[].reasoning` | ❌ | 推理模式支持 | `false` | | `models[].contextWindow` | ❌ | 上下文窗口 | `200000` | | `models[].maxTokens` | ❌ | 最大输出 | `8192` | > ⚠️ **重要**:`models[].id` 字段只填写模型名称,**不要包含 provider 前缀**。 > > 例如,配置硅基流动的 MiniMax 模型: > - ✅ 正确:`"id": "Pro/MiniMaxAI/MiniMax-M2.1"` > - ❌ 错误:`"id": "siliconflow/Pro/MiniMaxAI/MiniMax-M2.1"` > > 系统会自动将 provider 名称和 model id 组合成完整引用(如 `siliconflow/Pro/MiniMaxAI/MiniMax-M2.1`),用于 `agents.defaults.model.primary` 等配置项。 --- ## CLI 命令 ### 查看模型 ```bash # 查看已配置的模型 openclaw-cn models list # 查看所有可用模型 openclaw-cn models list --all # 查看模型状态 openclaw-cn models status ``` ### 设置默认模型 ```bash # 设置主模型 openclaw-cn models set # 设置图像模型 openclaw-cn models set-image ``` ### 管理回退模型 ```bash # 添加回退模型 openclaw-cn models fallbacks add # 查看回退列表 openclaw-cn models fallbacks list # 清空回退 openclaw-cn models fallbacks clear ``` ### 配置命令 ```bash # 直接设置供应商配置 openclaw-cn config set models.providers.siliconflow.baseUrl "https://api.siliconflow.cn/v1" openclaw-cn config set models.providers.siliconflow.apiKey "sk-xxx" ``` --- ## 在聊天中切换模型 在 Telegram/WhatsApp 等渠道中,可以使用命令切换模型: ``` /model # 查看当前模型 /model list # 列出可用模型 /model 1 # 选择第 1 个模型 /model deepseek/deepseek-chat # 切换到指定模型 /model status # 查看详细状态 ``` --- ## 故障排除 ### API 连接失败 1. 检查 `baseUrl` 是否正确(注意是否需要 `/v1` 后缀) 2. 检查 API Key 是否有效 3. 检查网络是否可访问 API 端点 ```bash # 测试 API 连接 curl -H "Authorization: Bearer $API_KEY" https://api.example.com/v1/models ``` ### 模型不在列表中 确保在 `models` 数组中正确配置了模型: ```json5 models: [ { id: "正确的模型ID", name: "显示名称" } // id 不要包含 provider 前缀 ] ``` ### 模型调用报错 1. 检查模型 ID 是否正确 2. 确认 API 协议类型(`openai-completions` 或 `anthropic-messages`) 3. 查看日志:`openclaw-cn logs --follow` --- ## 相关文档 - [模型选择](/concepts/models) - 模型选择和回退机制 - [模型供应商](/concepts/model-providers) - 供应商详细配置 - [网关配置](/gateway/configuration) - 完整配置参考 - [Ollama](/providers/ollama) - Ollama 详细配置