promptfoo

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 更偏「端到端 + 红队」。

需要我举个完整实战例子(比如测一个客服问答机器人)吗?