OpenAI 兼容 API 是接受与 OpenAI API 相同请求和响应格式的端点,官方 OpenAI SDK 更换 base URL 和密钥后就能调用它。本文整理 OpenAI 平台本身已经能管住什么、网关从哪一刻开始划算、实际要改的代码,以及同一个工作负载在六个模型上的花费。
简短回答
只有一个团队、只用 OpenAI 模型,而且 OpenAI 的项目上限已经满足你的预算规则,就直接用 OpenAI API。
出现下列任一情况,就该加一层 OpenAI 兼容网关:
- 第二家供应商进来了,例如写代码用 Claude、大批量分类用 Gemini Flash,而财务希望只有一张账单、一套上限。
- 多个团队共用一笔 AI 预算,每个团队都需要跨供应商的上限和模型清单。
- 想用自己的提示词对比模型,又不想接入三套 SDK。
OpenAI 平台已经提供的管控
单一供应商时,过去需要网关才能实现的管控,OpenAI 大多已经自己做了:
- 项目可以把测试和生产环境分开,各自有密钥、速率上限和消费上限(生产环境最佳实践)。
- 两种消费管控:消费提醒只发通知,流量照常;硬性消费上限会让受影响的请求返回 429(速率限制说明)。
- 项目级的“Model usage”设置,限制项目可以调用哪些模型(管理项目)。
- 使用量等级(usage tier)会在累计付款达到一定金额前限制每月消费,从 Tier 1 每月 100 美元到 Tier 5 每月 200,000 美元。
如果流量全部是 OpenAI,先把这些功能用好。
直接接入的局限
上面这些上限只覆盖 OpenAI 的模型。团队一接入 Claude,Anthropic 控制台就有另一套工作区、消费上限和密钥(Anthropic 工作区)。再加上 Gemini,就是第三个控制台。实际情况会变成:
- 有人离职时,要在三个地方签发和吊销密钥。
- 三套互相看不到的预算,“客服机器人每月跨所有供应商最多花 3,000 美元”这条规则没有地方能执行。
- 月底收到三张格式不同的账单。
- 代码分散在 OpenAI、Anthropic、Google 三套 SDK 里。
网关在它们前面放一套密钥、上限和日志。
代码要改哪里
用 ATP Token 时 OpenAI SDK 照常使用,只改三个值(OpenAI SDK 说明、从 OpenAI 迁移):
from openai import OpenAI
# 原来:client = OpenAI(api_key="sk-...")
client = OpenAI(base_url="https://api.atptoken.ai/v1", api_key="atp-...")
for model in ["gpt-5.4", "claude-sonnet-4-6", "gemini-3-5-flash"]:
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": "请给这张工单分类:“退款十天还没到账”"}],
max_tokens=200,
)
print(model, r.choices[0].message.content, r.usage.total_tokens)
不变的部分:Chat Completions 的请求内容、响应内容、stream=True 的流式输出(OpenAI SSE),以及工具定义。
会变的部分:
- 模型 id 以
GET /v1/models返回的为准(模型查询)。OpenAI 模型沿用gpt-5.4这类熟悉的名称;其他模型用claude-sonnet-4-6、deepseek-v4-flash这类 id。 - 不在项目允许清单上的模型,会在发往任何供应商之前返回 403。
- 项目点数用完时,请求返回 402(错误)。
- ATP 的 OpenAI 格式端点是
/v1/chat/completions、/v1/models和/v1/files。代码如果调用其他 OpenAI 端点,迁移前先查 API 参考。
使用 Anthropic 或 Google GenAI SDK 的团队不必改成 OpenAI 格式:同一个项目密钥也能在 https://api.atptoken.ai 配合这两套 SDK 使用(Anthropic SDK、Google GenAI SDK)。
同一个工作负载在六个模型上的花费
假设一个分类服务每月处理 100 万个请求,每个请求输入 1,000 个 token、输出 300 个 token,也就是每月 10 亿个输入 token、3 亿个输出 token。按各模型页的标价:
价格只是决策的一半。换模型之前,先拿几百张真实工单,跑一遍达到质量标准的两三个最便宜的模型。可以从 DeepSeek 与 Claude、Gemini 与 GPT 的并排对比页开始。
迁移清单
- 列出代码里每个创建 OpenAI client 的地方,以及各自调用的端点。
- 每个服务在 ATP 创建一个项目,只启用该服务需要的模型(工作区与项目)。
- 给每个项目拨点数,拨款额度就是上限(预算上限)。
- 每个项目签发一个密钥,存进密钥管理工具(管理密钥)。
- 先在测试环境修改 base URL、密钥和模型 id,在请求日志里比对输出和 token 数(用量与日志)。
- 生产环境一次迁移一个服务,最后吊销不再使用的 OpenAI 密钥。


