近日,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在令牌层面做出这一保证的方式——这样,你的系统提示,而不是别人的,才能定义你的产品。”