PromptSentinel
LLM 提示词安全防护 · 安检门
连接中…

在大模型前的安检门

PromptSentinel 是一个纯开源、可自托管、数据不出域的 LLM 提示词安全防护平台:进模型前验输入、出模型前验输出,并对系统提示词做防泄露加固与逃逸检测。Python / Java / Go / JavaScript 四语言地道接入,业务端零额外依赖。

1.0
召回率 recall
0.0
误报率 FPR
0.05ms
p50 延迟
Apache-2.0
开源许可
四道防线 · 纵深互补
① 加固写法

构建期

指令层级 + 不复述条款 + 外部内容隔离 + 注入唯一 canary 哨兵。降低被套出概率。

② 输入检测

请求时

注入短语启发式 + 受保护标识符;不可信外部内容用更严阈值,正面应对间接注入。

③ canary 逃逸

返回前

输出含 canary = 系统提示词逐字泄露,确定性拦截、零误报。

④ 标识符检测

返回前

输出含 Action ID/schema 等 = 改写复述泄露;另加 PII/secrets。

方法论 · 三层纵深防御
提示词层(加固)
把安全规则写进系统提示词最高优先级段;概率性预防。
检测层(本服务)
输入/输出安检门 + canary;确定性兜底 + 可选 ML/LLM 语义增强。
架构层(平台)
最小权限、只读/RLS、egress 管控、HITL —— 硬边界,本服务不替代
对齐 OWASP LLM Top 10 (2025)
编号威胁对应防线
LLM01提示词注入(直接/间接)② 输入检测
LLM02敏感信息泄露④ 标识符 + 输出 PII
LLM05不当输出处理输出检测
LLM06过度代理架构层兜底
LLM07系统提示泄露① 加固 + ③ canary
诚实边界:提示词层与检测层是纵深防御的概率性环节,可被语义改写/对抗后缀绕过,不能根治注入。受控语料指标 ≠ 真实对抗能力(本门户的 LLM 红队即实证可绕过)。越权与数据外泄等硬指标必须由架构层兜底。
① 构建期 · 加固系统提示词 + 种 canary
canary 会自动用于下方③输出检测
② 请求时 · 输入检测(进模型前)
② 输入
③ canary
④ 标识符
输出 PII
③④ 返回前 · 输出检测(canary 逃逸 + 标识符 + PII)
标准接入 · 三步流程
① 构建期
build → hardened + canary(存好)
② 请求时
screen/input → 不通过返 refusal,不调模型
调用大模型
system = hardened_system_prompt
③ 返回前
screen/output(带 canary) → 返回 text
五步上手(各团队各自部署)
复制工程
service/ 复制到你团队仓库
改一个文件
sentinel.config.yaml 填团队名与受保护标识符
自检
python -m app.selfcheck 全 PASS
部署容器
docker compose up -d,改 yaml 后 restart 即生效
接入链路
用 SDK 或纯 HTTP 三步调用
四语言一致的 guard() 三步 helper
# pip install -e sdks/python
from promptsentinel import Client
c = Client("http://localhost:8000")
out = c.guard(
    user_input="查设备状态",
    call_model=lambda system: my_llm(system, "查设备状态"),
)
print(out.text)  # 放行原文 或 拒绝话术
本门户的前端正是该模式的活样例:浏览器只调本 BFF 的 /api/*,由 BFF 服务端代理到 Guard —— Guard 地址与凭证不暴露给浏览器。
实时 Benchmark · 在运行中的 Guard 上回放红蓝对抗语料

把内置语料(攻击 + 良性,含易误报控制样本)逐条发给运行中的 Guard,现场计算指标。数字真实、可复现。

威胁模型对齐评测 · 公开数据集按防线映射

关键:不要只看一个通用注入集。把公开集映射到 PromptSentinel 的各条防线——主线是"系统提示/密钥套取"(gandalf)。下表均为确定性基线(零 ML)在公开集上的真实召回,对照自家过拟合指标。

加载中…
公开评测数据集 · 用真实对抗数据替代自家语料

内置 36 条语料只用于冒烟/演示(规则按它手写 → 过拟合,不能当真实效力)。要评估真实防护力,应在下列公开数据集上跑分(自托管、可离线)。按防线分组:

数据集侧重防线规模(约)说明
deepset/prompt-injections② 注入~660注入/良性二分类,多语言;最直接,适合 ② 分类评测
Lakera PINT② 注入~3k注入基准,含"硬良性"样本专测误报(防过拟合)
Lakera/gandalf②①③ 套取~1k来自 Gandalf 游戏的"诱导无视指令/套取"提示
TensorTrust② 注入攻防数万提示词提取 + 劫持的攻防对(众包游戏)
In-the-Wild Jailbreak② 越狱~1.4k 越狱真实世界收集的 DAN 类越狱(TrustAIRLab,"Do Anything Now")
JailbreakBench② 越狱基准100 behaviors标准化越狱基准 + 产物/judge,可比对
HarmBench② 自动红队数百 behaviors标准化自动红队/拒答评测框架
AdvBench (GCG)② 对抗后缀520有害行为 + 对抗后缀攻击源(测确定性规则的盲区)
HackAPrompt② 注入/越狱~60 万全球竞赛众包,规模最大、攻击花样最杂
Meta CyberSecEval② 注入套件含 prompt-injection 测试集(PurpleLlama)
garak② 漏洞扫描探针套件非数据集:直接对你的端点跑注入/泄露探针
ai4privacy/pii-masking-200k④ 输出 PII20 万评测输出端 PII 检测/脱敏(对应防线④)
ToxicChat②④ 越狱/毒性~1 万真实对话,带 jailbreak 标注
⚠️ 越狱/有害行为类数据集含有害内容,仅用于评测检测器,不得用于生成有害内容;务必遵守各数据集许可与使用条款。链接以各官方仓库为准,可能随上游更新而变化。
评测方法论(避免再次"自己考自己")
按防线分集
② 注入/越狱、④ 输出 PII/泄露、①③ 系统提示词提取分别取对应数据集。
回放 + 分集报指标
把样本过 Guard,报 per-dataset recall(攻击拦截)/FPR(良性误拦)/F1/延迟。
Shadow 量真实 FPR
先只记录不拦截,用真实良性流量量误报,再定阈值/精简词表(如去掉 schema 这类常见词)。
勿在评测集上调参
规则/阈值不能按评测集 tune,否则又是过拟合;留出 holdout。
对比 ML 层
use_llm_guard(llm-guard / Prompt Guard 2),与确定性层同集对比,量语义鲁棒性增益。
持续红队回灌
python -m redteam.llm_redteam 发现的绕过样本固化进语料,定期回归。
落地建议:用 redteam/corpus.py 的同款 schema 写一个 load_dataset() 适配器,把上述数据集映射成 {label, surface, text},即可复用现有 benchmark/遥测管线在公开集上跑分。
监控遥测 · 安检门的黄金信号(Golden Signals)

面板数据来自本 BFF 对每次 screen 调用的进程内埋点(只记判定元数据,绝不记录正文/凭证)。这是「如何在大模型前给安检门做可观测」的方法论范例 —— 生产应导出到 Prometheus/OpenTelemetry。

放行 vs 拦截
触发原因 Top(reason 分类)
暂无数据,点「生成合成负载」或去 Demo 跑几次。
最近全链路追踪 · 点击回放(追踪 → 指标闭环)
暂无追踪。去「实时 Demo」验输入/验输出会产生 trace。
判定时间线(最近 ·绿=放行 红=拦截)
近期事件(不含正文)
时间阶段来源判定risk原因ms