shadyxur/AI-NPC
GitHub: shadyxur/AI-NPC
研究LLM驱动游戏NPC的提示注入防御与安全效用权衡。
Stars: 0 | Forks: 0
# 在不牺牲生成效用的情况下保障 LLM 智能体安全
APA 7 Citation:
## 概述
本仓库包含用于研究 LLM 驱动游戏 NPC 中提示注入安全性的全部实验代码、分析脚本和研究数据。该研究使用 Google Gemini 2.5 Flash,在 750 次受控试验中对三种安全配置(WEAK、STRONG、OPTIMAL)进行了对抗攻击测试,并以虚构 NPC “Aethelgard the Eternal” 作为测试平台。
关键发现包括:从 WEAK 到 OPTIMAL 配置安全性提升了 33.6 倍,发现了“石墙(Stone Wall)”现象(在过度受限配置中出现),并识别出 250–1000 个字符的响应范围是安全与效用的最佳平衡点。
## 仓库结构
```
repo/
├── Py_code/
│ ├── AiNpcTest_1.py # Adversarial trial runner: conducts attacks, saves results, runs basic analysis
│ ├── AiNpcTest_2.py # Adversarial trial runner: conducts attacks and saves raw data only
│ └── Data analysis code/
│ ├── data_process1.py # Core EDA and visualizations
│ ├── ling_process1.py # LFI computation and visualization
│ ├── ling_process2.py # Security sweet spot analysis
│ ├── compute_statistics.py # All significance tests and confidence intervals
│ ├── lfi_sensitivity.py # LFI weighting sensitivity analysis
│ └── maxlfi.py # Peak LFI diagnostic utility
│
└── research_data/
├── Data analysis results/
│ ├── Figures/ # All generated charts and plots
│ ├── comprehensive_linguistic_forensics.csv
│ ├── lfi_sensitivity_full.csv
│ ├── lfi_sensitivity_summary.csv
│ ├── segmented_security_report.csv
│ ├── stats_asr_by_category.csv
│ ├── stats_asr_by_config.csv
│ ├── summary_categories.csv
│ └── summary_lore.csv
└── Raw data/
└── raw_data.csv # Full 750-trial experimental dataset
```
## 安装
### 前置条件
- Python 3.9+
- Google Gemini API 密钥(仅用于 `Py_code/` 脚本)
### 安装
```
git clone https://github.com/YOUR_USERNAME/YOUR_REPO_NAME.git
cd YOUR_REPO_NAME
pip install -r requirements.txt
```
### API 密钥配置
NPC 实验脚本需要 Gemini API 密钥。请复制示例环境文件并添加你的密钥:
```
cp .env.example .env
```
然后编辑 `.env`:
```
GEMINI_API_KEY=your_api_key_here
```
## 运行实验
### AiNpcTest_1.py
在所有配置上执行对抗攻击,将结果保存为 CSV 和 Excel 文件,并运行基础统计分析:
```
cd Py_code
python AiNpcTest_1.py
```
### AiNpcTest_2.py
执行相同的对抗攻击并保存原始数据文件,但不运行分析:
```
cd Py_code
python AiNpcTest_2.py
```
## 运行分析
所有分析脚本位于 `Py_code/Data analysis code/` 中。运行前,请打开每个脚本并将 `DATA_FILE` 变量中的 `XXX` 替换为 `research_data/Raw data/raw_data.csv` 的路径。
建议按以下顺序运行脚本:
| 脚本 | 用途 | 输出 |
|---|---|---|
| `data_process1.py` | 核心探索性数据分析、按配置和类别的 ASR | `summary_lore.csv`, `summary_categories.csv`, 图形 |
| `compute_statistics.py` | Fisher 精确检验、Wilson 置信区间、Mann-Whitney U 检验、点二列相关 | `stats_asr_by_config.csv`, `stats_asr_by_category.csv` |
| `ling_process1.py` | 计算 LFI 并进行碎片化可视化 | `comprehensive_linguistic_forensics.csv`, 图形 |
| `ling_process2.py` | 安全最佳点与长度分段分析 | `segmented_security_report.csv`, 图形 |
| `lfi_sensitivity.py` | 对 LFI 加权方案的敏感性分析 | `lfi_sensitivity_full.csv`, `lfi_sensitivity_summary.csv` |
| `maxlfi.py` | 在数据集中识别最高 LFI 响应 | 控制台输出 |
预处理结果已提供在 `research_data/Data analysis results/` 中。
## 关键概念
**攻击成功率(ASR):** 成功诱导 NPC 泄露秘密短语的对抗提示比例。
**语言碎片化指数(LFI):** 一种新指标,用于衡量安全失败期间的内部抵抗能力,通过四种标记类型(下划线、类似 Base64 的字符串、德语语义标记、句法错误)的加权模式匹配计算得出。
**石墙(Stone Wall)现象:** 在 STRONG 配置中观察到,该配置实现了完美安全(0% ASR),但响应高度重复且完全一致,丧失了生成效用。
**安全最佳点:** 响应长度在 250–1000 字符范围内显示出最低的漏洞。
## 依赖
请参见 `requirements.txt`。关键依赖包括:
- `google-generativeai` — Gemini API 客户端(仅用于实验脚本)
- `pandas`, `numpy` — 数据处理
- `scipy` — 统计检验
- `matplotlib`, `seaborn` — 可视化
- `python-dotenv` — API 密钥管理
## 许可证
本项目采用 MIT License 授权。详细信息请参见 [LICENSE](LICENSE)。
## 引用
## 联系
关于本研究的问题,请在仓库中打开 Issue。
标签:750次试验, CSV数据, Gemini 2.5 Flash, NPC安全测试, WEAK STRONG OPTIMAL, 响应长度分析, 图表输出, 大语言模型代理, 字符范围, 安全与效用权衡, 安全增强, 安全甜区, 安全配置, 实验代码, 实验研究, 对抗性试验, 提示注入攻击, 提示注入防御, 攻防测试, 数据分析脚本, 游戏AI安全, 源代码安全, 生成式AI安全, 研究数据, 统计显著性, 虚拟机, 逆向工具