1
0

给 AI 提示词做回归测试前,我会先用 promptfoo 建一张用例表

AI 应用最容易失控的地方,常常发生在提示词、检索上下文、工具调用说明和输出格式的一次次漂移里。今天看起来更顺的回答,明天可能破坏了 JSON 结构,后天又在某个边界样例上开始胡编。promptfoo 的价值在这里很清楚:把这些“凭感觉调 prompt”的环节,拆成可以提交、比较、复跑和进 CI 的 eval 用例。

promptfoo 提示词评测流程图

从提示词文件、用例表、模型提供方到 assertions 和 CI 闸口的流程示意。 来源:Codex image generation

适合先从哪里用起来

promptfoo 官方把它定义为一个用于评测和 red-teaming LLM 应用的开源 CLI 与 library。它能比较 prompts、models、RAG pipelines,也能通过缓存、并发、live reloading 提升评测速度。对小团队来说,第一步不用急着搭平台,先把一组高频输入、预期约束和模型提供方写进 promptfooconfig.yaml,再用 promptfoo eval 跑出矩阵视图,就能看见不同 prompt 或模型在同一批样例上的差异。

我会先选三类样例:真实用户最常问的问题、过去线上出错的问题、产品明确禁止的输出。比如客服助手要返回结构化工单,就把“必须是 JSON”“必须包含工单类型”“不能泄露内部字段”写成 assertions。官方文档里的配置思路也是这样:YAML 会让每个 prompt 跑过一组 test cases,再用 assertions 检查是否满足要求。

assertions 才是落地抓手

只把模型输出排成一张表,适合人工观察,但很难防回归。promptfoo 的 assertions 可以把输出和期望值或条件做比较,覆盖 equals、contains-json、similar、javascript、python 等方式。这样一来,团队可以把“语气更自然”留给人工评审,把“字段缺失”“格式错误”“答案偏离上下文”交给机器先拦一遍。

这里要控制粒度。不要一上来就把每个回答都写成唯一标准答案,LLM 输出天然有弹性。更稳的做法是先锁住硬契约:格式、必填字段、拒答边界、引用来源、危险词、最大成本。RAG 场景里,还可以把“必须依据给定 context 回答”“不能补充 context 之外的事实”作为一类评测目标。等这些底线稳定后,再逐步加入相似度和 LLM rubric。

接进 CI 的方式

本地验证通过后,promptfoo 可以进入 pull request 流程。官方 GitHub Actions 文档给出的模式是:当 prompts/** 发生修改时,自动跑 before vs after evaluation,并把结果链接回写到 PR。这个设计很适合提示词仓库化管理。开发者改 prompt 时,不只提交文本差异,还能看到同一组样例下输出质量、失败项和成本是否变化。

安装门槛也不高。官方支持 npm install -g promptfoonpx promptfoo@latest 和 Homebrew。需要注意的是,npm 和 npx 路径要求 Node.js ^20.20.0>=22.22.0,并且官方文档提示 Node.js 20 支持会在 2026 年 7 月 30 日 00:00 UTC 后结束,更新前建议切到 Node.js 24 LTS。新项目直接用 npx promptfoo@latest init 开始最省事,旧项目则可以把 prompt、测试数据和配置放进一个单独目录,先让 CI 只在这个目录变化时触发。

我的最小落地模板

第一周只做四件事:建 20 到 50 条真实样例,给每条样例写清输入变量,给硬性输出加 assertions,把评测结果截图或链接贴进 PR。第二周再补失败样例,拆出安全边界和 RAG 引用边界。这样做的好处是很现实:你不需要一次性定义“好回答”的全部标准,只需要让每次 prompt 修改都留下可比较的证据。

如果团队已经开始把 AI 能力放进产品流程,promptfoo 适合当第一层质量闸。它不会替代人工判断,也不会保证模型永远稳定,但它能把最常见的提示词漂移、输出格式破坏和模型切换风险提前暴露。对 CorianderLab 这类持续试验 AI 工具链的团队来说,这正好是从 Demo 走向可维护工程的一个小台阶。

主要来源

  • promptfoo Intro: https://www.promptfoo.dev/docs/intro/
  • promptfoo GitHub: https://github.com/promptfoo/promptfoo
  • Installation: https://www.promptfoo.dev/docs/installation/
  • Configuration Overview: https://www.promptfoo.dev/docs/configuration/guide/
  • Assertions and Metrics: https://www.promptfoo.dev/docs/configuration/expected-outputs/
  • GitHub Actions integration: https://www.promptfoo.dev/docs/integrations/github-action/

评论