AI 应用上线前,不能只靠感觉:promptfoo 把 Prompt 测试做成了工程流程

21 阅读6分钟

图片
现在做 AI 应用,最容易出问题的地方,往往不是模型不够强,而是你根本不知道它什么时候开始变差。

今天还能答对的客服问题,明天换了个 prompt、换了个模型版本、补了一批知识库,回答就开始跑偏;Agent 昨天还能正常调用工具,今天多接了一个接口,越权、幻觉、误调用的风险就冒出来了。更麻烦的是,这类问题不像传统程序那样会直接报错,它们更像是悄悄溜进生产环境的质量回归。

最近在开发者圈子里很火的 promptfoo,切的正是这个痛点。它不是帮你“写提示词”的工具,而是帮你系统化验证 prompt、Agent、RAG 应用到底能不能上线 的工具。官方对它的定义很直接:这是一个用于评测和 red teaming LLM 应用的 CLI 和库。

AI 项目最缺的,其实是“验收”

传统软件上线前,大家默认会做单测、集成测试、回归测试,再把检查接进 CI。轮到 AI 应用,流程却经常退回到非常原始的状态:人手测几轮,觉得效果差不多,就发出去。

问题在于,AI 应用不是静态逻辑。你改一个系统提示词,换一个模型,调一下温度参数,或者给 RAG 新接一批文档,输出质量都会变。团队规模一大,这种“凭感觉验收”的方式很快就撑不住了。

promptfoo 做的事,就是把这种不稳定、难复现的流程,变成一套可重复、可比较、可自动拦截的工程流程。你可以给它一组 prompts、一组模型、一批测试样例,它就能跑出对比结果;你也可以让它对 Agent 和 RAG 做安全探测,看它会不会泄露信息、被 prompt injection 带偏,或者误用工具。

换句话说,它把 AI 项目的“感觉差不多”变成了“有证据地放行”。

promptfoo 真正有价值的,不只是测 Prompt

很多人一看到名字,会以为这只是个 Prompt 对比工具。真上手后会发现,它覆盖的是一整条 AI 交付链路。

一头是评测。你可以把同一个任务丢给 OpenAI、Anthropic、Google 等不同模型跑,比较回答质量、稳定性和成本,决定到底该选谁,不再靠主观印象拍板。

另一头是安全。promptfoo 的 red teaming 文档讲得很清楚:LLM 应用的风险不只是“答得不准”,还包括 prompt injection、jailbreak、PII 泄露、RAG 场景下的上下文泄露、Agent 场景下的工具滥用和越权访问。普通功能测试问的是“它会不会做这件事”,red team 问的是“别人能不能把它带沟里”。这两个问题,缺一个都不行。

再往前走一步,就是 CI/CD。官方文档把它放得很实用:在 PR 阶段跑 eval,在部署前跑 redteam,用 --fail-on-error 或自定义阈值拦截质量回归。这样一来,AI 应用的发布流程终于能像普通工程项目一样,有明确的质量门禁。

这也是 promptfoo 最打动开发者的地方:它不卖概念,它是在补 AI 工程里最缺的一块地基。

它适合哪些真实场景

场景一:RAG 知识库一更新,就做回归验证

很多公司做知识库问答,最大的坑不是“第一次做不出来”,而是后面每次加文档、改检索策略、换 embedding 后,回答质量会不会退化。

这时候你可以把一批关键问题整理成测试集,比如产品规则、售后政策、价格边界、合规口径,然后让 promptfoo 在每次改动后自动跑一轮。只要命中率、引用质量或者断言结果不达标,就别让它进生产环境。

场景二:Agent 接了工具调用,先别急着上线

只要 Agent 能调用搜索、数据库、内部 API,它的风险面就和普通聊天机器人完全不是一个量级了。你担心的不只是它“答错”,还包括它会不会被恶意输入骗去执行不该执行的动作。

promptfoo 的 red teaming 很适合放在这里。它会用模拟对抗输入去探测应用层风险,逼近真实攻击者会怎么试探你的系统。对于准备把 Agent 接进业务流程的团队,这一步比“多调几次 prompt”更重要。

场景三:团队准备换模型,但不想靠拍脑袋决策

很多团队都会遇到这个问题:Claude 很稳,GPT 很通用,Gemini 有些任务也不错,到底选谁?

最怕的是一群人围着几条 demo 聊半天,最后凭感觉定方案。promptfoo 更适合干脆把任务集喂进去,统一跑一轮,对比输出质量、通过率和成本,再做决策。这样拿出来的结论,团队更容易达成共识。

上手门槛不高,命令行就能跑

promptfoo 的 Quick Start 很直给。官方给出的入门方式是先装好 CLI,再初始化一个示例项目:

npm install -g promptfoo
promptfoo init --example getting-started
export OPENAI_API_KEY=sk-abc123
cd getting-started
promptfoo eval
promptfoo view

如果你不想全局安装,也可以直接用 npx promptfoo@latest。官方文档里还提供了 promptfoo eval setup 这种浏览器化初始化流程,对不想一上来手写配置的人比较友好。

接进 CI 也不复杂。文档里最核心的思路就是两步:跑评测,必要时再跑安全扫描。

npx promptfoo@latest eval -c promptfooconfig.yaml -o results.json
npx promptfoo@latest redteam run
npx promptfoo@latest eval --fail-on-error

这几行命令的价值,不在于“能跑起来”,而在于它把 AI 应用从“靠经验发布”拉回到了“靠门禁发布”。

图片

这个项目为什么值得收藏

AI 这波工具很多,但真正能进入团队长期工作流的,其实不是那些看起来最炫的,而是那些能帮你减少线上事故的。

promptfoo 就属于后者。它不负责帮你写出那个最惊艳的 prompt,它负责的是另一件更现实的事:当你准备把 AI 功能交给真实用户时,先替你问一句——这东西真的稳吗,真的安全吗?

如果你正在做客服机器人、企业知识库、内部 Copilot、工具型 Agent,甚至只是准备把模型从一个版本切到另一个版本,这个项目都很值得提前装上。因为 AI 应用上线前,靠感觉真的不够。

GitHub 链接:github.com/promptfoo/p… Star:17,870

参考链接

  1. github.com/promptfoo/p…