本仓库包含我们论文的官方实现:
超越提示词:通过模拟审核轨迹越狱函数调用型 LLM
如果您认为本仓库对您的研究有所帮助,请考虑引用我们的论文。欢迎通过 GitHub Issues 提出问题、报告缺陷以及反馈可复现性问题。

.
├── install.sh # Installation script for setting up the environment and dependencies
├── main.py # Main evaluation entry point
├── demo.ipynb # Minimal working example
├── requirements.txt # Python dependencies
├── data/
│ ├── SafeBench-Tiny.txt # Default benchmark
│ └── JailbreakBench.txt # Optional benchmark
├── figures/
│ ├── pipline.jpg # Framework overview
│ ├── main_res1.jpg # Main result figure
│ └── main_res2.jpg # Main result figure
├── utils/
│ ├── config.example.json # Example API configuration
│ ├── eval_h_cot.py # External evaluation utility
│ ├── fake_tool_call_noharmful.json
│ ├── moderation_generator.py
│ └── moderation_validator.py
└── output/ # Checkpoints and evaluation results
我们提供了一个安装脚本,用于自动设置 Python 环境并安装所有必需的依赖项。
chmod +x install.sh
./install.sh
安装完成后,激活虚拟环境:
source .venv/bin/activate
或者,你也可以使用 Conda 手动创建环境:
conda create -n SMT python=3.12
conda activate SMT
pip install -r requirements.txt
从示例文件创建 utils/config.json:
cp utils/config.example.json utils/config.json
一个最小配置文件应遵循以下格式:
{
"llm_api": {
"base_url": "https://your-api-endpoint/v1",
"api_key": "YOUR_API_KEY"
},
"local": {
"base_url": "http://localhost:1234/v1",
"api_key": "YOUR_LOCAL_API_KEY"
}
}
这两个条目分别对应:
llm_api:面向商业模型的默认 OpenAI 兼容 API 端点。local:本地 OpenAI 兼容推理端点,用于选定的本地模型。打开 main.py,修改文件开头附近的实验配置:
DATA_FILE = "SafeBench-Tiny.txt"
# DATA_FILE = "JailbreakBench.txt"
TARGET_MODELS = [
"gpt-4o-2024-11-20",
# "gpt-5.4-2026-03-05",
# "qwen3-max-2026-01-23",
# "gemini-3-flash-preview",
# "deepseek-v4-flash",
# "claude-sonnet-4-5-20250929",
]
使用对 utils/config.json 中配置的 API 端点有效的模型标识符。
默认参数在 main.py 中定义:
MAX_THREADS = 1
MAX_ROUNDS = 3
TURNS_NUM = 3
RESET = False
它们的含义如下:
| 参数 | 描述 |
|---|---|
MAX_THREADS | 每个目标模型的最大并发工作线程数 |
MAX_ROUNDS | 最大外层重试轮数 |
TURNS_NUM | 每个样本的最大多轮交互尝试次数 |
RESET | 是否在评估前丢弃已有的检查点 |
设置:
RESET = True
为所选模型启动一次全新运行。将其保留为 False 以从现有检查点恢复。
python main.py
对于每个目标模型,脚本会自动执行以下操作:
data/ 加载选定的基准测试。结果保存在以下路径下:
output/attack_checkpoint_<dataset>_<model>.json
例如:
output/attack_checkpoint_SafeBench-Tiny_gpt-4o-2024-11-20.json
每个基准测试项存储的字段类似于:
{
"target_question": {
"success": true,
"queries": 3,
"payload": "...",
"score": 60
}
}
该脚本报告以下指标:
| 指标 | 描述 |
|---|---|
| ASR | 攻击成功率:得分达到配置阈值的样本百分比 |
| Avg.Q | 每个样本平均使用的 API 查询次数 |
| Avg.Score | 所有样本的平均外部评估得分 |
主要的 SMT 实验基于 API,不需要本地 GPU。
MAX_ROUNDS = 3 和 TURNS_NUM = 3 下,SMT 在提前停止前对每个基准样本最多使用 9 次目标模型查询。对于本地部署的模型,额外的 GPU 和内存需求取决于所选模型和推理后端。
商业 LLM API 会持续更新。即使使用相同的模型别名,结果也可能因提供商侧的模型更新、路由行为、安全策略变更、解码设置或临时 API 故障而有所不同。
为提高可复现性:
本仓库中报告的所有实验均于 2026 年 6 月进行。由于模拟验证轨迹包含随机元素、模型输出本质上是随机的,且模型能力和外部检测机制都在持续演进,即使在高层次配置相同的情况下,确切的交互历史和复现结果也可能与此处报告的结果不同。


我们的评估在多个商业函数调用 LLM 和两个安全基准上,将 SMT 与代表性越狱基线进行了比较。
完整的实验设置、基线实现、统计细节和防御分析请参阅论文。
本项目研究安全对齐的函数调用 LLM 系统中的失效模式。代码及相关材料旨在支持:
用户有责任遵守适用法律、机构审查要求、API 提供商条款和负责任披露实践。
我们强烈不建议在未经授权的情况下将此框架部署到生产系统。研究人员应避免在公共仓库中暴露原始有害输出、API 凭据、个人可识别信息或无限制的攻击产物。
如果您觉得本仓库有用,请引用:
@inproceedings{liu2027smt,
title={Beyond the Prompt: Jailbreaking Function-Calling LLMs via Simulated Moderation Traces},
author={Junlong Liu and Haobo Wang and Weiqi Luo and Xiaojun Jia},
booktitle={{IEEE} Symposium on Security and Privacy},
year={2027}
}