promptfoo 是一个开源的 LLM / Prompt 测试与评估工具,特别适合做「提示词工程」和「AI 应用质量保障」。简单说:它就是给大模型应用写「测试用例 + 断言 + 报告」的框架。
核心能力:
- Prompt 对比测试:同一条用例跑多个模型 / 多个提示词版本,横向对比输出质量
-
断言(Assertions):支持精确匹配、包含、正则、JSON 结构、相似度(
similar/llm-rubric)、自定义 JS/Python 函数校验 - 数据集驱动:用 CSV / YAML 维护测试集,批量回归
- 红队测试(Redteam):自动生成对抗性 prompt,检测越狱、注入、隐私泄露、有害内容等风险
- CI 集成:命令行运行,可接入流水线做「Prompt 回归」,输出 HTML/JSON 报告
-
Web UI:
promptfoo view可视化查看对比结果
典型用法:
npm install -g promptfoo
promptfoo init
# 编辑 promptfooconfig.yaml(配置 prompts / providers / tests)
promptfoo eval # 执行评估
promptfoo view # 查看结果
配置文件大致长这样:
prompts: ["请把下面内容翻译成英文:{{text}}"]
providers: ["openai:gpt-4o", "openai:gpt-4o-mini"]
tests:
- vars: { text: "你好" }
assert:
- type: contains
value: "Hello"
- type: llm-rubric
value: "翻译准确、语法正确"
和测试工作的结合点:可以把「AI 功能」当成被测对象,用 promptfoo 做数据驱动 + 断言的自动化回归,再接入 CI,解决大模型输出不确定、难以判断对错的测试难题。它和 RAGAS(RAG 评估)、DeepEval 属于同类方向,promptfoo 更偏「端到端 + 红队」。
需要我举个完整实战例子(比如测一个客服问答机器人)吗?