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绕过, 逆向工具