🦙Reddit r/LocalLLaMA•較早收集於 8h
Qwen 3.5 聊天模板快取問題曝光
💡修正 Qwen 3.5 工具呼叫中的隱藏效能殺手—每回合節省 10k+ token(30字元)
⚡ 30-Second TL;DR
有什麼變化
聊天模板中空 <think> 區塊導致快取遺漏
為什麼重要
提升本地 Qwen 3.5 部署中工具代理的延遲和運算效率。對依賴推論引擎前綴快取的工作流程至關重要。
下一步行動
在除錯快取問題前,以一行修正修補 Qwen 3.5 聊天模板。
誰應關注:Developers & AI Engineers
關鍵要點
- •聊天模板中空 <think> 區塊導致快取遺漏
- •工具使用後重新處理數萬 token
- •修正:在模板迴圈新增 'and reasoning_content' 條件
- •跨 oMLX.ai、llama.cpp 和 OpenCode.ai 等代理重現
- •官方 Qwen3.5 Hugging Face 儲存庫開 PR
🧠 深度解析
AI-generated analysis for this event.
🔑 增強重點摘要
- •此問題源於 Qwen 3.5 的 Jinja2 聊天模板在處理工具呼叫(Tool Call)時,未能正確處理推理模型(Reasoning Model)特有的
<think>標籤,導致在多輪對話中產生不必要的空標籤。 - •快取遺漏(Cache Miss)的根本原因在於 KV 快取(KV Cache)的鍵值依賴於輸入提示的精確匹配,空
<think>區塊的動態插入導致了提示詞雜湊值(Hash)的改變,迫使模型重新計算整個上下文。 - •社群開發者指出,此問題不僅影響推理效能,還會顯著增加 API 呼叫的延遲與計算成本,特別是在長上下文(Long-context)場景下,效能損失可達數倍。
📊 競品分析▸ Show
| 特性 | Qwen 3.5 (受影響) | DeepSeek-R1 | Llama 3.3 |
|---|---|---|---|
| 推理架構 | 混合式推理 | 原生推理 | 基礎模型 |
| 聊天模板 | Jinja2 (含 | 專用推理模板 | 標準 ChatML |
| 授權 | Apache 2.0 | MIT | Llama 3 授權 |
| 基準測試 | 高效能/長上下文 | 推理能力領先 | 廣泛生態支援 |
🛠️ 技術深入
- •問題核心:Jinja2 模板中的
{% if message.reasoning_content %}邏輯判斷在工具呼叫後,因reasoning_content為空字串或 None,導致模板引擎渲染出<think></think>結構。 - •KV 快取機制:在 llama.cpp 等推理引擎中,KV 快取是基於 Token ID 序列的。即使是空標籤,也會被 Tokenizer 轉換為特定的 Token ID,從而導致快取失效。
- •修正方案:將模板邏輯修改為
{% if message.reasoning_content or (message.reasoning_content is not none and message.reasoning_content != '') %},確保僅在存在實際推理內容時才渲染<think>標籤。
🔮 前景展望AI analysis grounded in cited sources
推理模型標準化將加速
此次事件凸顯了推理模型在聊天模板定義上缺乏統一標準,將推動社群制定針對
<think> 區塊的通用處理規範。推理引擎將強化模板驗證機制
為避免類似的快取效能問題,主流推理框架(如 vLLM, llama.cpp)將在載入模型時增加對聊天模板輸出一致性的預檢查。
⏳ 時間線
2025-12
Qwen 3.5 系列模型正式發布,引入原生推理能力與 `<think>` 標籤支援。
2026-03
社群開發者開始在 GitHub 與 Reddit 回報 Qwen 3.5 在工具呼叫場景下的效能異常。
2026-04
開發者定位問題根源為聊天模板的快取遺漏,並於 Hugging Face 提交修正 PR。
📰
AI 週報
閱讀本週精選 AI 大事摘要 →
👉相關動態
AI 策展新聞聚合。所有內容版權歸原始發布者所有。
原始來源: Reddit r/LocalLLaMA ↗