跳到正文
docai.cc

DOCAI · 概念 · L2

对话模板(chat template)是什么

一句话定义

把 system、user、assistant 等消息按模型训练时的格式拼成特殊 token 序列的规则。

开发者更新 2026-11-13核验 2026-11-13 · docai 编辑部

它是什么

你在 API 里发的是结构化的消息数组:system 定规则,user 提问,assistant 回答。模型实际吃进去的却是一串 token。对话模板就是两者之间的翻译规则:用哪些特殊 token 标记角色、角色名写在哪、助手回复在哪结束、工具调用用什么块包起来。

模板不是给人看的排版,而是模型在训练时见过的格式。训练和推理必须用同一套格式,否则等于用另一种方言跟它说话。

怎么工作

对话模板通常以模板字符串的形式随分词器发布,推理框架调用时把消息数组逐条套进去,拼成完整文本,再转成 token。

角色映射有几个细节:

  • system 消息通常只在开头出现一次。有的模型没有独立的 system 角色,框架会把它并入第一条 user 消息。
  • user 与 assistant 交替出现。如果历史里连续两条同角色,很多模板会合并,或者直接报错。
  • 生成前要在末尾加上 assistant 的起始标记,模型才知道轮到自己说话。

工具调用块另有一套标记:工具定义怎么描述、模型请求调用时输出什么、执行结果怎么回填,顺序与标签都由模板规定。接工具调用时,模板不对,模型可能永远不触发工具,或者把参数写成普通文本。

常见坑

  • 官方 API 正常、自己部署变差:先把两边实际拼出的文本打印出来逐字对比,通常是模板版本不同。
  • 手工拼字符串:漏特殊 token、多一个空格、重复加起始标记,都会让效果下降且不报错。
  • 依赖框架默认模板:推理框架与模型版本的默认值可能不一致,部署时显式指定模板。
  • 微调与推理不一致:训练时用的模板必须和线上推理完全一致,包括系统提示的位置。
  • 量化后模板丢失:部分转换流程会丢掉模板配置,部署前检查是否还在。

和提示模板的区别

提示模板是你写在应用里的文字模板,决定问什么;对话模板是模型要求的消息格式,决定怎么把问的话交过去。前者由你设计,后者由模型决定,两者不能互相替代。

常见误解

  • 「模板只是格式装饰」:它决定模型看到的结构,直接影响输出质量与工具触发。
  • 「所有模型共用一套模板」:每个模型有自己的格式,混用等于换了一种训练分布。
  • 「拼错了会报错」:多数情况不会报错,只是答得更差,所以问题很难被发现。
  • 「模板不影响 token 计数」:特殊 token 与角色标记都算数,估算成本时要算进去。

什么时候用得上

当你在本地或自建服务里跑开源模型、自己拼消息、接工具调用,或者遇到同一个模型官方 API 正常、自己部署却答非所问时。

常见误解

很多人以为把消息按 JSON 发过去模型自然能懂。本地模型与推理框架要先按训练时的模板拼成带特殊 token 的文本;模板错位通常不报错,只是效果变差。

来源

定义与事实以以下来源为准;表述与取舍是本站整理的。
  1. [1]Hugging Face · Chat templating
  2. [2]Anthropic · Messages API
  3. [3]OpenAI · Text generation
查看 Markdown

相邻概念