Qwen-3 对话模板分析
Qwen-3 引入了灵活且高效的对话模板
Qwen 团队开发的 Qwen-3 模型采用了比其前身 Qwen-2.5 和 QwQ 更复杂的对话模板。这个更新后的 Jinja 模板在模型如何处理推理、管理对话上下文以及与工具交互方面引入了关键改进,使智能体工作流(agentic workflows)更加可靠和高效。
通过 enable_thinking 标志实现可选推理
Qwen-3 允许用户使用 enable_thinking 标志来切换推理能力,从而摆脱了早期模型中常见的强制思维链模式。
当 enable_thinking 设置为 false 时,模板会插入一对空的 <think></think>,这会向模型发出信号,指示其跳过逐步思考过程。相比之下,像 QwQ 这样的模型通过将 <think> 标签直接嵌入生成提示词中,强制在每次对话中进行推理。如果该标志设置为 true,模型则保留自主决定是否进行推理的权利。
通过滚动检查点实现动态上下文管理
Qwen-3 利用“滚动检查点”(rolling checkpoint)系统,根据对话进度智能地保留或修剪推理块。该系统会反向遍历消息列表,以识别最近一次不是工具调用的用户轮次。模板会保留该索引之后所有助手回复中的完整 <think> 块,而对于较早的消息,则将其剥离。
这种动态方法提供了若干技术优势:
- 主动计划保留:模型在多步工具调用期间保持其当前计划可见。
- 嵌套工作流支持:它能够维持嵌套工具工作流的上下文,且不会丢失信息。
- Token 效率:通过移除模型不再需要的推理块来节省 Token。
- 降噪:防止“陈旧”的推理干扰新任务。
改进的工具参数序列化
Qwen-3 通过对工具参数实施类型检查来提高工具调用的可靠性,以防止重复转义。此前,在 Qwen-2.5 等模型中,每个 tool_call.arguments 字段都会经过 | tojson 过滤器,无论输入是否已经是 JSON 编码的字符串。Qwen-3 现在会检查参数是否已经是字符串;如果是,则直接输出,仅在输入不是字符串时才应用 | tojson。
移除了默认系统提示词
与使用默认系统提示词(例如,“You are Qwen, created by Alibaba Cloud. You are a helpful assistant”)的 Qwen-2.5 系列不同,Qwen-3 和 QwQ 在发布时并不包含默认系统提示词。尽管如此,这些模型在被用户询问时,仍能准确识别其开发者。
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch