配置自定义 API BaseURL

很多开发者使用 OneAPI、NewAPI 等中转分发平台来管理多个 AI 模型的 API Key,或者使用企业内部部署的 LLM 服务。这些服务通常提供与 OpenAI 兼容的接口,但需要自定义 API 的 baseURL。

本文将介绍如何在 OpenCode 中配置自定义 baseURL,以解决 Issue #8122↗ 中提到的问题。

# 为什么要自定义 BaseURL?#

  • 统一管理:通过中转平台(如 OneAPI)管理所有模型的 Key,OpenCode 中只需配置一个端点。
  • 成本控制:使用按量付费的中转服务,通常比直接绑定信用卡更灵活。
  • 访问加速:使用国内中转节点加速 API 访问,解决网络连接问题。
  • 私有部署:连接到本地或内网部署的 vLLM、Ollama 等兼容 OpenAI 接口的服务。

# 配置步骤#

OpenCode 的配置文件通常位于 ~/.config/opencode/opencode.json(全局)或项目根目录下的 opencode.json(项目级)。

你需要使用 provider 字段来定义一个新的提供商,或者覆盖现有的提供商配置。

## 方法一:覆盖现有提供商(推荐)#

如果你只是想把 OpenCode 默认的 openai 提供商指向你的中转地址:

json
1{
2  "$schema": "https://opencode.ai/config.json",
3  "provider": {
4    "openai": {
5      "options": {
6        "baseURL": "https://api.your-custom-domain.com/v1",
7        "apiKey": "sk-your-oneapi-key"
8      }
9    }
10  }
11}

## 方法二:添加自定义提供商#

如果你想保留官方 OpenAI 配置,同时添加自定义渠道,可以根据接口兼容性选择以下配置。

1. OpenAI 兼容接口(OneAPI/NewAPI 等)

json
1{
2  "$schema": "https://opencode.ai/config.json",
3  "provider": {
4    "myapi": {
5      "npm": "@ai-sdk/openai-compatible",
6      "name": "My Custom API",
7      "options": {
8        "baseURL": "https://api.your-custom-domain.com/v1",
9        "apiKey": "sk-your-oneapi-key"
10      },
11      "models": {
12        "gpt-4o": {
13          "name": "GPT-4o (OneAPI)"
14        },
15        "claude-3-5-sonnet-20240620": {
16          "name": "Claude 3.5 Sonnet"
17        }
18      }
19    }
20  }
21}

2. Claude 兼容接口

如果你使用的是原生支持 Anthropic 协议的接口:

json
1{
2  "$schema": "https://opencode.ai/config.json",
3  "provider": {
4    "myclaude": {
5      "npm": "@ai-sdk/anthropic",
6      "name": "My Claude API",
7      "options": {
8        "baseURL": "https://api.your-custom-domain.com/v1",
9        "apiKey": "sk-ant-your-key"
10      },
11      "models": {
12        "claude-3-5-sonnet-20240620": {
13          "name": "Claude 3.5 Sonnet"
14        }
15      }
16    }
17  }
18}

配置完成后,运行 opencode,你就可以在模型列表中选择 My Custom API 下的模型了。

# 参数说明#

  • npm: 对于 OpenAI 兼容接口设置为 @ai-sdk/openai-compatible;对于 Claude 兼容接口设置为 @ai-sdk/anthropic。
  • baseURL: 你的中转 API 地址。注意: 通常需要包含 /v1 后缀(取决于你的中转服务实现,OneAPI 通常需要)。
  • apiKey: 你的中转平台令牌。也可以通过环境变量(如 {env:MY_API_KEY})设置以保密。
  • models: 你想在该提供商下使用的模型列表。Key 是模型 ID(传给 API 的),Value 是配置对象。

# 相关阅读#