Qwen-3 對話模板分析
Qwen-3 引入了靈活且高效的對話模板
Qwen-3 模型由 Qwen 提供,其對話模板比其前身 Qwen-2.5 和 QwQ 更為複雜。這個更新後的 Jinja 模板在模型如何處理推理、管理對話上下文以及與工具互動方面引入了關鍵改進,使代理工作流(agentic workflows)更加可靠且高效。
透過 enable_thinking 旗標實現可選推理
Qwen-3 允許使用者透過 enable_thinking 旗標來切換推理能力,不再像早期模型那樣強制執行思維鏈(chain-of-thought)模式。
當 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。
移除預設系統提示詞
與使用預設系統提示詞(例如:「你是 Qwen,由阿里巴巴雲開發。你是一個得力的助手」)的 Qwen-2.5 系列不同,Qwen-3 和 QwQ 在發布時不帶有預設系統提示詞。儘管如此,這些模型在被使用者詢問時,仍能準確識別其開發者。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch