一、官方信息
| 项目名称 | Promptfoo |
| 仓库地址 | https://github.com/promptfoo/promptfoo |
| 官方网站 | https://www.promptfoo.dev/ |
| 最新更新 | 2026 年活跃迭代 |
| 项目定位 | 面向 LLM 的 Prompt 回归测试、评测与红队安全审计工具 |
| 开源协议 | MIT |
二、项目背景
改一行 Prompt 可能就让输出质量天差地别——但你到底怎么知道新 Prompt 是变好了还是变差了?靠人肉反复试既慢又不可复现。Promptfoo 把软件工程里的"单元测试 + CI"思路搬到了 Prompt 上:你写一个 YAML 配置,定义一批测试用例、一组待比较的 Prompt / 模型、一组评判标准,Promptfoo 就自动批量跑、自动打分、生成对比报告,甚至能在 CI 里拦住"Prompt 退化"的提交。
除了功能测试,Promptfoo 另一个杀手锏是 红队(Red Team)能力:它内置了几十类自动攻击用例——提示词注入、数据泄露、越权请求、有害内容生成、越狱(jailbreak)等,一键对你的 LLM 应用做安全压测,生成合规报告。这对要把 LLM 上线给真实用户的团队几乎是必做的一步。
Promptfoo 是一个命令行工具 + 本地 Web 界面,npm 一行安装,支持 OpenAI、Anthropic、DeepSeek、本地模型等几乎所有 provider,还能作为库嵌入自己的评测流水线。
三、核心特性
- Prompt 回归测试:像写单元测试一样定义用例,自动对比多个 Prompt / 模型版本。
- 多维评判:内置 Rubric / LLM-as-Judge / 正则 / 语义相似度等断言。
- 红队安全审计:自动生成注入、越狱、有害内容等攻击用例并评估防护。
- 本地 Web UI:可视化查看每条用例的输入输出与打分。
- CI 集成:可接入 GitHub Actions,Prompt 不达标直接失败。
- 多 Provider:OpenAI / Anthropic / DeepSeek / Ollama / vLLM 等全支持。
- 批量与并发:一键跑成百上千条用例,管理 API 成本。
四、环境要求
- Node.js 18+(推荐 20 LTS)。
- 操作系统:Linux / macOS / Windows。
- 一个 LLM API Key(OpenAI / DeepSeek 等),或本地 Ollama。
- 内存:无特殊要求,CLI 工具本身很轻。
五、详细部署步骤
方式一:npm 全局安装(推荐)
npm install -g promptfoo
promptfoo --version方式二:npx 免安装
npx promptfoo@latest init my-prompt-project
cd my-prompt-project初始化项目并编写评测配置
promptfoo init会生成 promptfooconfig.yaml,编辑如下:
description: "客服 Prompt 对比测试"
prompts:
- "你是一个客服,请回答:{{question}}"
- "你是一个友好的客服,请用一句话回答:{{question}}"
providers:
- openai:gpt-4o-mini
- id: deepseek:deepseek-chat
config:
apiBaseUrl: https://api.deepseek.com/v1
tests:
- vars:
question: "怎么退款?"
assert:
- type: contains
value: "退款"
- type: llm-rubric
value: "回答友好、简洁、切题"
- vars:
question: "我的订单什么时候到?"
assert:
- type: contains-any
value: ["订单", "物流", "配送"]关键配置说明:
prompts:待比较的多个 Prompt 模板,{{变量}}来自 tests。providers:要测的模型;DeepSeek 走 OpenAI 兼容接口,需设OPENAI_API_KEY或自定义 baseUrl。assert:评判规则,contains / equals / llm-rubric / 语义相似度等。
配置 API Key
export OPENAI_API_KEY=sk-xxxx
# DeepSeek 用 OpenAI 兼容接口时同样填 OPENAI_API_KEY + baseUrl
export ANTHROPIC_API_KEY=sk-ant-xxxx运行测试并查看报告
# 跑全部用例
promptfoo eval
# 启动本地 Web 可视化对比界面(默认 http://localhost:15500)
promptfoo view红队安全审计
npx promptfoo@latest redteam init
# 按向导选择 target provider,生成攻击用例
npx promptfoo@latest redteam run
# 生成安全报告
npx promptfoo@latest redteam reportCI 集成示例(GitHub Actions)
- name: Promptfoo Eval
run: npx promptfoo@latest eval --ci验证部署
promptfoo --help
promptfoo eval # 在配置目录下跑通即用六、使用方法
- 用
promptfoo init起项目,写promptfooconfig.yaml。 promptfoo eval跑评测,promptfoo view打开 Web 报告对比各 Prompt / 模型表现。- 红队用
redteam init / run / report三步生成安全审计报告。 - 无账号密码概念;纯本地 CLI,Key 通过环境变量注入。
七、常见问题 FAQ
Q1:调用 DeepSeek 报 401?
A:DeepSeek 走 OpenAI 兼容接口,需在 provider config 里设 apiBaseUrl: https://api.deepseek.com/v1 并把 key 放到 OPENAI_API_KEY 或 provider 的 apiKey。
Q2:llm-rubric 评判不准确?
A:LLM 当裁判本身有误差,建议用更强的模型当 judge,并把 rubric 写得具体可判断。
Q3:API 成本太高?
A:先用小批量用例 + 便宜模型(gpt-4o-mini / deepseek-chat)跑,关键用例再上强模型。
Q4:Web 报告打不开?
A:promptfoo view 默认起在 15500 端口,确认本地端口未被占用;远程服务器需 SSH 隧道或反向代理。
Q5:能测本地 Ollama 模型吗?
A:可以,provider 写 ollama:qwen2.5:7b 即可。