近日,Fireworks AI宣佈推出一種全新的安全機制——安全分詞(safe_tokenization),旨在徹底解決提示注入問題,為所有開放模型提供保護。提示注入是當前大型語言模型推理服務中的一個普遍隱患:用户輸入中的文本字符串可能被分詞器誤編碼為模型的控制令牌,從而篡改系統提示或角色邊界。Fireworks通過引入一個簡單的布爾參數,實現了對提示注入的有效防禦。
Fireworks的首席科學家在博客文章中詳細闡述了這一問題的根源。他指出,大多數開放模型使用HuggingFace分詞器,其標準流程是:首先通過Jinja聊天模板將整個對話渲染成一個字符串,然後對該字符串進行編碼。在這個過程中,用户文本與模板中的控制令牌混在一起,分詞器無法區分哪些字節來自模板、哪些來自用户。因此,如果用户輸入恰好包含模型的控制令牌字符串(如<|im_start|>等),就會被編碼為真實的控制令牌,從而改變模型的輸出行為。
文章以Kimi K2.6模型為例,演示了一個完整的攻擊過程。攻擊者在用户消息中嵌入偽造的系統角色切換指令,使得原本鎖定英語的系統提示被覆蓋為西班牙語。實驗顯示,當安全分詞關閉時,模型確實遵循了攻擊者的西班牙語指令;而開啓安全分詞後,模型仍然遵守原始的英語規則。這個差異在日誌概率(logprobs)中可量化驗證。
安全分詞的工作原理涉及兩個層面的修復。在模型加載階段,系統掃描完整的詞彙表(包括特殊令牌和添加令牌),並預處理聊天模板,確保控制令牌與用户插值內容分離。在請求處理階段,模板中的結構令牌按原樣編碼為真實令牌ID,而用户文本的每一段都經過專門的分詞步驟,將任何可能構成控制令牌的字節拆分為子詞單元。由於兩個路徑在設計上保持一致,攻擊者無法在模板與用户內容之間找到縫隙。
Fireworks強調,安全分詞對正常用户輸入完全透明:如果用户內容不包含控制令牌字符串,安全路徑與默認路徑產生的令牌ID完全相同。此外,該機制計算成本極低,無需模型重載或額外網絡跳轉。用户只需在API請求中添加"safe_tokenization": true,即可啓用這一保護。所有Fireworks支持的開放模型(包括DeepSeek、Kimi、Qwen、Llama、GLM等)均已支持該功能,流式與非流式補全均適用。
業界普遍認為,提示注入是當前AI推理平台面臨的最大安全隱患之一。Fireworks的安全分詞方案為行業提供了一個簡潔而有效的解決方案。正如文章所言:“生產環境下的推理必須能夠承受惡意用户內容的攻擊。safe_tokenization: true就是Fireworks在令牌層面做出這一保證的方式——這樣,你的系統提示,而不是別人的,才能定義你的產品。”