汇总Cline、Continue、Cursor、Aider等12款AI编程工具的API端点配置写法,重点说明/v1路径规范和各家gotcha陷阱。
如果你是自托管模型、运行 API 网关、或者使用本地区的提供商,你一定会遇到这个问题:每个 AI 客户端要求输入的端点格式都不一样。
Cline 叫它 openAiBaseUrl,Continue 叫它 apiBase,Aider 从环境变量读取 OPENAI_API_BASE,Cursor 把这个选项藏在开关后面,SillyTavern 只有选对了聊天补全源之后才显示自定义端点字段。
于是你去 google"如何在 Cline 中设置 base url",然后"如何在 Continue 中设置 base url"。三个月后你忘了,再来一遍。
这就是我一直想要的那份速查表。12 个客户端,加上那些浪费我最多时间的坑。
如果一个端点实现了至少两条路由,它就是 OpenAI 兼容的:
POST /v1/chat/completions
GET /v1/models
门槛就这么高。两条都能用,列表里几乎所有客户端都能与之通信。
/v1?OpenAI SDK 的约定是 base_url 包含它,SDK 会自己补上剩余部分:
base_url = "https://api.example.com/v1"
→ 请求发送到 https://api.example.com/v1/chat/completions
大多数客户端都遵循这个约定。Cursor 是例外——它自己追加路径,所以输入什么取决于提供商怎么文档化的。
经验法则:不确定的话就加上 /v1。如果得到 404,再去掉它。
在操作任何客户端之前先测试端点:
curl https://api.example.com/v1/models \
-H "Authorization: Bearer $YOUR_KEY"
API: Chat Completion → Chat Completion Source: Custom (OpenAI-compatible)。自定义端点字段只有在选择该源之后才会出现。API 密钥字段藏在开关后面。
Settings → Model Providers → Add Provider → type OpenAI。然后用"Manage Models"手动添加模型 id,它不会自动发现。
Settings → Providers → Add Provider,然后手动添加模型 id。
Cursor Settings → Models → enable "OpenAI API Key" → enable "Override OpenAI Base URL"。记住 Cursor 自己追加路径。
三个键在 VS Code settings.json 里:
{
"cline.apiProvider": "openai",
"cline.openAiBaseUrl": "https://api.example.com/v1",
"cline.openAiApiKey": "sk-...",
"cline.openAiModelId": "your-model"
}
~/.continue/config.json:
{
"models": [
{
"title": "My Endpoint",
"provider": "openai",
"model": "your-model",
"apiBase": "https://api.example.com/v1",
"apiKey": "sk-..."
}
]
}
读取标准环境变量。在项目根目录的 .env 中放这个:
OPENAI_API_BASE=https://api.example.com/v1
OPENAI_API_KEY=sk-...
然后这样运行:
aider --model openai/your-model
config.yaml:
model_list:
- model_name: my-endpoint
litellm_params:
model: openai/your-model
api_base: "https://api.example.com/v1"
api_key: "sk-..."
librechat.yaml 中的自定义端点块。
容器启动时的环境变量,或 Admin Settings → Connections。
Python:
from openai import OpenAI
client = OpenAI(
base_url="https://api.example.com/v1",
api_key="sk-...",
)
JavaScript:
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.example.com/v1',
apiKey: 'sk-...',
});
这五个浪费了我最多时间。
1. /v1 后缀不一致。以上已覆盖。默认加上,只有收到 404 才去掉。
2. 有些客户端从 /v1/models 填充模型下拉框,有些不。如果你的端点没实现那条路由,或返回空列表,下拉框就空着,你得手动输入模型 id。Cline、Continue 和 Cherry Studio 都支持手动输入。有些客户端不支持,那些就根本用不了。
3. 用流式输出来测试。大多数客户端默认流式响应。一个端点可能正确实现了 /v1/chat/completions 但没有正确处理 stream: true——这种情况下 curl 返回正常响应而客户端直接卡住。先测试流式输出再判断端点坏了。
4. 上下文长度是在客户端猜测的。客户端根据模型名推断上下文窗口。如果用自定义名称提供模型,客户端可能会误认为 4k 并悄悄截断你的提示。大多数客户端允许在模型配置中覆盖这个值——一定要做。
5. SillyTavern 隐藏的 API 密钥字段。它存在,只是折叠起来直到你展开它。人们经常找不到它,然后花一个小时调试 401。
我厌倦了逐个编写这些配置,所以建了一个小生成器:llm-endpoint-setup。
它来自我运行的 OpenAI 兼容网关——haotogen——我本来就需要针对每个客户端进行测试。
你只需输入一次 base URL、key 和模型 id。它会为上述每个客户端生成确切的文件或点击路径。有一个完全在浏览器中运行的网页版本(key 永远不会离开页面)、一个 CLI 和一个可导入的库:
npx llm-endpoint-setup --base-url https://api.example.com/v1 --model your-model --client cline
MIT 许可,如果你的客户端不在列表里,添加一个大约需要 15 行代码。
模式永远不会变:一个 base URL、一个 key 和一个模型 id。唯一不同的是每个客户端想要它们放在哪里以及怎么命名。
先检查 /v1/models。默认包含 /v1,除非有理由不这样做。打开流式输出进行测试。其他一切只是找到正确的输入框。