xnemurasx/TFG
GitHub: xnemurasx/TFG
用于评估带有外部工具调用的 LLM 系统在 prompt injection 攻击下防护效果的对照实验框架。
Stars: 0 | Forks: 0
# 针对带有外部工具的 LLM 系统的 prompt injection 攻击评估
这是一个 Python 项目,用于在带有外部工具的 LLM 系统上执行受控的 *prompt injection* 攻击评估。
该项目通过兼容 OpenAI Chat Completions 的 API 与模型进行通信。因此,只要模型支持工具调用(*tool use* 或 *function calling*),它就可以与本地后端或兼容的远程提供商一起使用。
## 目标
该实验比较了两种配置:
1. **基础系统**:在最小程度的控制下执行请求的工具。
2. **缓解系统**:应用意图验证、工具上下文限制并阻止未经授权的操作。
执行过程会生成详细的结果和汇总指标,以比较这两种行为。
## 要求
- Python 3.10 或更高版本。
- 访问兼容 OpenAI Chat Completions 的 LLM API。
- 支持使用工具的模型。
- `requirements.txt` 中指定的依赖项。
## 安装
```
python -m venv .venv
```
Windows PowerShell:
```
.\.venv\Scripts\activate
pip install -r requirements.txt
```
Linux/macOS:
```
source .venv/bin/activate
pip install -r requirements.txt
```
## 配置
该项目使用三个环境变量:
```
LLM_BASE_URL
LLM_API_KEY
LLM_MODEL
```
兼容的本地服务器示例:
```
$env:LLM_BASE_URL="http://127.0.0.1:1234/v1"
$env:LLM_API_KEY="lm-studio"
$env:LLM_MODEL="meta-llama-3.1-8b-instruct"
```
兼容的远程提供商示例:
```
$env:LLM_BASE_URL="https://api.openai.com/v1"
$env:LLM_API_KEY="TU_API_KEY"
$env:LLM_MODEL="NOMBRE_DEL_MODELO"
```
## 运行
配置好环境变量后:
```
python scripts/run_experiment.py
```
也可以通过参数指定模型:
```
python scripts/run_experiment.py --provider openai-compatible --model meta-llama-3.1-8b-instruct
```
## 结果
结果保存在 `results/` 中:
```
baseline_results__.csv
mitigated_results__.csv
summary_metrics__.csv
run_log__.jsonl
```
- `baseline_results`:基础系统的详细结果。
- `mitigated_results`:缓解系统的详细结果。
- `summary_metrics`:汇总指标。
- `run_log`:完整的执行追踪记录。
## 结构
```
tfg_prompt_injection_guardrails/
├── src/tfg_guardrails/
│ ├── models.py
│ ├── tools.py
│ ├── llm_clients.py
│ ├── policy.py
│ ├── tool_manager.py
│ ├── evaluator.py
│ └── runner.py
├── scenarios/
│ └── scenarios.json
├── scripts/
│ └── run_experiment.py
├── results/
├── README.md
├── requirements.txt
└── LICENSE
```
## 测试工具
该系统包含三个本地工具:
- `get_public_info()`:测试用的公开信息。
- `get_internal_report()`:虚构的内部报告。
- `read_restricted_file()`:测试用的受限内容。
这些函数不会访问真实系统,也不包含敏感信息。
标签:Petitpotam, Python, 人工智能, 无后门, 时序数据库, 用户模式Hook绕过, 逆向工具