Jailbreak 防护
Semantic Router 内置了 Jailbreak 检测,可识别并拦截绕过安全措施的对抗性提示。支持两种互补的检测方法:
- BERT 分类器 — 使用微调模型快速、高精度地检测单轮攻击
- 对比嵌入 (Contrastive) — 用于捕捉多轮渐进式攻击(“温水煮青蛙”)。即单条看似无害的消息,但在连续对话中诱导模型越界。
这两种方法都存在于 signals.jailbreak 信号层中,并且可以在路由决策中通过 OR/AND 逻辑进行组合。
概述
Jailbreak 防护系统:
- 检测对抗性提示和 Jailbreak 尝试
- 拦截恶意请求,防止其到达 LLM
- 识别提示注入和操控技术
- 提供安全决策的详细说明
- 集成信号驱动决策,实现增强安全性
Jailbreak 检测类型
系统可识别以下攻击模式:
直接 Jailbreak
- 角色扮演攻击("你现在是 DAN...")
- 指令覆盖("忽略所有之前的指令...")
- 安全绕过尝试("假装你没有安全准则...")
提示注入
- 系统提示提取尝试
- 上下文操控
- 指令劫持
社会工程
- 权威冒充
- 紧迫感操控
- 虚假场景构造
配置
Jailbreak 检测现在是信号层中的一等公民信号。在 signals.jailbreak 下定义命名的 jailbreak 规则,然后在 decisions 中通过 type: "jailbreak" 引用它们。
基础 Jailbreak 防护
# router-config.yaml
# ── Prompt Guard 模型 ─────────────────────────────────────────────────────
prompt_guard:
enabled: true
use_modernbert: false
model_id: "models/mom-jailbreak-classifier"
jailbreak_mapping_path: "models/mom-jailbreak-classifier/jailbreak_type_mapping.json"
threshold: 0.7
use_cpu: true
# ── 信号 ──────────────────────────────────────────────────────────────────
signals:
jailbreak:
- name: "jailbreak_detected"
threshold: 0.7
description: "标准 Jailbreak 检测"
# ── 决策 ──────────────────────────────────────────────────────────────────
decisions:
- name: "block_jailbreak"
priority: 1000
rules:
operator: "OR"
conditions:
- type: "jailbreak"
name: "jailbreak_detected"
plugins:
- type: "fast_response"
configuration:
message: "很抱歉,该请求违反了使用政策,无法处理。"