GLM-5.3工具调用与Chat Template全解析:XML函数调用格式深度揭秘

📅 发布时间:2026/10/14 18:22:17
GLM-5.3工具调用与Chat Template全解析:XML函数调用格式深度揭秘
GLM-5.3工具调用与Chat Template全解析XML函数调用格式深度揭秘【免费下载链接】GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比它在复杂编程和长程任务上的表现显著提升。项目地址: https://ai.gitcode.com/zai-org/GLM-5.3GLM-5.3 是 Z.ai 最新的旗舰开源权重模型其 Chat Template 采用独特的XML 函数调用格式专为可靠的 Agent 工具调用而设计。本文带你逐层拆解 GLM-5.3 的对话模板结构从四大角色标记、 思考标签到...的完整调用链路并给出接入 GLM-5.3 工具调用的关键参数清单。 先认识 GLM-5.3同基座、更强后训练GLM-5.3 与 GLM-5.2 使用相同的基座模型所有能力提升均来自后训练在复杂编程与长程 Agent 任务上表现显著增强详见 README.md。核心架构参数摘自 config.json参数值说明model_typeglm_moe_dsa稀疏注意力 MoE 架构层数78Transformer 层路由专家256 1 共享每 token 激活 8 个专家最大上下文1,048,576原生 1M token 长上下文量化FP8 (e4m3)128×128 分块量化权重 1M 上下文 工具调用能力使 GLM-5.3 天然适合长程 Agent 场景如 Terminal-Bench、DeepSWE 等评测中均位列开源第一梯队。️ Chat Template 结构四大角色标记GLM-5.3 的对话模板定义在 chat_template.jinjaJinja2 模板由推理框架在 tokenize 前自动渲染。所有消息通过 4 个特殊 token 区分角色特殊 token角色用途\|system\|系统系统指令、工具定义注入区\|user\|用户用户输入\|assistant\|助手模型输出含思考与工具调用\|observation\|观测工具执行结果的返回通道这些 token 均在 tokenizer_config.json 的extra_special_tokens中注册模型最大长度在 tokenizer_config.json 中设为 1048576。整个提示词以[gMASK]sop开头chat_template.jinja这是 GLM 系列的标志性起始符紧随其后可选注入思考预算声明[gMASK]sop /think Reasoning Effort: Max |system| # Tools ...Reasoning Effort行来自reasoning_effort参数模板在 chat_template.jinja 中按low/high/max三档渲染未传时默认max。️ XML 函数调用格式深度揭秘核心与 GPT 系模型常用的 JSON 参数格式不同GLM-5.3 使用一套自研的 XML 风格标记共涉及三个部分1️⃣ 工具定义注入tools块当推理框架传入tools参数时模板会在 system 区最前面自动生成一段工具说明chat_template.jinjaYou are provided with function signatures within tools/tools XML tags: tools {name: get_weather, description: 获取城市天气, parameters: {...}} /tools For each function call, output the function name and arguments within the following XML format: _每个工具以JSON 单行形式列在tools/tools中函数名、描述、参数 schema 保持标准结构模型据此学习调用约定。2️⃣ 模型输出函数名 键值对模型决定调用工具时输出格式为chat_template.jinjaget_weatherarg_keycity/arg_keyarg_value北京/arg_value /tool_call特点一目了然✅流式友好 标签一出现解析器即可开始提取函数名✅无转义负担参数值原样输出非字符串值会被序列化为 JSON见 chat_template.jinja避免 JSON 引号嵌套导致的解析失败✅支持并行调用一条 assistant 消息可连续输出多组...每组对应一次函数调用。3️⃣ 工具返回包裹 |observation| 通道工具执行结果通过|observation|标记写回对话chat_template.jinja内部再用...包裹正文|observation| {city: 北京, weather: 晴, temperature: 26}完整的一次调用链渲染示意如下|user|北京今天天气怎么样 |assistant| 我来帮你查一下。 get_weatherarg_keycity/arg_keyarg_value北京/arg_value /tool_call |observation| {city: 北京, weather: 晴, temperature: 26} |assistant| 北京今天晴气温 26℃。 一个巧妙细节模型每轮输出都先经...思考段chat_template.jinja再给出正式回复或工具调用先想后做的结构显著提升了复杂任务的成功率。⚙️ 三个必须知道的控制参数参数取值作用reasoning_effortlow/high/max默认max思考预算档位复现评测结果请保持默认maxclear_thinkingfalse默认/true多轮对话中是否清空历史轮次的思考内容add_generation_prompt默认true在末尾补上 |assistant| 引导模型开始思考clear_thinking的实现很见功力chat_template.jinja模板先定位最后一条 user 消息的位置chat_template.jinja只有该位置之后的 assistant 消息才保留完整思考内容更早的历史轮次一律替换为空标签/think从而在保持当前推理能力的同时大幅节省多轮对话的 token 消耗。 官方建议README.md聊天场景请显式传clear_thinkingtrue。 进阶机制工具延迟加载与结果智能排序defer_loading 延迟加载— 当工具数量极多如接入大量 MCP 服务时可在工具定义中设置defer_loading: true模板将跳过该工具的初始渲染chat_template.jinja当需要其完整定义时通过tool_reference类型的工具结果按需展开为tools{...}/toolschat_template.jinja。相当于给上下文窗口做分页避免长系统提示稀释注意力。并行结果自动排序— 多个工具并行执行后返回顺序可能与模型发起调用的顺序不一致。模板内置了严格的校验逻辑chat_template.jinja、chat_template.jinja通过tool_call_id比对将 结果重排为与调用发起顺序一致一旦发现 ID 缺失或重复则自动降级为原始顺序确保任何异常输入都不会渲染出错。 此外模板对非文本内容做了防御处理若消息中出现 image/video/audio 等多模态片段会替换为一条模型无法处理该模态的提示语chat_template.jinja因为 GLM-5.3 是纯文本模型。 GLM-5.3 工具调用接入速查✅ 使用 SGLang、vLLM、Transformers、KTransformers 等主流推理框架部署由框架自动应用 chat_template.jinja切勿手写提示词拼接✅ 采样参数按 generation_config.jsontemperature1.0、top_p0.95✅ Agent/工具场景保持reasoning_effortmax多轮聊天场景加clear_thinkingtrue✅ 解析模型输出时按 → 函数名 →arg_key/arg_value键值对 → 的顺序做流式解析即可稳定拿到调用参数。 关键文件清单文件作用chat_template.jinjaChat Template 完整定义工具调用、思考控制、结果排序全部在此config.json模型架构配置MoE、1M 上下文、FP8 量化generation_config.json推荐采样参数与 EOS tokentokenizer_config.json特殊 token 注册与最大长度tokenizer.json分词器词表约 20MBGit LFS 管理README.md能力评测基准与部署框架指引【免费下载链接】GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比它在复杂编程和长程任务上的表现显著提升。项目地址: https://ai.gitcode.com/zai-org/GLM-5.3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考