OpenCode 多提供商配置实战教程:连接 OpenAI、Ollama 等 AI 模型
📚 分类: 开发者工具 / AI 集成 ⏱️ 预计耗时: 30-60 分钟(取决于你选择的提供商数量) 🎯 难度: 入门 🔧 环境要求: 已安装 OpenCode TUI 或 CLI 🌐 原文来源: OpenCode 官方文档
你将学到什么
完成本教程后,你将能够:
- [ ] 理解 OpenCode 的提供商(Provider)概念和认证机制
- [ ] 通过
/connect命令为 5 种不同类型的提供商配置 API 密钥 - [ ] 通过
opencode.json配置文件自定义提供商(包括 Base URL、本地模型和自定义请求头) - [ ] 独立解决常见的提供商配置错误
最终效果
你将掌握在 OpenCode 中连接并使用各种 AI 模型的通用技能。无论是云端的大模型(如 OpenAI、Anthropic),还是本地运行的模型(如 Ollama、LM Studio),你都能在 OpenCode 的模型选择列表中看到它们,并像使用内置模型一样流畅地进行对话和代码生成。
前置准备
在开始前,请确认你的环境满足以下条件:
| 检查项 | 要求 | 验证命令 |
|---|---|---|
| OpenCode | 已安装最新版 | opencode --version |
| 网络连接 | 能够访问外网 | ping google.com |
💡 提示:如果你还没有安装 OpenCode,请先访问 OpenCode 官方文档 完成安装。
第 1 步:理解提供商的核心概念
🎯 目标:理解 OpenCode 中“提供商”是什么,以及如何管理其凭据。
在 OpenCode 中,一个“提供商”(Provider)代表一个你可以连接的 AI 模型服务。例如,OpenAI、Anthropic 或你本地运行的 Ollama 都是提供商。
要使用一个提供商,你需要做两件事:
- 添加凭据:使用
/connect命令告诉 OpenCode 你的 API 密钥。 - (可选)配置细节:通过
opencode.json文件,你可以自定义提供商的行为,比如修改 API 地址、指定模型等。
第 2 步:为云端提供商添加 API 密钥(以 OpenAI 为例)
🎯 目标:通过 /connect 命令,为 OpenAI 添加 API 密钥,并验证连接成功。
这是最常用的方式,适用于大多数云端服务。我们以 OpenAI 为例,但流程同样适用于 Anthropic、DeepSeek、Groq 等数十家提供商。
📝 操作:
启动 OpenCode TUI:
bash$ opencode执行
/connect命令:在 OpenCode 的命令输入框中,输入/connect并回车。bash# 在 OpenCode 中输入 /connect选择提供商:终端会显示一个提供商列表。使用方向键上下滚动,找到
OpenAI,然后按回车键选中。选择认证方式:你会看到几个选项:
text┌ Select auth method│ │ ChatGPT Plus/Pro│ │ Manually enter API Key│ └- ChatGPT Plus/Pro:如果你有 ChatGPT 订阅,选择此项,浏览器会自动打开引导你完成授权。
- Manually enter API Key:如果你已经有 OpenAI 的 API 密钥,选择此项。
输入 API 密钥:选择“Manually enter API Key”后,终端会提示你粘贴 API 密钥。
text┌ API key│ │ sk-... │ └ enter粘贴你的密钥(以
sk-开头)并回车。
✅ 验证: 操作成功后,OpenCode 不会有特别提示,但凭据已经存储。你可以通过以下方式验证:
- 输入
/models命令。 - 你应该能看到一个模型列表,例如
gpt-4o、gpt-4-turbo等。 - 选择一个模型,开始一个新对话,如果能正常发送消息并收到回复,就说明配置成功了。
第 3 步:为需要环境变量的提供商配置(以 Amazon Bedrock 为例)
🎯 目标:为 Amazon Bedrock 配置 AWS 认证,使其能在 OpenCode 中工作。
有些提供商(如 Amazon Bedrock、Google Vertex AI)不直接使用简单的 API 密钥,而是需要更复杂的认证方式(如 AWS 的 Access Key 和 Secret Key)。你需要通过环境变量或配置文件来提供这些信息。
📝 操作:
准备 AWS 凭据:你需要拥有一个 AWS 账户,并创建一个 IAM 用户,该用户需要有调用 Bedrock 模型的权限。记下该用户的
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。设置环境变量:在运行
opencode命令之前,在终端中设置环境变量。这是最快速的方法。bash# 在终端中,先设置环境变量,再启动 opencode $ export AWS_ACCESS_KEY_ID=你的AccessKeyID $ export AWS_SECRET_ACCESS_KEY=你的SecretAccessKey $ export AWS_REGION=us-east-1 $ opencode💡 提示:为了避免每次都输入,你可以将
export命令添加到你的 shell 配置文件中(如~/.bash_profile或~/.zshrc)。(推荐)使用配置文件:对于项目级别的持久化配置,更推荐在
opencode.json中设置。在项目根目录创建或编辑opencode.json文件:json{ "$schema": "https://opencode.ai/config.json", "provider": { "amazon-bedrock": { "options": { "region": "us-east-1", "profile": "my-aws-profile" // 如果你使用 AWS CLI 的命名配置文件 } } } }🤔 为什么要这样做?:
opencode.json文件可以跟随你的项目,方便团队共享配置,也避免了在系统环境中设置全局变量。
✅ 验证: 在 OpenCode 中执行 /models 命令。如果配置正确,你应该能看到 Amazon Bedrock 提供的模型列表(如 anthropic.claude-sonnet-4 等)。选择一个模型,开始对话进行测试。
第 4 步:为本地模型提供商配置(以 Ollama 为例)
🎯 目标:通过 opencode.json 配置文件,将本地运行的 Ollama 服务添加为自定义提供商。
如果你运行了本地模型(如通过 Ollama、LM Studio、llama.cpp),你可以通过“自定义提供商”的方式让 OpenCode 连接它们。
📝 操作:
确保本地服务已启动:首先,确保你的 Ollama 服务正在运行,并且你已经拉取了一个模型(例如
llama2)。bash$ ollama serve # 在另一个终端窗口 $ ollama pull llama2编辑
opencode.json配置文件:在项目根目录创建或编辑opencode.json文件,添加以下内容:json{ "$schema": "https://opencode.ai/config.json", "provider": { "ollama": { // 自定义提供商ID,可以任意取名,如 "my-local-llm" "npm": "@ai-sdk/openai-compatible", // 使用这个包连接任何兼容 OpenAI 的 API "name": "Ollama (Local)", // 在 OpenCode UI 中显示的名称 "options": { "baseURL": "http://localhost:11434/v1" // Ollama 的 API 端点 }, "models": { "llama2": { // 模型ID,必须与 Ollama 中的模型名一致 "name": "Llama 2 (Local)" // 在模型选择列表中显示的名称 } } } } }🤔 为什么要这样做?:Ollama 提供的 API 与 OpenAI 的 API 格式兼容,因此我们使用
@ai-sdk/openai-compatible包来桥接。baseURL告诉 OpenCode 去哪里找你的本地服务。重启 OpenCode:退出 OpenCode 并重新启动,以使配置文件生效。
✅ 验证: 在 OpenCode 中执行 /models 命令。你应该能在列表中找到名为 Llama 2 (Local) 的模型。选择它并开始对话。如果一切正常,你会收到来自你本地模型的回复。
⚠️ 常见错误: 如果 OpenCode 无法连接,请检查:
- Ollama 服务是否正在运行?
ollama ps baseURL的端口(11434)是否正确?models下的模型 ID(llama2)是否与你用ollama list看到的名称完全一致?
第 5 步:为兼容 OpenAI 的第三方提供商配置(以自定义提供商为例)
🎯 目标:通过“自定义提供商”功能,连接 /connect 命令列表中未列出的任何 OpenAI 兼容 API 服务。
很多新兴的 AI 服务提供商都提供与 OpenAI 兼容的 API。你可以通过“自定义提供商”功能来集成它们。
📝 操作:
添加凭据:在 OpenCode 中执行
/connect命令。在提供商列表中,向下滚动到最底部,选择Other。bash$ /connect # ... 滚动到最底部 ┌ Add credential │ ◆ Select provider │ ... │ ● Other └输入提供商 ID:系统会要求你输入一个唯一的 ID,用于在配置文件中引用它。例如,输入
my-custom-ai。bash$ /connect ┌ Add credential │ ◇ Enter provider id │ my-custom-ai └输入 API 密钥:粘贴该服务提供商给你的 API 密钥。
bash┌ Add credential │ ◇ Enter your API key │ sk-... └编辑
opencode.json配置文件:现在,你需要告诉 OpenCode 这个my-custom-ai提供商的具体信息。在opencode.json中添加:json{ "$schema": "https://opencode.ai/config.json", "provider": { "my-custom-ai": { // 必须与第2步输入的 ID 一致 "npm": "@ai-sdk/openai-compatible", // 对于兼容 OpenAI 的 API 使用此包 "name": "My Custom AI Service", // UI 中显示的名称 "options": { "baseURL": "https://api.my-custom-service.com/v1" // 替换为实际的 API 地址 }, "models": { "my-cool-model": { // 模型ID,从服务商文档获取 "name": "My Cool Model Display Name" } } } } }
✅ 验证: 重启 OpenCode 并执行 /models 命令。你应该能看到 My Cool Model Display Name 出现在列表中。选择它并开始对话,测试连接是否成功。
进阶技巧(可选)
掌握基础后,你可以尝试:
自定义请求头:一些服务(如 Helicone)需要特定的请求头来实现缓存、用户跟踪等功能。你可以在
options.headers中设置。json"options": { "baseURL": "https://ai-gateway.helicone.ai", "headers": { "Helicone-Cache-Enabled": "true", "Helicone-User-Id": "my-opencode-user" } }设置模型 Token 限制:为本地模型或自定义模型明确设置上下文窗口和输出长度限制,帮助 OpenCode 更好地管理上下文。
json"models": { "my-model": { "name": "My Model", "limit": { "context": 128000, "output": 65536 } } }
常见问题 (FAQ)
Q1: 执行 /models 后看不到我配置的模型?A: 请检查以下几点:
- 配置文件路径:确认
opencode.json文件在你启动 OpenCode 的当前工作目录下。 - JSON 格式:确保
opencode.json是有效的 JSON 格式,没有多余的逗号或拼写错误。可以使用在线 JSON 校验工具检查。 - 提供商 ID 一致:对于自定义提供商,确保
/connect时输入的 ID 与opencode.json中provider下的 key 完全一致。
Q2: 报错 401 Unauthorized 或认证失败?A: 这通常意味着 API 密钥无效或未正确配置。
- 检查凭据:运行
opencode auth list查看已存储的凭据列表。确认你的提供商在列表中。 - 重新输入:执行
/connect命令,选择你的提供商,重新输入正确的 API 密钥。 - 环境变量:对于依赖环境变量的提供商(如 Bedrock),确认变量名和值都已正确设置并导出。
Q3: 配置了本地模型(如 Ollama),但 OpenCode 连接不上?A:
- 服务未启动:确保你的本地模型服务(如
ollama serve)正在运行。 - 端口错误:检查
opencode.json中的baseURL端口号是否与你的本地服务一致。Ollama 默认是11434,LM Studio 默认是1234。 - 模型 ID 不匹配:
models下的 key(如llama2)必须与你本地服务中拉取的模型名称完全一致(包括大小写)。
总结
恭喜你完成了本教程!🎉
回顾一下我们今天学到的核心内容:
- 核心概念:提供商是连接 AI 模型的桥梁,通过
/connect管理凭据,通过opencode.json进行详细配置。 - 三种配置模式:
- 简单模式(如 OpenAI):只用
/connect输入 API 密钥即可。 - 环境变量模式(如 Bedrock):通过环境变量或
opencode.json提供复杂的认证信息。 - 自定义模式(如 Ollama):通过
opencode.json手动定义所有连接参数。
- 简单模式(如 OpenAI):只用
- 通用性:任何兼容 OpenAI API 的服务,都可以通过“自定义提供商”的方式集成到 OpenCode 中。