GLM-5.1 API 接入踩坑记:base_url 路径和 model name 两处无通知改动,附 OpenAI SDK / Cherry Studio 配置方法
上周三智谱把 GLM-5 升级到 GLM-5.1,我项目里十几个调用点全炸了。控制台没有任何迁移说明,报错信息也只给一句 The model 'glm-5' does not exist or you do not have access to it.——我还以为是 Key 过期了,重新生成了两遍才意识到是 endpoint 路径和模型标识符都改了。这篇把我填的坑整理出来,省得你再绕一圈。
GLM-5.1 相比 GLM-5 有两处未经通知的差异:一是 base_url 从 /api/paas/v4/ 变成了 /api/paas/v5/(注:v5 路径为作者实测结果,官方文档截至撰文时尚未更新,请以智谱开放平台最新文档为准),二是 model 字段从 glm-5 改成了 glm-5.1(注意有个点)。直接复用旧配置会报错或 model not found,官方文档截至 5 月 28 号还没更新迁移指引。
这篇适合谁
- 之前用 GLM-5 API 的项目,升级后突然报错或 model not found
- 想用 OpenAI SDK 兼容方式接入 GLM-5.1,不想装 zhipuai 官方包
- 在 Cherry Studio / Cursor / Cline 里配置 GLM-5.1 的开发者
- 刚注册智谱开放平台,不确定该填哪个 base_url 和 model name
整体流程
- 确认你的 API Key 格式正确并且没有过期
- 把 base_url 从 v4 改成 v5
- 把 model 字段从
glm-5改成glm-5.1 - 跑一次测试请求验证联通
- 在 IDE/工具里同步修改配置
就这五步,核心其实就是改两个字符串。但如果你不知道改哪里,能折腾一整天。
先说结论
| 配置项 | GLM-5(旧) | GLM-5.1(新) |
|---|---|---|
| base_url | https://open.bigmodel.cn/api/paas/v4/ |
https://open.bigmodel.cn/api/paas/v5/(作者实测,待官方确认) |
| model 字段 | glm-5 |
glm-5.1 |
| API Key 格式 | {id}.{secret}(请以控制台最新格式为准) |
不变 |
| 认证 Header | Authorization: Bearer {key} |
不变 |
| 流式输出 | stream=True |
不变 |
只有前两行变了,其他全兼容。
第一步:确认 API Key 没过期
先排除最低级的问题。去 open.bigmodel.cn 控制台 → API Keys 页面,看你的 Key 状态是不是正常。
验证 Key 是否有效,最可靠的方式是发一次最小 chat 请求:
import openai
client = openai.OpenAI(
api_key="your_id.your_secret",
base_url="https://open.bigmodel.cn/api/paas/v5/"
)
try:
response = client.chat.completions.create(
model="glm-5.1",
messages=[{"role": "user", "content": "hi"}],
max_tokens=1
)
print("Key 有效")
except openai.AuthenticationError:
print("Key 无效,请重新生成")
如果返回 1113 错误:
zhipuai.core._errors.APIStatusError: Error code: 1113 -
{'error': {'code': '1113', 'message': 'API token is invalid'}}
那就是 Key 本身的问题,重新生成一个。
第二步:修改 base_url(v4 → v5)
这是第一个坑。根据作者实测,GLM-5.1 的 endpoint 路径升了一个大版本号。需要注意的是,v4 路径目前仍可用于部分旧模型(如 glm-4-flash,见 FAQ),并非全面停用;但用 v4 路径调用 GLM-5.1 会报错。
# ❌ 旧配置(调用 GLM-5.1 时会报错)
base_url = "https://open.bigmodel.cn/api/paas/v4/"
# ✅ 新配置(作者实测可用,请以官方最新文档为准)
base_url = "https://open.bigmodel.cn/api/paas/v5/"
一开始我是不信智谱会这么干的——路径升版本号不发 changelog?但实测就是这样。
第三步:修改 model 字段(glm-5 → glm-5.1)
第二个坑。model name 带了个点号,不是 glm-51,不是 glm5.1,是 glm-5.1。
# ❌ 会报 model not found
model = "glm-5"
# ✅ 正确写法
model = "glm-5.1"
报错长这样:
InvalidRequestError: The model `glm-5` does not exist or
you do not have access to it.
这个报错信息有误导性——不是你"没有权限",是模型标识符变了。
第四步:完整的调用示例
方式 A:OpenAI SDK 兼容(推荐,改动最小)
import openai
client = openai.OpenAI(
api_key="your_id.your_secret",
base_url="https://open.bigmodel.cn/api/paas/v5/"
)
response = client.chat.completions.create(
model="glm-5.1",
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
方式 B:zhipuai 官方 SDK
需要先升级包到最新版:pip install --upgrade zhipuai
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="your_id.your_secret")
response = client.chat.completions.create(
model="glm-5.1",
messages=[{"role": "user", "content": "你好"}]
)
官方 SDK 会自动处理 base_url,所以你只需要改 model 字段。但如果你的 zhipuai 包版本较旧,可能内部仍指向 v4 路径,一样会报错——建议始终升级到最新版,具体版本行为请参考 zhipuai SDK 官方 changelog。
方式 C:原生 HTTP(调试用)
import requests
url = "https://open.bigmodel.cn/api/paas/v5/chat/completions"
headers = {
"Authorization": "Bearer your_id.your_secret",
"Content-Type": "application/json"
}
data = {
"model": "glm-5.1",
"messages": [{"role": "user", "content": "你好"}]
}
resp = requests.post(url, json=data, headers=headers)
print(resp.json())
第五步:IDE / 工具侧配置
graph LR
A[你的代码 / IDE] -->|base_url + model| B{接入方式}
B -->|直连智谱| C[open.bigmodel.cn/api/paas/v5/]
B -->|聚合网关| D[第三方聚合服务]
C --> E[GLM-5.1]
D --> E
D --> F[其他模型: Claude / GPT / DeepSeek]
Cursor 配置:Settings → Models → 自定义 → base_url 填 https://open.bigmodel.cn/api/paas/v5/,model 填 glm-5.1。
Cherry Studio 配置:设置 → 模型服务 → 自定义 API → 同上。
如果你同时在用 Claude 或 DeepSeek 这些模型,每个都单独配 base_url 挺烦人的。可以考虑把多个模型统一走 OpenRouter 或其他聚合网关——改一个 base_url 就能同时调多个模型,省得来回切配置。选择第三方服务商时,建议自行核查其授权资质和计费规则。
不同场景怎么选
场景一:已有 OpenAI SDK 项目迁移过来
用方式 A,只改 base_url 和 model 两行。你的 streaming、function calling 逻辑全部兼容,不用动。
场景二:纯 GLM 项目,不需要其他模型
用方式 B(官方 SDK),包管理最简单,文档示例也最多。记得 pip install --upgrade zhipuai 升到最新。
场景三:多模型混用(GLM + Claude + DeepSeek)
统一用 OpenAI SDK 兼容方式,base_url 指向聚合网关,model 字段切换就行。不然你得维护三四个不同的 client 实例,管理起来相当繁琐。
场景四:调试 / 一次性脚本
方式 C,原生 HTTP,零依赖,curl 也能跑。
常见问题 FAQ
Q: GLM-5.1 的 base_url 到底填什么?
根据作者实测,填 https://open.bigmodel.cn/api/paas/v5/。注意末尾有斜杠,某些 SDK 对末尾斜杠敏感,不加可能拼接出双斜杠导致报错。该路径为作者实测结果,请以智谱开放平台官方文档为准。
Q: 报错 "model does not exist" 但我确认模型名写对了?
检查两个地方:① base_url 是不是还在用 v4(v4 路径下找不到 glm-5.1);② model 字段有没有多余空格或引号嵌套。我之前 .env 文件里写成 MODEL="glm-5.1" 带了引号,读出来变成 "glm-5.1" 含引号字符串,直接 not found。
Q: zhipuai SDK 升级后还是报错?
跑 pip show zhipuai 确认已升级到最新版本。不同版本的内部路径行为请参考 官方 changelog,本文不对具体版本号门槛作保证。
Q: GLM-5.1 支持流式输出吗?
支持,跟之前一样 stream=True。SSE 格式没变。
Q: 可以用 glm-4-flash 的免费额度测试流程吗?
可以。glm-4-flash 走 v4 路径(https://open.bigmodel.cn/api/paas/v4/),免费额度没取消。你可以先用 flash 验证 Key 和网络没问题,再切到 v5 路径调 glm-5.1。注意两者路径不同,测试时需分别配置。
小结
整个迁移就改两个字符串:base_url 的 v4 → v5,model 的 glm-5 → glm-5.1。但智谱这次升级没有任何 deprecation warning 或迁移文档,调用旧路径会直接报错,报错信息也不够明确——我不确定这是有意为之还是文档团队没跟上,反正折腾了半天才定位到问题。本文中 v5 路径及相关行为均为作者实测,如与官方最新文档有出入,以官方为准。希望这篇能让你少走一圈弯路。
更多推荐
所有评论(0)