上周三智谱把 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

整体流程

  1. 确认你的 API Key 格式正确并且没有过期
  2. 把 base_url 从 v4 改成 v5
  3. 把 model 字段从 glm-5 改成 glm-5.1
  4. 跑一次测试请求验证联通
  5. 在 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 的 v4v5,model 的 glm-5glm-5.1。但智谱这次升级没有任何 deprecation warning 或迁移文档,调用旧路径会直接报错,报错信息也不够明确——我不确定这是有意为之还是文档团队没跟上,反正折腾了半天才定位到问题。本文中 v5 路径及相关行为均为作者实测,如与官方最新文档有出入,以官方为准。希望这篇能让你少走一圈弯路。

更多推荐