智谱 API 怎么接:OpenAI 与 Anthropic 两条路
三个 base_url 对应三套协议,模型名大小写、thinking 参数、套餐 Key 归属都会让请求直接失败。这篇给出两条路的最小可用配置和四个常见报错原因。
已有的 OpenAI 代码只改两行就能跑,已有的 Anthropic 代码也是。麻烦不在调用,在端点、模型名和参数这三处细节,写错一个就是 400 或 404。
三个端点,各管一类请求
| 协议 | Base URL | 适用 |
|---|---|---|
| OpenAI Chat Completions | https://open.bigmodel.cn/api/paas/v4 | 通用对话、函数调用、绝大多数 SDK |
| OpenAI Response | https://open.bigmodel.cn/api/v1 | 需要 Response 形态的新版 SDK |
| Anthropic Messages | https://open.bigmodel.cn/api/anthropic | Claude Code、Anthropic SDK、Cline 一类工具 |
三条都吃同一个 API Key,在开放平台控制台创建,创建后立刻写进环境变量,不要留在代码里。
路线一:OpenAI 兼容,改 base_url 和模型名
from openai import OpenAI
client = OpenAI(
api_key="YOUR_KEY",
base_url="https://open.bigmodel.cn/api/paas/v4",
)
resp = client.chat.completions.create(
model="glm-5.3",
messages=[{"role": "user", "content": "用三句话说明 MoE 的激活参数"}],
)
print(resp.choices[0].message.content)
模型名全小写,glm-5.3、glm-5.2、glm-4.7-flash 都是这个格式。写成 GLM-5.3 会报模型不存在;旗舰和 Flash 是两套模型编码,不能互相回退。生产环境把模型名放配置里,别散落在代码中。
路线二:Anthropic 兼容,两个环境变量
已经在用 Claude Code 的,改环境变量即可,代码不用动:
export ANTHROPIC_BASE_URL=https://open.bigmodel.cn/api/anthropic
export ANTHROPIC_AUTH_TOKEN=YOUR_KEY
想持久化就写进 ~/.claude/settings.json 的 env 段。注意 ANTHROPIC_AUTH_TOKEN 不是 ANTHROPIC_API_KEY,两者在部分客户端里行为不同,用错会出现 401。
Anthropic SDK 则改 base_url,model 填智谱的模型编码,其余参数照旧。Claude Code 内部的 Opus / Sonnet / Haiku 三档会映射到智谱模型,默认可能全部指向 Flash,需要更强模型时手动指定,别默认以为在用旗舰。
四个会直接报错的点
thinking 参数。 GLM-5.3 对旧写法不兼容:如果请求里是 thinking.type: "disabled",把模型名换成 glm-5.3 之前必须先改成 enabled,同时把 reasoning_effort 设为 low,否则请求直接失败。复杂任务建议用 max,日常对话用 low 省 token。
订阅过 Coding Plan 的账号。 官方文档写明:订阅过 Coding Plan(含已过期)的账号,暂时只能通过 OpenAI Chat Completion 协议调用模型 API。也就是说 Anthropic 端点在这类账号上可能不通,接 Claude Code 要用套餐专用的 Key 走对应配置。
团队套餐的 Key 不通用。 团队版 Key 在团队套餐页获取,和平台通用 API Key 不是一套,混用通常表现为鉴权失败或余额异常。
限流没有统一数字。 官方文档没有给出统一的 RPM 数值,实际配额与账号等级、并发配置相关,以控制台为准。遇到 429 先降并发,别急着重试。
两个容易踩的工程细节
流式输出要自己收尾。 开启 stream=true 之后,最后一个 chunk 里才有完整的 usage 统计,中途断连就没有计费数据。生产环境把每次请求的 usage 落库,否则月底对账只能看总额,查不出是哪条链路烧的。
长上下文的成本不是线性的。 1M 上下文能塞进整个仓库,但每轮对话都会重发历史。多轮 Agent 跑到后面,输入量会成倍放大。控制手段有两个:一是把稳定前缀放前面吃缓存,二是定期在新会话里重新开题,不要在一个会话里滚一整天。
结构化输出优先用 JSON 模式。 需要稳定解析的字段,别靠提示词约束格式,用平台提供的结构化输出能力,再在客户端做一次校验。模型返回的 JSON 偶尔会带多余字段,解析器要能容忍。
计费与缓存,接完就该算
GLM-5.3 每百万 token 输入 1.40 美元、输出 4.40 美元,缓存命中的输入 0.26 美元;GLM-5.3-Flash 是 0.15 / 0.50 美元,缓存 0.03 美元;GLM-5 是 1.00 / 3.20 美元;GLM-4.7-Flash 免费。
缓存要主动吃到才有意义:把系统提示词、工具定义、长文档前缀放在消息最前面并保持稳定,命中率才上得去。每次请求都改一段前缀,缓存等于没有。
完整的单价对照在11 月大模型 API 价格表。如果你的用量集中在编程场景,订阅制可能比按量更省,取舍见AI 编程工具怎么选。
上线前做一件事:把四条链路各跑一次——普通对话、流式输出、函数调用、超长输入。四个都通,再谈并发和成本。
登录后可点赞、收藏与反馈。