服务商是配置方案的上游定义,一条服务商记录对应一个可用的 API 端点:API 地址、协议类型,以及是否原生支持 OpenAI Responses 接口。a4api 启动时会自动写入 7 个常用服务商模板并保持同步,也支持添加任意自定义端点。本文章介绍服务商的数据模型、协议类型的差异、预置模板清单与同步机制、自定义服务商的管理方式,以及服务商与应用目标的搭配规则。
1. 服务商与协议类型
每个配置方案都必须挂在一个服务商上;服务商本身由以下字段构成:
| 字段 | 说明 |
|---|---|
| 名称 | 全局唯一,预置模板遵循「服务商-协议」命名约定(如 DeepSeek-openai) |
| API 地址 | 上游 Base URL,如 https://api.deepseek.com/ |
| 协议类型 | anthropic 或 openai,决定切换时如何生成目标配置 |
| 原生 Responses | 仅 OpenAI 兼容服务商有意义:上游原生提供 /responses 接口时勾选,Codex 可直连上游 |
| 自定义标记 | 预置模板为否,用户手工添加的为是 |
两种协议类型的差异决定了整条切换链路的形态:
| 协议类型 | 典型上游 | Claude Code 如何使用 | Codex 如何使用 | dsh 如何使用 |
|---|---|---|---|---|
anthropic |
DeepSeek、智谱的 Anthropic 端点 | 直连上游 | 不支持 | 不支持 |
openai + 原生 Responses |
DeepSeek 官方 | 经本地翻译代理 | 直连上游 /responses |
经代理透传 |
openai(非原生) |
智谱 v4、OpenRouter 等 | 经本地翻译代理 | 经本地翻译代理转发 | 经代理透传 |
本地翻译代理的工作机制详见本地翻译代理;三端各自的写入细节见ClaudeCode目标切换、Codex目标切换与dsh目标切换。
2. 预置服务商模板
首次启动时 a4api 自动写入 7 个预置模板,开箱即用:
| 模板名称 | API 地址 | 协议 | 原生 Responses |
|---|---|---|---|
| DeepSeek-anthropic | https://api.deepseek.com/anthropic |
Anthropic | — |
| 智谱-anthropic | https://open.bigmodel.cn/api/anthropic |
Anthropic | — |
| DeepSeek-openai | https://api.deepseek.com/ |
OpenAI | 是(Codex 可直连) |
| 智谱-openai | https://open.bigmodel.cn/api/paas/v4 |
OpenAI | — |
| OpenRouter-openai | https://openrouter.ai/api/v1 |
OpenAI | — |
| OpenCodeGo-openai | https://opencode.ai/zen/go/v1 |
OpenAI | — |
| 本地llmstudio-openai | http://127.0.0.1:1234/v1 |
OpenAI | — |
关于这份清单有几点值得注意:
- 同一服务商可能同时提供两套接口,因此预置两条记录(如
DeepSeek-anthropic与DeepSeek-openai),分别服务 Claude Code 直连场景与 Codex/dsh 场景。 - OpenRouter 是 OpenAI 兼容聚合网关,配置方案中填入 OpenRouter 的 API Key 即可路由到其上架的各家模型。
- 本地 LLM Studio 指向本机回环地址,适合搭配 LM Studio 等 local server 做零成本试验。
- 原生 Responses 标记目前仅 DeepSeek 官方满足(其 Responses 接口仅
deepseek-v4-flash模型可用)。勾选后 Codex 直接连接上游/responses,无需本地翻译代理参与。
2.1 模板的自动播种与同步
预置模板在每次启动时幂等补种:缺失的按模板定义新增;已有的预置行若与模板定义不一致,会按模板同步更新 API 地址、协议类型、原生 Responses 三个托管字段——例如某天 DeepSeek 的 Anthropic 端点换了地址,升级新版 a4api 后预置行会自动跟上。用户自定义的服务商永远不做任何改动。
预置模板} B -->|数据库缺失| C[新增该模板] B -->|已存在且
非自定义| D[同步托管字段
地址/协议/Responses] B -->|同名但为
用户自定义| E[跳过不改动] C --> F[完成播种
进入主界面] D --> F E --> F style A fill:#e8f4f8,stroke:#1a6b8a,stroke-width:2px style B fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style C fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style D fill:#d6eaf8,stroke:#1a6b8a,stroke-width:2px style E fill:#fdebd0,stroke:#b7950b,stroke-width:2px style F fill:#d5f5e3,stroke:#27ae60,stroke-width:2px
3. 新增与管理自定义服务商
在「供应商管理」页签中可以增删改服务商:
- 点击「新增供应商」,填写名称、API 地址;
- 选择协议类型:Anthropic 原生或 OpenAI 兼容;
- 选择「OpenAI 兼容」时界面自动浮现「原生 Responses」开关,仅当上游确实提供
/responses接口时才应勾选; - 保存后即可在新建配置方案时选用。
服务商名称全局唯一,重名会被拒绝并提示「服务商 XX 已存在」。选择服务商时支持按名称关键字实时搜索,输入 openrouter、deep 等片段即可快速定位。
删除保护:若服务商之下还挂着配置方案,删除会被拒绝并提示「该服务商下还有 N 个配置方案,请先删除这些配置方案」。先删除或改绑相关配置方案后才能删除服务商,从根源上杜绝孤儿数据。
4. 服务商与应用目标的搭配
把协议类型与三个应用目标放在一张表里,就是选择服务商时的完整决策依据:
| 目标 \ 服务商 | Anthropic 类型 | OpenAI 兼容(非原生) | OpenAI 兼容(原生 Responses) |
|---|---|---|---|
| Claude Code | 直连上游 | 经本地翻译代理 | 经本地翻译代理 |
| Codex | 不允许 | 经本地翻译代理转发 | 直连上游 /responses |
| dsh | 不允许 | 经代理透传 | 经代理透传 |
搭配不当不会产生静默错误:勾选了 Codex 或 dsh 却选择了 Anthropic 类型服务商时,切换会在写入前直接报错(见配置方案与一键切换第 3 节)。
5. 常见问题
问:预置模板可以删除或修改吗?
答:可以增删改,界面上与自定义服务商一视同仁。但要注意两点:其一,删除的预置模板会在下次启动时被重新播种回来;其二,保留的预置行的托管字段(地址、协议、原生 Responses)以模板定义为准,手工改动可能在下次启动时被同步覆盖。想完全自主管理的端点,建议以自定义服务商方式另录一条。
问:为什么我的 DeepSeek 配置给 Codex 用时不启动本地代理?
答:因为你选的是 DeepSeek-openai 模板,它带有原生 Responses 标记,Codex 会直连 https://api.deepseek.com/ 的 /responses 接口,这是当前唯一默认直连的上游。其余 OpenAI 兼容服务商(智谱、OpenRouter 等)因未提供公开的 Responses 接口,一律经本地翻译代理把 Responses 翻译为 Chat Completions 后转发。
问:本地 LLM Studio 模板连不上怎么办?
答:先确认 LM Studio 已在本机 1234 端口启动了 local server 并加载了模型;该模板地址是 http://127.0.0.1:1234/v1,端口或路径不同的话,编辑服务商地址或自建一条即可。本地推理不消耗 API 费用,适合验证 a4api 各链路是否通畅。
举手提问