任意客户端的通用配置法
支持自定义 API 地址的客户端,接法都是同一套:填地址、填 Key、填模型名。难的从来不是这三步,而是每个客户端把它们叫成不同的名字、放在不同的地方。这一页把这些说法对齐。
三个值,填完就通
| 要填的 | 填什么 | 常见的坑 |
|---|---|---|
| API 地址 | https://api.9coding.com | 结尾不要斜杠、不要带 /v1——客户端会自己接路径 |
| API Key | 控制台创建,sk-9c- 开头 | 复制时容易带上结尾换行或空格 |
| 模型名 | 从 /v1/models 列表里原样复制 | 手打的模型名大小写和连字符差一个字符就不认 |
各家客户端管这三个值叫什么
同一件事,不同客户端有不同说法。在设置里看到下面任意一个词,填的就是它。
| 你要找的 | 可能显示为 |
|---|---|
| API 地址 | Base URL · API 地址 · API Host · 接口地址 · 自定义端点 · Endpoint · API Proxy |
| API Key | API Key · 密钥 · 令牌 · Token · Access Key |
| 协议类型 | OpenAI 兼容 · OpenAI Compatible · Custom · 自定义 Provider |
选哪种协议?绝大多数客户端选 OpenAI 兼容那一项。只有 Claude Code 这类 Anthropic 原生客户端走 Anthropic 协议——它有专门一页。
命令行工具
命令行工具基本都读环境变量。OpenAI 兼容的这么设:
~/.zshrc 或 ~/.bashrc
export OPENAI_BASE_URL="https://api.9coding.com/v1"
export OPENAI_API_KEY="sk-9c-你的Key"
注意这里要带
/v1。OpenAI 系的 SDK 与 CLI 约定 OPENAI_BASE_URL 指向到 /v1 这一层;而 Anthropic 系的 ANTHROPIC_BASE_URL 只到域名。这是最容易搞混的一处——填错的表现通常是 404,有时是 401。改完重开终端,或 source ~/.zshrc。绝大多数命令行工具只在启动时读一次环境变量。
编辑器插件
Cline、Roo Code、Continue 这类插件在自己的设置面板里配,不读全局环境变量。步骤是一样的:
- Provider 选 OpenAI Compatible(不要选 OpenAI 官方那项,那一项通常锁死了地址)
- Base URL 填
https://api.9coding.com/v1 - API Key 填你的
sk-9c-Key - 模型名从下拉里选;如果下拉是空的,说明地址或 Key 没通——先用下面那条 curl 验证
桌面与网页客户端
Cherry Studio、ChatBox、NextChat、LobeChat、Open WebUI 这类图形客户端,都在「设置 → 模型服务 / Providers」里加一个自定义服务商:
- 新增一个 Provider,类型选 OpenAI 兼容
- API 地址填
https://api.9coding.com——这类客户端多数会自己补/v1,如果连不上,再试试带/v1的版本 - 粘贴 Key,点「获取模型列表」或手动填模型名
- 回到对话界面,在模型选择器里选中刚加的那个
加完了但对话里选不到模型?多数客户端要求你手动勾选启用哪些模型,拉到列表后还得打勾才会出现在选择器里。
自己写代码
OpenAI SDK 的完整写法见一行迁移那页。Anthropic SDK 这么改:
Python
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.9coding.com",
auth_token="sk-9c-你的Key",
)
Anthropic SDK 用 auth_token(发 Authorization: Bearer)而不是 api_key(发 x-api-key)。这两个搞混是 401 最常见的原因。
验证:一条命令确认是不是通了
terminal
curl -s -w '\n%{http_code}\n' https://api.9coding.com/v1/models \
-H "Authorization: Bearer sk-9c-你的Key"
先跑这条再去调客户端。它把「是我们的问题」和「是客户端配置的问题」一次分开——省下的时间比任何一步都多。
还是不行
- 报错了 → 按报错原文对号入座,八个常见报错各有独立页
- 通了但想知道花了多少 → 用量与余额怎么查
- 提问题时带上报错响应里的
request id(形如(request id: 2026...)),加上时间和模型名,那一次调用就能被查出来