promptfoo:让语言模型评测不再“靠感觉”——一站式 LLM 自动化测评神器深度解读
大家好,这里是你们喜闻乐见、永远不低调的 AI 技术博主。这篇分享,我要隆重介绍一个我愿称之为“LLM 测试自动化福音”的神器——promptfoo。
如果你做 LLM(大模型)落地开发,调教 prompt 拼死拼活,一上线用户各种“灵魂拷问”:
“这答案不对啊,能不能过一下 case?”
“有没有安全问题啊,会不会 prompt injection 哦?”
“多模型能不能横向对比下,谁更会说话?”
此刻只想摇人帮忙,或者干脆自己拿小本本边试 prompt 边记笔记?(心累……)
别怕!promptfoo 的出现,就是让你的 LLM 应用研发彻底摆脱“全靠感觉”,正式步入“标准化测试时代”!
目录
-
promptfoo 是什么鬼?
-
关键能力列表盘点
-
架构与工作原理全景
-
Provider 全家桶
-
Red Team 黑客攻防测试
-
一站式集成与人性化交互界面
-
配置到底要怎么写?
-
核心评测系统全流程揭秘
-
评测强力武器:断言体系(assertions)
-
高阶玩法与扩展性
-
总结 & 我的实践建议
1. promptfoo 是什么鬼?
用一句话总结:
promptfoo 是 LLM 圈里的“持续集成 + 自动化测试 + 红队攻防一体机”。你写 prompt、做 RAG、造 agent、调模型,把测试交给它就对了!
它开源、免费、极其灵活,支持横评各种模型和 prompt,把 LLM 跑得像单元测试那样有章法。
你可以验证内容 quality、发现安全隐患、随时集成至 CI/CD,还有网页/命令行双界面。再也不用人肉 copy、粘贴、截图、用 Excel 记结果,非常适合实际工作流的接入!
一句话,promptfoo 让 LLM 工程师睡得更香,用户也信得更过。
2. 关键能力盘点
没点干货,你会看?直接把 promptfoo 的“赛博超能力”甩过来:
-
支持多模型跨平台评测(OpenAI/Gemini/Claude/Ollama/Bedrock/自定义等)
-
断言体系丰富,支持从字符串精确匹配到大模型自评
-
支持自定义用例和变量(变量组合自动生成 n 组 case)
-
安全攻击红队:prompt injection、越狱、隐私泄露等全流程自动攻防检测
-
命令行 CLI/网页界面都有,体验很丝滑
-
CI/CD 集成自动回归,一上线先检测,省矿机!
-
输出格式多样(CSV/JSON/YAML/HTML/Google Sheet)便于团队报告统计
-
极致扩展性:外挂 Provider、断言、处理逻辑,任你自定义
-
并发执行、高速评测,效率炫酷飞起
-
报错调试细致,全生命周期监控
一句话:你要的它都有,不要的它也能给你加!
3. 系统整体架构脑图
主要核心模块概览:
-
核心评测系统(大脑):调度整个 prompt-模型-断言流转
-
Provider 系统(模型接入总线):对接各种 LLM/自定义 API
-
断言系统 Assertion(灵魂判官):灵活选择验证方式,满足从业务到学术的所有需求
-
红队系统 Red Team(AI 攻防兵团):自动造难题,各种越狱爆破全覆盖
-
CLI & Web UI(命令行/UI 党都满意):配置测什么、随时查结果
-
分享系统:评测一键上传分享,全流程透明
-
存储与配置:YAML 配置,结果持久化,支持多种数据库
从上游 prompt 到底层 provider,再回到断言与报告,全自动无死角!
4. Provider 全家桶
什么是 Provider?
Provider 就是 promptfoo 里与外部“各种模型”的所有 API 对接桥梁。
支持的平台类型有这些:
-
商业巨头:OpenAI(所有 GPT)、Anthropic(Claude 家族)、Google(Gemini)、AWS Bedrock、Azure OpenAI、Vertex AI
-
本地模型:Ollama、LocalAI
-
自定义 API:HTTP/WS | Python | 文件
-
测试用:Echo(输入即输出)
你要啥有啥,理论链条拉满!
接口规范?
只要你实现 ApiProvider 接口(暴露 id()、callApi()),就可以直接 plug-in 进来。
这样不管第三方模型怎么玩花活,都能无感升级/对比/评测。
5. Red Team 红队攻防系统
炼丹不测安全=白练!AI 黑客站出来!
promptfoo 比你还懂安全:
- 集成全自动红队模块,流程如下:
-
自动构造逆天 prompt,尝试 jailbreak、prompt injection、PII 泄露、内容绕过等
-
编码混淆(像 base64、rot13、leetspeak、多语种攻击……)
-
甚至还支持自扩展插件体系,比如有 harmful plugin(恶意内容),pii plugin,injection plugin(注入 payload)。
效果?
自动帮你把 LLM 当作入侵靶机揍一顿,看看平时你写的安全检查是不是“只在心里有”~
6. 一站式集成体验 & 界面
不用选边站——
命令行党:pf eval、pf redteam、pf share,所有动作一条命令解决,CI/CD 友好。
UI 党:网页端能编辑配置,能实时查看结果,有曲线有表格,支持红队流程配置直观。
所有的测试和结果,都进共享体系,一键生成分享链接,甚至团建用作“模型对决赛”都给劲!
7. 配置怎么写?YAML 万金油!
promptfoo 用 YAML(或 JSON)组织评测配置,极简又直观。
最简单例子:
prompts: - "Write a tweet about {{topic}}" providers: - openai:chat:gpt-4o-mini - anthropic:messages:claude-3-5-sonnet-20241022 tests: - vars: topic: bananas assert: - type: contains value: "banana" - vars: topic: pineapples assert: - type: llm-rubric value: "mentions health benefits" defaultTest: assert: - type: javascript value: "output.length
-
- 集成全自动红队模块,流程如下:
-
-