nakata-app/promptguard

GitHub: nakata-app/promptguard

一个不依赖 LLM-as-judge 的 Prompt 注入检测输入门,通过规则引擎和分类器在用户输入到达模型前评估风险并决定放行、警告或拦截。

Stars: 0 | Forks: 0

# promptguard **在 Prompt 注入 / 越狱尝试到达您的 LLM 之前将其检测出来。** ## 解决的问题 `halluguard` 会检查 LLM 的**输出**是否由您的文档支持。但是,如何阻止用户发送如下输入: ……从而完全绕过安全框架? 这就是 **Prompt 注入**(在 RAG 中,如果恶意文本存在于检索到的文档中而不是用户消息中,也称为“间接注入”)。这是 LLM 安全问题中攻击面最活跃的一个。 `promptguard` 是**输入门**:在用户文本发送给模型之前对其进行分类,评估风险,可选择重写或拦截。 ## 它不是什么 - **不是内容过滤器。** “仇恨言论检测”是另一款产品(且带有政治色彩)。Promptguard 的范围仅限于**指令覆盖**模式。 - **不是绝对保证。** Prompt 注入检测是一场活跃的军备竞赛;预期对已知模式的召回率为 80-90%,对未知模式则更低。 - **不是 LLM-as-judge。** 与 halluguard 面临的约束相同:使用确定性分类器 + 精心策划的规则集,而不是“问 GPT-4 这看起来是否糟糕”。 ## API 设计草图 ``` from promptguard import PromptGuard guard = PromptGuard( rules="default", # or path to a custom YAML rule pack classifier="protectai/deberta-v3-base-prompt-injection", # any HF cross-encoder threshold=0.7, ) verdict = guard.check(user_input="Ignore all previous instructions ...") # Verdict { # risk_score: 0.94, # matched_rules: ["instruction_override", "system_prompt_extraction"], # classifier_score: 0.97, # suggested_action: "BLOCK", # PASS | WARN | BLOCK # } ``` ## 检测层 1. **基于规则** — 快速、确定、透明。使用正则表达式 / token 模式匹配已知的攻击惯用语(“ignore previous instructions”、“jailbreak”、“DAN”、“system prompt:”、角色互换标记、base64 包装的指令等)。 2. **基于分类器** — 在已知注入语料库上微调的 HF cross-encoder(例如 `protectai/deberta-v3-base-prompt-injection`)。能捕获规则遗漏的释义攻击。 3. **间接注入模式**(RAG) — 当输入是检索到的文档而不是用户消息时,会应用额外的模式(URL 渗透、图像 alt-text 中的隐藏指令等)。 默认情况下两层都会运行。也可以单独配置任何一层(`rules_only=True`,`classifier_only=True`)。 ## 与集群组合 ``` user input → promptguard ────PASS──→ LLM ────→ halluguard │ │ ▼ ▼ (BLOCK) (HALLUCINATION_FLAG) ``` 总结:**输入门 (promptguard) + 输出门 (halluguard) + 开放世界验证器 (truthcheck) + 检索 (adaptmem) = 无 LLM-as-judge 的安全栈。** ## 待定设计问题 1. **规则包格式。** YAML / TOML / JSON?是否需要版本控制?是否允许用户扩展? 2. **分类器选择。** 默认使用 ProtectAI 的 deberta-injection 模型(经过验证),还是自行训练一个更小的模型以减小安装体积? 3. **操作语义。** PASS / WARN / BLOCK — 含义明确。但在操作层面 WARN 代表什么?是给 LLM 看到的带标记的输入加注,还是作为附加元数据提供给调用方的 middleware? 4. **多语言。** ProtectAI 的模型主要针对英语。需要覆盖土耳其语 / 西班牙语 / 普通话。规则包中有多少内容是特定于某种语言的? 5. **重写模式。** 一些用户希望**消除危险性**而不是直接拦截——例如,将用户输入包裹在 `...` 标签中以破坏指令覆盖语法。将其内置在 promptguard 中还是留给调用方处理? 6. **校准语料库。** 需要一个包含以下内容的基线集:(1) 已知攻击(jailbreakchat 风格),(2) 看起来像攻击的良性输入(“我该如何绕过自己 API 的身份验证”)。是否需要构建 / 策划? ## 状态 Pre-v0.1 阶段。当前 README 即为设计文档。v0.0 仅发布类型和骨架类。v0.1 将落地规则层并集成首个分类器。 ## 许可证 MIT(计划中)。
标签:AI安全网关, API防护, CISA项目, DeBERTa分类器, HuggingFace, Jailbreak Detection, NLP安全, ProtectAI, RAG安全, Red Canary, 云计算, 企业级AI安全, 多平台, 大模型输入过滤, 幻觉防御, 指令重写拦截, 提示词注入防御, 提示词防火墙, 文本风险评分, 无LLM裁判, 正则匹配, 深度学习文本分类, 瑞士军刀, 确定性防御, 规则引擎, 越狱检测, 跨编码器, 输入门控, 逆向工具