乐于分享
好东西不私藏

Promptfoo:一款把 AI 评测和红队测试合在一起的开源工具

Promptfoo:一款把 AI 评测和红队测试合在一起的开源工具
适合做提示词评测、RAG 对比和 LLM 安全测试的一站式项目

如果你在做 AI 应用、RAG 或 Agent,除了关注效果,安全也得提前补上。Promptfoo 这类工具的价值,不只是比较模型输出,更重要的是能把提示词评测和 AI 红队测试放进同一套流程里,适合拿来做上线前检查和持续评估。

Promptfoo 的模型评测界面,适合做不同模型、不同提示词的横向比较


01. 这工具有什么用

最近看 AI 安全工具时,Promptfoo 这个项目出现的频率挺高。

它不是传统那种 Web 漏洞扫描器。

更准确地说,它是一套围绕大模型应用做评测、对比和红队测试的开源工具。

你可以把它理解成两部分能力合在一起:

  • 一部分是评测,拿来比较不同模型、不同提示词、不同 RAG 方案的输出效果。

  • 一部分是红队测试,拿来扫提示注入、越狱、数据泄露、RAG 污染这类 AI 风险。

它最实用的地方,是把这些动作做成了 CLI 和配置文件流程。

也就是说,你不只是临时测一次,而是可以把测试过程沉淀下来,后面反复跑、批量跑,甚至接到 CI/CD 里跑。

一句话理解:Promptfoo 不是只帮你“看模型答得好不好”,还帮你“看模型会不会出事”。


02. 适合什么人

我觉得下面几类人会比较适合上手:

  1. 在做 AI 应用开发,希望上线前先做一轮质量和安全检查的人。

  2. 在做 LLM 安全评估、提示注入测试、越狱测试的人。

  3. 在做 RAG、Agent 或工作流编排,想持续观察效果和风险的人。

  4. 想把 AI 测试流程接进工程体系,而不是手工零散验证的人。

如果你的主要目标还是传统 Web 漏洞扫描,那这工具不是那个方向。

但如果你关注的是提示词、模型输出、RAG 可靠性和 AI 安全边界,它确实比较对路。


03. 项目入口

项目地址:https://github.com/promptfoo/promptfoo

官方文档:https://www.promptfoo.dev/docs/intro/


04. 安装教程

Promptfoo 官方主推的是 Node.js 路线。

如果你想少踩坑,直接按官方推荐方式来就行。

先准备 Node.js,版本要求是:

  1. ^20.20.0

  2. 或 >=22.22.0

如果你只是想临时试一下,最省事的方式是直接用 npx

npx promptfoo@latest

如果你准备长期使用,也可以全局安装:

npm install -g promptfoo

装完以后,可以先确认一下版本:

promptfoo --version

我个人会更建议第一次先用 npx

这样不用太早折腾全局环境,试完也干净。


05. 基础上手教程

第一次上手,最稳的方式不是自己从零写配置。

最好的办法,是直接跑官方示例。

第一步,生成官方示例:

npx promptfoo@latest init --example getting-started

这条命令会生成一个 getting-started 目录,里面会带上现成的 promptfooconfig.yaml 和示例说明。

第二步,配置模型密钥:

大多数模型提供商都需要 API Key。

如果你先拿 OpenAI 做测试,PowerShell 可以这样设置:

$env:OPENAI_API_KEY="sk-你的key"

第三步,运行评测:

cd getting-startednpx promptfoo@latest eval

这一轮跑完之后,它会根据配置里的 promptsproviders 和 tests 去执行评测。

简单理解,就是把同一批输入分别交给不同模型或者不同提示词方案,再把结果统一拉回来比对。

第四步,查看结果:

npx promptfoo@latest view

它会打开一个可视化页面,你能比较直观地看见不同输出之间的差异。

如果你不想直接用示例,也可以跑交互式初始化:

npx promptfoo@latest init

或者直接走 Web UI:

npx promptfoo@latest eval setup

这一套对第一次接触的人会友好很多。


06. 它在 AI 安全测试里怎么用

Promptfoo 真正让我觉得有意思的地方,不只是评测。

它还有一整套红队测试能力。

官方文档里提到,它可以自动扫描 50 多类漏洞和风险点,里面包括:

  1. jailbreak

  2. prompt injection

  3. RAG poisoning

  4. 数据隐私和安全问题

  5. 合规和内容策略相关风险

而且它不是只丢一批固定测试字符串给你。

它会结合你的应用目标去生成更贴近场景的攻击输入,这一点就比手工试探更像实战测试。

红队报告视图会把漏洞类别、风险等级和修复建议集中展示


07. 红队测试教程

第一步,初始化红队项目:

npx promptfoo@latest redteam setup

这条命令会打开 Web UI,让你一步步填写目标应用信息。

这里有个细节很重要:Purpose 这个字段不要随便写。

你描述得越具体,Promptfoo 生成出来的攻击样本就越贴近你的业务场景。

第二步,配置目标、插件和策略。

在初始化流程里,你会依次配置:

  1. 目标应用或目标模型

  2. 攻击插件

  3. 攻击策略

如果你只是第一次试水,先用默认组合就够了。

最后把生成的配置保存成 promptfooconfig.yaml

第三步,运行红队扫描:

npx promptfoo@latest redteam run

官方说明里提到,这一步会生成数百条对抗输入,并把结果保存到 redteam.yaml,然后再把这些测试用例跑到你的目标上。

第四步,查看红队报告:

npx promptfoo@latest redteam report

报告里你通常能看到几类最有价值的信息:

  1. 漏洞类别

  2. 风险等级

  3. 触发问题的具体输入输出

  4. 对应的缓解建议

这就很适合拿来做安全复盘,也适合给开发或产品团队看。


08. 没有真实接口能不能用

可以。

如果你现在还没有正式的线上接口,也可以直接测试特定 prompts 和模型。

官方支持两类很常见的方式:

  1. 直接测某个模型

  2. 通过 HTTP API 去测你的应用接口

例如,官方文档里给过一个 HTTP 目标示例:

targets:    - id: https        label: 'travel-agent'        config:            url: 'https://example.com/generate'            method: 'POST'            headers:                'Content-Type': 'application/json'            body:                myPrompt: '{{prompt}}'purpose: 'The user is a budget traveler looking for the best deals.'

这意味着你既可以把它当成模型评测工具,也可以把它当成 AI 应用红队工具。

这一点我觉得很实用。


09. 写在最后

如果只看能不能跑起来,Promptfoo 的门槛不算特别高。

它比较友好的点,是官方示例和命令都很完整。

你只要愿意按文档走,第一次通常就能把流程打通。

真正有价值的是,它把“效果评测”和“安全测试”放在了一起。

很多团队平时只看效果,不看风险;或者只想着做安全,但没有稳定的评测基线。

Promptfoo 正好把这两件事接上了。

如果你的团队已经开始把 AI 能力接进业务流程,那像 Promptfoo 这样同时覆盖评测与红队测试的工具,值得尽早纳入日常测试链路。越早把效果验证和安全验证放在一起,后面的返工成本通常就越低。