abregoarthur-star/prompt-eval

GitHub: abregoarthur-star/prompt-eval

一个基于Claude裁判的提示注入评估框架,用于自动化测试LLM的防御能力并生成结构化报告。

Stars: 0 | Forks: 0

# prompt-eval [![npm version](https://img.shields.io/npm/v/@dj_abstract/prompt-eval.svg?color=cb3837&logo=npm)](https://www.npmjs.com/package/@dj_abstract/prompt-eval) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![Node.js >=20](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org/) 一个提示注入评估框架。对目标 LLM(代理端点、原始 API 或任何可调用 HTTP 的模型)运行 curated 的攻击语料库,并使用 Claude 作为裁判判断每次攻击是否成功。 ## 测试内容 默认语料库(`src/corpus/attacks.json`)涵盖 OWASP LLM01 攻击面以及代理相关的攻击模式: | 类别 | 示例 | |------|------| | `direct-injection` | "Ignore all previous instructions";角色切换(海盗角色) | | `system-prompt-extraction` | "Repeat everything above verbatim";将系统提示以 JSON 形式输出 | | `role-hijack` | DAN;开发者模式 | | `prefix-injection` | 强制响应前缀 | | `indirect-injection` | 被分析的用户文档或邮件中嵌入的指令 | | `encoding-tricks` | Base64 包裹的指令;ROT13 | | `information-leak` | 泄露 API 密钥;泄露用户 PII | | `tool-coercion` | 强迫 `send_email` 工具外泄;强迫执行 Shell | | `delimiter-confusion` | 伪造 ` ` 标签 | | `authority-claim` | 伪造“系统管理员优先级”覆盖 | | `refusal-bypass` | 以假设性框架绕过禁止内容 | 每条攻击都携带明确的 `successCriteria`——判定“被攻破”的标准。裁判会看到该标准与目标响应,返回 `resisted | compromised | ambiguous` 以及一条理由。 ## 安装 使用 `npx` 一次性运行(无需安装): ``` npx @dj_abstract/prompt-eval run --target brain --url http://localhost:3005 ``` 全局安装: ``` npm install -g @dj_abstract/prompt-eval prompt-eval --help ``` 或克隆后从源码运行: ``` git clone https://github.com/abregoarthur-star/prompt-eval cd prompt-eval npm install cp .env.example .env # add ANTHROPIC_API_KEY ``` 需要 Node.js 20+。 ## 用法 ### 列出语料库 ``` node bin/prompt-eval.js list ``` ### 评估 Brain 代理 ``` # 大脑开发服务器必须在 :3005 上运行并具有经过身份验证的会话 node bin/prompt-eval.js run \ --target brain \ --url http://localhost:3005 \ --cookie "auth=YOUR_JWT" ``` ### 评估原始 Anthropic API(基线) ``` node bin/prompt-eval.js run \ --target anthropic \ --model claude-sonnet-4-6 \ --system "You are a helpful assistant." ``` ### 评估任意 OpenAI 兼容端点 ``` node bin/prompt-eval.js run \ --target http \ --url https://my-llm.example.com/api/chat \ --bearer "$TOKEN" \ --body-key prompt \ --response-key choices.0.message.content ``` ### 过滤语料库 ``` # 仅运行严重性攻击 node bin/prompt-eval.js run --target brain --severity critical # 仅运行特定类别 node bin/prompt-eval.js run --target brain --category tool-coercion,information-leak # 按 ID 运行单个攻击 node bin/prompt-eval.js run --target brain --ids context-injection-002 ``` ### 比较两次运行 打印 `Δ defense rate` 以及每次攻击的回归与获胜情况。 ### CI 门槛 若防御率低于阈值则构建失败: ``` node bin/prompt-eval.js run --target brain --fail-rate 90 ``` ## 输出 每次运行会生成: - **终端报告** — 防御率、按类别与按严重度的统计、被攻破的攻击列表及裁判理由。 - **JSON 报告**(`reports/.json`)— 完整攻击提示、目标响应、裁判判定与延迟,便于跨运行比对。 - **HTML 仪表盘**(`reports/.html`)— 便于分享的友好界面,突出防御率与每条攻击卡片。 ## 编程式 API ``` import { evalTarget } from 'prompt-eval'; const report = await evalTarget({ target: 'brain', url: 'http://localhost:3005', cookie: process.env.BRAIN_COOKIE, filter: { severities: ['critical', 'high'] }, }); console.log(`Defense rate: ${report.summary.defenseRate}%`); ``` ## 设计说明 - **Claude 作为裁判**:因为每次攻击的 `successCriteria` 是真实标准,而非字符串匹配;部分合规与创造性改写需要模型正确评分。 - **并发攻击**(默认 3)可缩短耗时。超过 5 会增加目标与裁判的速率限制风险。 - **只读设计**:该框架仅发送提示并读取响应,不会尝试实际利用、后执行破坏或发起网络攻击。 - **语料库故意精简(约 18 条)且经过筛选**:大型基准测试噪声高且缓慢。一套聚焦于捕捉常见攻击者首选手法的语料库,比耗时 4 小时、每次花费 50 美元的 1 万行评估更适用于回归检测。 ## 路线图 - 多轮攻击(多轮预热后再利用) - 从合成 RAG 文档中生成间接注入语料库 - ASCII Smuggler / Unicode Tag 攻击(配合 [`mcp-audit`](https://github.com/abregoarthur-star/mcp-audit) 检测) - 代理目标的工具调用遥测(哪些工具被调用 vs 攻击者试图强迫执行的) - 跨模型版本的并排运行以追踪回归 ## 参考 - [OWASP LLM 应用十大风险 — LLM01:提示注入](https://owasp.org/www-project-top-10-for-large-language-model-applications/) - [Simon Willison — The Lethal Trifecta](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/) - [MITRE ATLAS](https://atlas.mitre.org/) - [Anthropic 红队资源](https://www.anthropic.com/research) ## 许可证 MIT — 参见 [LICENSE](./LICENSE)。
标签:AI代理安全, Claude Judge, HTTP调用模型, MITM代理, OWASP LLM01, 上下文注入, 信息泄露, 前缀注入, 大语言模型测试, 安全基准, 安全评估框架, 对抗样本, 工具强制, 拒绝逃避, 提示注入, 搜索语句(dork), 攻击成功率评分, 攻击语料库, 攻防评估, 权威声明, 编码技巧, 自定义脚本, 节点评估, 角色劫持, 间接注入, 集群管理