近日,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在令牌層面做出這一保證的方式——這樣,你的系統提示,而不是別人的,才能定義你的產品。”