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安全, 研究数据, 统计显著性, 虚拟机, 逆向工具