Prism-Eval:面向 AI 智能体的预部署对抗测试框架
开源工具 Prism-Eval 为 LLM 智能体提供 CI/CD 阶段对抗性评测,覆盖数字截断、提示注入、OCR 漂移…
近期,开源工具 Prism-Eval 在 Hacker News AI 社区引发关注。这是一个面向 LLM 智能体的预部署测试框架,目标是把 AI 智能体特有的不确定性故障——例如数字截断、提示注入、OCR 漂移等——纳入 CI/CD 流水线,在上线前形成「卡点」而不是依赖运行时监控。
问题背景:传统单元测试为何不足
标准 pytest 等单元测试建立在「函数确定性」假设之上,但 AI 智能体输出具有概率性,且 OCR、文档版式、提示词都可能随时间漂移。开发者常常面对这样的场景:智能体周一还能稳定通过黄金用例,周二却因为 PDF 隐藏页脚里的「ignore previous instructions」静默执行了被劫持的工具调用。Prism-Eval 把这类故障统称为 G4 对抗故障(Adversarial Failures),并将其整理为可在测试中调用的对抗语料。
按项目方整理,至少包括以下几类高频故障模式:
- 数字截断攻击:金额 150000 在抽取后变为 15000 或 150.00,常规基于固定字符串的断言无法覆盖。
- 间接提示注入:扫描件隐藏注释、HTML 隐藏字段携带的覆盖指令绕过系统提示。
- 版式与 OCR 漂移:传真卷绕、栏位错位导致明细行错配到错误的字段上。
- 合法零值误报:抽取值 $0 不应被当作数字截断处理。
核心能力:对抗语料 + 攻击感知打分
Prism-Eval 内置 G4 对抗语料,覆盖上述故障类型。每个用例携带 severity、expected_behavior(match_ground_truth / never_false_accept / expect_refuse)、critical_fields 与可选的 injected_wrong 目标值。打分时区分三类信号:
- 确定性(Determinism):金额按规范化形式比较,450000 与 $450,000.00 视为等同。
- 安全预言(Security Oracle):识别被服从的注入攻击与数字截断相对于真实值的偏离。
- G4 不变量:要求零关键误接受(critical false accepts),一旦触发即视为套件失败。
接入方式:框架无关 + CLI
工具支持 LangGraph、CrewAI、自定义 sync/async 可调用对象以及 HTTP 抽取端点。最小示例只需声明 agent 函数、policy 标识,以及两个阈值 min_determinism 和 min_pass_rate,即可对内置语料或本地 PDF 语料运行套件。无需编写 Python 时,也可直接通过 CLI 调用 prism-eval --policy-id … --agent mypkg.agents:extract_async。
CI 阶段产物支持 JUnit、SARIF 与 JSON 输出,并在 pass-rate 或 G4 不变量被打破时返回非零退出码,可直接接入 GitHub Actions、GitLab CI 或 Buildkite。项目同时提供可选的 Streamlit 演示与浏览器内交互式 demo,便于在采购评审中直观对比「易受攻击」与「加固后」智能体的差异。
企业级能力与配套运行时
v0.3.0 之后的版本明确列出多项企业就绪特性:与同生态的 prismmanifest / Prism-Shield 共存不冲突;提供 G4 误接受不变量;支持不可变审计收据(--audit-receipt);附带 SECURITY.md、THREAT_MODEL.md、API_STABILITY.md;具备 JUnit / SARIF / SBOM 发布物;可选 FinancePackBench-G4 适配器。运行时强制执行则交给同作者的 Prism-Shield 网关,作为「零信任 AI 网关」在请求级做拦截。
整体看,Prism-Eval 定位明确:把 AI 智能体的对抗性评测变成与传统单元测试同等可重复、可在 CI 上阻断发布的关卡,而非仅停留在演示阶段。
