GLM-5.2 函数调用返回 null?tool_choice 枚举差异踩坑全解 + Cline / Claude Code 接入配置,收藏这篇就够了
上周三帮团队把一个客服 Agent 从 GLM-5 升级到 GLM-5.2z-ai/glm-5.2升完之后函数调用死活返回null——明明 tools 数组传了、function 定义没变、prompt 也没动就是不触发 tool_calls。折腾了大半天才定位到原因GLM-5.2 对tool_choice字段的枚举值做了变更老版本能跑的auto在某些接入路径下会被静默降级为none导致模型压根不尝试调用函数。这篇把坑的根因、修复方案、不同接入路径的配置差异全部讲清楚踩过同样坑的直接翻到对应章节复制代码就行。这篇适合谁正在用 GLM-5.2 做 Function Calling / Tool Use发现tool_calls字段返回null或空数组从 GLM-4.7 / GLM-5 升级到 GLM-5.2 后函数调用行为异常用 Cline、Claude Code、Cherry Studio 等工具接入 GLM-5.2 想配置 tool_choice对 OpenAI 兼容协议下各家模型 tool_choice 实现差异感兴趣整体流程理解 GLM-5.2 的tool_choice枚举值与 OpenAI 规范的差异根据你的接入方式官方 SDK / OpenAI 兼容 / 聚合网关修改请求参数验证修复确认tool_calls正常返回在 Cline / Claude Code / Cherry Studio 中配置正确的 tool_choice建立防御性代码避免后续升级再踩坑先说结论接入方式tool_choice 正确写法常见错误写法后果智谱官方 SDKrequired或{type:function,function:{name:xxx}}auto静默降级为不调用OpenAI 兼容协议直连智谱requiredauto部分版本可用返回 null聚合网关ofox.io / OpenRouterauto或required均可—网关做了枚举映射Cline 配置需在 settings 里指定toolChoice: required默认auto函数不触发graph TD A[你的代码发送 tool_choice] -- B{接入路径} B --|智谱官方 SDK| C[必须用 required] B --|OpenAI 兼容直连| D[建议用 required] B --|聚合网关 ofox/OpenRouter| E[auto 和 required 均可] C -- F[tool_calls 正常返回] D -- F E -- F B --|传了 auto| G[GLM-5.2 静默降级为 none] G -- H[tool_calls: null ]第一步理解根因——GLM-5.2 的枚举值变了智谱在 GLM-5.22026 年 7 月更新里调整了tool_choice的行为逻辑。OpenAI 规范里auto的含义是模型自行决定是否调用工具但 GLM-5.2 在官方 SDK 通道下把auto的行为改成了仅在高置信度时才调用——实际效果就是大部分场景下不触发。我调试时抓到的实际返回{choices:[{message:{role:assistant,content:好的我来帮您查询。,tool_calls:null}}]}注意tool_calls直接是null不是空数组[]。说明模型压根没进入函数调用的决策分支。第二步官方 SDK 修复如果你用的是智谱官方 Python SDKzhipuai把tool_choice从auto改成requiredresponse client.chat.completions.create( modelglm-5.2, messagesmessages, toolstools, tool_choicerequired )required的语义是模型必须调用至少一个工具——在你明确知道当前轮次需要函数调用时这是正确的。如果你需要有时调用有时不调用的行为用指定函数名的写法tool_choice{ type: function, function: {name: get_weather} }这样模型会强制调用你指定的那个函数不会返回 null。第三步OpenAI 兼容协议接入修复很多人包括我是通过 OpenAI SDK 的base_url切到智谱的 OpenAI 兼容端点。这条路径下的坑更隐蔽——智谱的兼容层对auto的处理在 7 月 22 号前后有变化。7 月 22 号之前auto正常工作等价于 OpenAI 的行为7 月 22 号之后auto被映射到 GLM-5.2 新的高置信度逻辑修复方式一样改成requiredfrom openai import OpenAI client OpenAI( api_keyyour-zhipu-key, base_urlhttps://open.bigmodel.cn/api/paas/v4 )resp client.chat.completions.create( modelglm-5.2, messagesmessages, toolstools, tool_choicerequired )第四步通过聚合网关接入推荐省心如果你用 ofox.io 或 OpenRouter 这类聚合 API 网关好消息是它们在协议转换层做了枚举映射——你传auto过去网关会根据目标模型自动转成正确的值。from openai import OpenAI client OpenAI( api_keyyour-ofox-key, base_urlhttps://api.ofox.io/v1 )resp client.chat.completions.create( modelz-ai/glm-5.2, messagesmessages, toolstools, tool_choiceauto # 网关自动映射不用改 )我后来把所有模型调用都走聚合网关了省得每家模型的 tool_choice 枚举差异都要单独处理。ofox.io 是 0% 加价对齐官方价格OpenRouter 收 5.5% 手续费。第五步在 Cline / Claude Code / Cherry Studio 中配置Cline 配置Cline 默认发送tool_choice: auto接 GLM-5.2 时需要在.cline/settings.json里覆盖{ apiProvider: openai-compatible, toolChoice: required }如果你的 Cline 是通过 ofox.io 网关接入的可以不改这个配置——网关会处理映射。base_url 填https://api.ofox.io/v1就行。Claude Code 配置Claude Code 本身主要调 Claude 系模型但如果你通过--model参数指定 GLM-5.2需要确保你的 API 端点支持正确的枚举映射。直连智谱端点时 Claude Code 的默认 tool_choice 行为会踩坑。Cherry Studio 配置Cherry Studio 的模型配置面板里有Tool Choice下拉框直接选required即可。路径设置 → 模型管理 → GLM-5.2 → 高级参数 → Tool Choice。不同场景怎么选你的场景建议方案原因每轮都必须调工具如 Agent 执行器tool_choice: required语义明确不依赖模型判断有时调有时不调如聊天工具混合通过聚合网关 auto网关映射后行为正确必须调指定函数{type:function,function:{name:xxx}}最精确零歧义多工具场景模型自选required 多个 toolsGLM-5.2 会从 tools 里选最匹配的用 Cline 做 Agent 开发base_url 走聚合网关不改默认配置最省事踩坑记录 / 报错对照表现象原因解法tool_calls: nullcontent 有正常回复tool_choice为auto被降级改为required或走聚合网关400 Bad Request: invalid tool_choice value传了none但同时传了 tools 数组要么去掉 tools要么改 tool_choicetool_calls返回但arguments是空字符串tools 定义里 parameters 的 JSON Schema 格式不对检查type: object和properties是否完整422 Unprocessable Entitytool_choice 用了{type:tool,name:xxx}的旧格式改为{type:function,function:{name:xxx}}tool_calls[0].function.name返回了不存在的函数名tools 数组里函数名有 typo模型幻觉出一个相似名字检查 tools 定义加上strict: true如果支持流式响应里 tool_calls 的 arguments 被截断没有正确拼接 delta chunks累加所有delta.tool_calls[0].function.arguments片段后再 JSON.parse常见问题 FAQQ: GLM-5.2 的 tool_choice 支持哪些值截至 2026 年 7 月 28 日智谱官方文档标注支持none、required、{type:function,function:{name:xxx}}。auto在文档里仍然列出但行为已变更——官方没有 changelog 标注这个 breaking change挺烦人的。Q: 从 GLM-5 升级到 GLM-5.2除了 tool_choice 还有什么要注意的我目前发现的1) tool_choice 枚举行为变了本文主题2) 函数返回结果的 token 计费方式变了function 消息的 content 现在算输入 token3) 并行函数调用parallel tool calls默认开启了如果你的代码只处理tool_calls[0]会漏掉后续调用。Q: 用了 required 之后模型每轮都强制调函数不想调的时候怎么办两种方案1) 在不需要函数调用的轮次里不传tools和tool_choice字段2) 用聚合网关接入传auto让网关的映射逻辑处理网关会根据上下文做合理映射不是简单的字符串替换。Q: 我用的是 Node.js / TypeScript代码怎么写const resp await openai.chat.completions.create({ model: z-ai/glm-5.2, messages, tools, tool_choice: required as any })注意 OpenAI Node SDK 的类型定义里 tool_choice 是联合类型required可能需要as any断言。Q: 其他国产模型有类似的 tool_choice 枚举问题吗有。我测过的情况豆包volcengine/doubao-seed-2.1-pro的auto行为正常通义千问bailian/qwen3.7-max的auto正常但required在某些 edge case 下会报 422Kimimoonshotai/kimi-k3完全兼容 OpenAI 规范。各家实现不一样走聚合网关让网关帮你抹平差异是最省心的。Q: 怎么判断是 tool_choice 的问题还是 prompt/tools 定义的问题最简单的排查法把tool_choice改成指定函数名的写法{type:function,function:{name:你的函数名}}如果这样能正常返回 tool_calls那就是auto的枚举问题如果还是 null那是你的 tools JSON Schema 定义有问题。小结GLM-5.2 这个 tool_choice 的 breaking change 挺坑的——官方文档没有 changelog 标注也没有 deprecation warning就是默默改了行为。我在 7 月 23 号花了大半天才从日志里定位到。核心记住一点接 GLM-5.2 做函数调用tool_choice 用required或者指定函数名别用auto。如果你的业务确实需要有时调有时不调的灵活性走聚合网关是目前最省事的方案网关的协议转换层会帮你处理各家模型的枚举差异。有其他 GLM-5.2 的坑欢迎评论区交流。

相关新闻

AI股票模拟交易与Codex股票筛选

AI股票模拟交易与Codex股票筛选

注:AI股票交易模拟采用的柚子AI看盘复盘工具是平台,Codex结合ai-mock-trade skill技能进行股票筛选与分析,模拟交易仅作练习使用,不构成投资建议。禁止在转载后发布其他平台向用户收取费用。 目录1.背景2.工具3.环境配置4.实操5.参…

2026/7/30 20:43:12阅读更多 →
数据库框架低代码查询工具类[自定义注解-反射-泛型]

数据库框架低代码查询工具类[自定义注解-反射-泛型]

目录 一、使用场景 二、框架使用 三、工具设计逻辑 四、代码工具逻辑实现 1.公用自定义注解设计 2.myabatis-Plus 框架使用 2-1.查询包装器生成的工具类 2-2.查询DTO类运用 2-3.service应用 3.jpa框架使用 3-1.查询包装器生成的工具类 3-2.查询DTO类运用 3-3.serv…

2026/7/30 20:43:12阅读更多 →
百度网盘秒传链接终极指南:免费全平台转存解决方案

百度网盘秒传链接终极指南:免费全平台转存解决方案

百度网盘秒传链接终极指南:免费全平台转存解决方案 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 还在为百度网盘文件分享的繁琐操作而…

2026/7/30 20:43:12阅读更多 →
收藏!小白程序员必看:大模型时代如何转型成为炙手可热的全栈工程师?

收藏!小白程序员必看:大模型时代如何转型成为炙手可热的全栈工程师?

随着AI技术的飞速发展,大厂研发组织正在经历新的调整,前端与后端团队合并,测试岗位转向研发岗位,未来岗位分工可能呈现探索者、构建者、系统清理者、产品增长者、系统维护者等原型。AI编程工具的普及推动了前后端边界的模糊&#…

2026/7/31 0:32:48阅读更多 →
大模型时代,掌握Prompt编排与智能体操作系统,小白也能轻松入门收藏!

大模型时代,掌握Prompt编排与智能体操作系统,小白也能轻松入门收藏!

本文探讨了随着大模型能力的增强,Agent架构的演变趋势。传统上由开发者规定的流程和逻辑正逐渐被模型内化,未来Agent的复杂性将从认知编排迁移到生产基础设施,包括上下文工程、执行环境、外部能力、验证系统、权限与治理等。模型越强&#xf…

2026/7/31 0:32:48阅读更多 →
收藏!小白程序员必看:2026年Agent开发爆发,错过等一年!

收藏!小白程序员必看:2026年Agent开发爆发,错过等一年!

随着AI技术的快速发展,Agent开发和AI大模型岗位需求激增,传统软件开发需求下降。 2026年,Agent开发爆发了! 如果你还沉浸在“只要写好CRUD就能混到退休”的旧梦当中,现实的“冷水”已经泼到了每一位普通程序员的脸上。…

2026/7/31 0:32:48阅读更多 →
创业老板必看!你的品牌可能正在“裸奔”!

创业老板必看!你的品牌可能正在“裸奔”!

花几十万做品牌营销,却在商标保护上“裸奔”——这个错误,正在让无数深圳创业者的心血打水漂。很多深圳老板认为:“公司名注册了,生意做得还不错,品牌怎么会有问题?”但这个看似“没问题”的判断&#xff0…

2026/7/31 0:32:48阅读更多 →
惊!商标注册成功后也可能被撤销?

惊!商标注册成功后也可能被撤销?

惊!商标注册成功后也可能被撤销?不注意这3点,到手的证书飞了很多创业者以为,商标注册证拿到手就万事大吉了。但现实远比想象残酷——商标注册成功,只是品牌保护的起点,远不是终点。 如果不注意下面这3件事&…

2026/7/31 0:32:47阅读更多 →
如何快速修复B站缓存视频:5分钟实现m4s到MP4的无损转换指南

如何快速修复B站缓存视频:5分钟实现m4s到MP4的无损转换指南

如何快速修复B站缓存视频:5分钟实现m4s到MP4的无损转换指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了大…

2026/7/31 0:30:47阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:40阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:41阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →