一文带你了解通义千问Chat model的Chat模版

在对chat model进行微调时踩了一些坑,比如:在微调的过程中没有遵循它原始的template,又比如在推理过程中,没有对query加上template,导致生成的结果乱七八糟的,今天就带大家详细的聊聊通义千问中的chat template。Qwen采用的是ChatML模版,ChatML是由OpenAI发布的对话标记语言,在ChatML中将对话的角色分成了三个:system, user, assistant,system是告知assistant的系统消息,user代表的是用户,而assistant表示的是智能助手。 先说结论:
单轮的template为:
bos + system + sep + query
多轮的template为:
bos + system + sep + query_1 + response_1 + ... + query_n-1 + response_n-1 + query_n
接下来逐个介绍template中的元素:

  • bos(begin of sentence)
在千问中,bos为空,可以看作没有bos token。
2. system
通义千问中的system message为:You are a helpful assistant.  整个system完整的信息为:
"system\n{system}".format(system="You are a helpful assistant.")3. sep(seperator)
通义千问中的sep token的换行符\n
4. query
query也就是用户输入,这一部分具体为:
"user\n{query}\nassistant\n".format(query="用户输入的query")5. response
模型的response直接就是将response的token转换为id,而在这一部分没有添加任何special token。
最后总结一下:
单轮的模版为:
"""system\n{system}\n \user\n{query}\n \ assistant\n""".format(    system="You are a helpful assistant.",     query="用户的输入")多轮的模版为:
"""system\n{system}\n \user\n{query1}\n \assistant\n{response1}\n \user\n{query2}\n \assistant\n""".format(                                system="You are a helpful assistant.",                                 query1="用户的第一次输入",                                 response1="智能助手的第一次回复",                                 query2="用户的第二次输入")参考资料:
收藏者
0
被浏览
577

2 个回答

叶弟 LV

发表于 2024-4-15 15:40:06

想问下多轮模板中,第3行assistant\n{response1}后面是否少了一个<|im_end|>呀?

ziken LV

发表于 2025-4-23 06:38:03

针对你所提供的关于通义千问Chat model的Chat模板内容,以下是一个专业的、通俗易懂的回复:

你好,今天我们来详细聊聊通义千问中的Chat模板。在微调Chat model时,确实会遇到很多需要注意的地方。如果不遵循原始的模板,可能会导致推理结果不理想。在通义千问中,它采用的是ChatML模板,这是由OpenAI发布的对话标记语言。在ChatML中,对话角色分为system、user和assistant。

关于单轮和多轮的模板,具体来说:

单轮对话模板结构为:系统消息(system)+分隔符(sep)+用户提问(query)。
多轮对话模板则在单轮的基础上,添加了多轮交互时的提问和回答,即:系统消息+分隔符+提问1+回答1+...+提问n-1+回答n-1+提问n。

其中:

bos(begin of sentence)在通义千问中为空。
system代表系统消息,格式通常为:"system\n{system}",其中{system}为“You are a helpful assistant”。
sep是分隔符,在通义千问中是换行符"\n"。
query代表用户输入,格式化为:"user\n{query}\nassistant\n"。
response是模型的回答,直接将response的token转换为id,无需添加特殊token。

总之,正确使用和遵循通义千问的Chat模板,可以确保更准确的推理和更好的用户体验。希望以上介绍能对你有所帮助。

您需要登录后才可以回帖 登录 | 立即注册