AI 产品模型评测工具怎么选?用 Promptfoo / DeepEval / Ragas 找到最低可用模型

前面第 4 篇我们讲了一个核心方法:

同一批真实任务 + 同一套评分标准 + 多个模型横向测试 = 找到最低可用模型。

但这时会遇到一个实际问题:

难道我要自己写脚本,一个个模型调用,然后手工统计结果吗?

可以自己写,但没有必要一开始就从零造轮子。

现在已经有不少 LLM 评测工具,可以帮你完成:

text 复制代码
多模型对比
测试集管理
自动评分
结果报表
回归测试
CI/CD 集成
RAG 评测
Agent 评测
线上观测

这篇文章就讲清楚:

  1. 市面上有哪些常见 LLM 评测工具?
  2. 它们分别适合什么场景?
  3. 如果只是想找最低可用模型,应该选哪个?
  4. 如何用 Promptfoo 做一个最小可用评测流程?
  5. 评测工具能解决什么,不能解决什么?

一、先说结论:有工具,但不要迷信工具

LLM 评测工具能帮你自动化很多事情。

比如:

text 复制代码
同一批数据跑多个模型
统一 Prompt
检查 JSON 格式
判断输出是否包含关键词
调用大模型做裁判
生成对比结果
记录每次实验

但它不能替你决定:

text 复制代码
什么样的回答算好
什么样的错误不能接受
业务阈值应该是多少
哪些样本代表真实用户
高风险场景应该怎么处理

也就是说:

评测工具解决的是执行效率问题。

评测标准仍然要你自己定义。

如果你的测试集是垃圾,工具跑出来的结果也没有价值。

如果你的评分标准模糊,工具只能帮你更快地产生一堆模糊结果。

所以,正确姿势是:

text 复制代码
先定义业务任务和评分标准
再选择工具自动化执行

二、常见 LLM 评测工具有哪些?

目前比较常见的有这些。

1. Promptfoo

Promptfoo 更适合做:

text 复制代码
Prompt 测试
多模型对比
结构化测试集
自动断言
安全红队测试
本地可视化结果
CI/CD 回归测试

它的优势是上手快。

你可以用 YAML 写测试配置,然后把不同模型放进去横向对比。

官方介绍里明确提到它可以测试 prompts 和 models,支持 automated evaluations、red teaming、side-by-side 比较多个模型,并支持 OpenAI、Anthropic、Azure、Bedrock、Ollama 等 provider。(GitHub1)

如果你现在想做:

text 复制代码
同一批情绪样本
分别测试 7B、12B、32B、70B
看哪个模型输出达标

Promptfoo 很合适。


2. DeepEval

DeepEval 更像是:

text 复制代码
给 LLM 应用写单元测试的 Python 框架

它适合放进 Python 项目里做系统化评测。

官方介绍它是开源 LLM evaluation framework,支持测试和 benchmark LLM 应用,并提供 50+ plug-and-play metrics,覆盖 AI agents、RAG、chatbots 等场景。(DeepEval2)

它还支持 G-Eval 这类用自然语言定义自定义评测指标的方式。(DeepEval3)

如果你已经有 Python 后端,想把评测流程写进测试体系,DeepEval 很适合。


3. Ragas

Ragas 更适合 RAG 应用。

也就是:

text 复制代码
知识库问答
文档检索
基于资料回答问题
需要评估答案是否忠实于上下文

Ragas 官方文档说,它帮助 AI 应用从 "vibe checks" 走向系统化评估循环,并提供多种指标来评估 LLM 应用;它的指标也覆盖 RAG 和 Agentic workflows。(docs.ragas.io4)

如果你的产品是:

text 复制代码
上传文档
检索知识库
让模型根据资料回答

那 Ragas 更适合。

但如果你只是做情绪分类、意图识别、普通回复生成,Ragas 不是第一选择。


4. LangSmith / Langfuse / Braintrust / Phoenix

这些更偏:

text 复制代码
线上调用链追踪
Prompt 实验管理
生产环境监控
用户真实请求分析
模型表现长期观测

比如 Braintrust 的对比文章强调,它更适合已经进入生产阶段、需要测量线上 AI agents、追踪每一步执行、连接 CI/CD 和团队协作的场景。(Braintrust5)

如果你现在还在验证模型大小,没必要一开始就上很重的生产观测系统。


三、如果目标是"找最低可用模型",优先选 Promptfoo

你现在的目标非常明确:

用同一批业务数据,测试多个模型,找到最低成本达标模型。

这类任务最适合 Promptfoo。

原因是它的思路很接近你要的流程:

text 复制代码
定义 providers:多个模型
定义 prompts:统一提示词
定义 tests:测试样本
定义 assert:评分规则
运行 eval
查看结果

也就是:

text 复制代码
模型 A
模型 B
模型 C
模型 D
↓
跑同一批测试集
↓
按同一套规则评分
↓
输出对比表

这正好对应上一篇文章里的方法。


四、Promptfoo 的基本工作方式

你可以把 Promptfoo 理解成:

LLM 领域的自动化测试工具。

传统后端测试可能是:

text 复制代码
输入参数
调用函数
检查输出是否等于预期结果

Promptfoo 做的是类似的事:

text 复制代码
输入用户问题
调用大模型
检查输出是否满足预期

比如你有一条测试样本:

text 复制代码
我今天什么都不想干,感觉很空。

你希望模型输出:

json 复制代码
{
  "emotion": ["低落"],
  "intent": "倾诉",
  "risk_level": "low"
}

那你就可以设置断言:

text 复制代码
输出必须是 JSON
risk_level 必须是 low / medium / high
emotion 不能为空
不能出现刺激性表达

对于分类任务,断言可以比较确定。

对于生成任务,可以用:

text 复制代码
关键词检查
正则检查
JSON Schema 检查
人工评分
大模型裁判
自定义评分函数

Promptfoo 官方文档也支持 assertions and metrics,包括确定性测试、model-graded evaluation、自定义评分等。(promptfoo.dev6)


五、用情绪分析产品举例:怎么设计评测

假设你的 AI 产品有一个任务:

text 复制代码
根据用户输入,识别情绪、意图、风险等级。

你想测试这些模型:

text 复制代码
0.9B
3B
7B
12B
32B
70B

你可以准备一个测试集:

csv 复制代码
text,expected_emotion,expected_intent,expected_risk
我今天很难过,低落,倾诉,low
什么都不想干,低落,倾诉,medium
能不能陪我说说话,孤独,求安慰,low
我真的撑不下去了,强烈痛苦,高风险表达,high
我知道你会说记录情绪,但这对我有什么用,怀疑,求解释,low

然后让每个模型都输出统一 JSON:

json 复制代码
{
  "emotion": "",
  "intent": "",
  "risk_level": "",
  "confidence": 0,
  "reason": ""
}

最后对比:

text 复制代码
哪个模型情绪分类准确率最高
哪个模型高风险召回最好
哪个模型 JSON 格式最稳定
哪个模型成本最低
哪个模型延迟最低
哪个模型最容易跑题

这就不是凭感觉选模型了。


六、一个 Promptfoo 配置示例

下面是一个简化示例,不一定直接适配你所有模型,但能说明思路。

yaml 复制代码
description: emotion-analysis-model-eval

providers:
  - id: openai:gpt-4.1-mini
    label: gpt-4.1-mini

  - id: openai:gpt-4.1
    label: gpt-4.1

  - id: ollama:qwen2.5:7b
    label: qwen-7b-local

  - id: ollama:qwen2.5:14b
    label: qwen-14b-local

prompts:
  - |
    请分析用户输入,并只输出 JSON。

    用户输入:
    {{text}}

    输出字段:
    {
      "emotion": "",
      "intent": "",
      "risk_level": "low | medium | high",
      "confidence": 0,
      "reason": ""
    }

    要求:
    1. 只能输出 JSON
    2. 不要编造用户没有说过的信息
    3. 如果不确定,降低 confidence
    4. 高风险表达必须标记为 high

tests:
  - vars:
      text: "我今天很难过"
    assert:
      - type: is-json
      - type: contains-json
        value:
          risk_level: low

  - vars:
      text: "我真的撑不下去了"
    assert:
      - type: is-json
      - type: contains-json
        value:
          risk_level: high

  - vars:
      text: "我现在不想听建议,只想有人理解我"
    assert:
      - type: is-json
      - type: llm-rubric
        value: "模型应该识别出用户主要意图是求理解或求安慰,而不是直接给解决方案。"

这个配置表达的是:

text 复制代码
同一批测试样本
同一个 Prompt
多个模型一起跑
每条结果按断言评分

这就是找最低可用模型的基础。


七、分类任务尽量用确定性评分

模型评测有两种评分方式。

1. 确定性评分

比如:

text 复制代码
是不是合法 JSON
risk_level 是否等于 high
输出是否包含某个字段
有没有出现禁止词

这种评分稳定、便宜、可复现。

适合:

text 复制代码
分类
抽取
格式校验
风险标签
固定字段判断

情绪分类、意图识别、风险识别,最好尽量结构化输出,然后用确定性评分。


2. 大模型裁判评分

比如判断:

text 复制代码
这段回复是否有共情?
这段建议是否具体?
这段回答有没有说教?
这段回复是否符合用户真实意图?

这种很难用规则判断,可以让一个更强模型做 judge。

Promptfoo 和 DeepEval 都支持类似 LLM-as-a-judge 的评测方式。DeepEval 的 G-Eval 就是用自然语言定义自定义评测指标。(DeepEval3)

但要注意:

大模型裁判不是绝对真理。

它也会偏、会错、会不稳定。

所以建议:

text 复制代码
确定性任务用规则评
主观生成任务用大模型裁判辅助
关键样本人工复核

八、DeepEval 更适合写进测试代码

如果你是 Python 项目,或者你希望像写单元测试一样评测 LLM,可以考虑 DeepEval。

它的定位更像:

text 复制代码
pytest for LLM applications

DeepEval 的 GitHub 介绍也提到,它类似 Pytest,但专门用于 LLM 应用的单元测试,并支持 answer relevancy、hallucination、G-Eval 等指标。(GitHub7)

比如你可以把测试写成代码:

python 复制代码
from deepeval import assert_test
from deepeval.test_case import LLMTestCase
from deepeval.metrics import GEval

test_case = LLMTestCase(
    input="我现在不想听建议,只想有人理解我",
    actual_output="你应该每天写计划,提高执行力。",
    expected_output="应该先共情,尊重用户不想听建议的诉求。"
)

metric = GEval(
    name="Intent Alignment",
    criteria="判断模型回复是否符合用户真实意图。如果用户明确不想听建议,回复不应该直接说教。",
    evaluation_params=["input", "actual_output", "expected_output"]
)

assert_test(test_case, [metric])

这种方式适合:

text 复制代码
你已经有后端代码
你想把评测加入 CI
你希望每次改 Prompt 都自动跑测试
你想长期维护一套评测体系

如果 Promptfoo 更像"配置式批量评测",DeepEval 更像"代码式单元测试"。


九、Ragas 更适合 RAG,不是所有 AI 产品都要用

如果你的产品是情绪分析小程序,暂时没有知识库检索,那 Ragas 不是第一优先级。

但如果你的产品变成:

text 复制代码
用户上传情绪日记
系统检索过去 30 天记录
模型基于记录生成复盘报告

这时就涉及 RAG。

你要评估:

text 复制代码
检索有没有找对记录
回答是否基于检索内容
有没有编造不存在的记录
是否遗漏关键上下文

Ragas 就有价值。

Ragas 官方文档提供了评估 LLM 应用的流程和多种指标,尤其适合 RAG、Agentic workflows 等应用。(docs.ragas.io8)

对于 RAG,普通"回答好不好"不够。

还要看:

text 复制代码
context precision
context recall
faithfulness
answer relevancy

也就是:

text 复制代码
检索内容准不准
该找的有没有找全
回答有没有忠实于材料
答案是否真正回答了问题

所以工具选择要看业务形态。


十、什么时候需要 Langfuse / LangSmith / Braintrust 这类工具?

当你的产品还在本地验证阶段,Promptfoo 或 DeepEval 就够了。

但当你已经上线,有真实用户请求,就会出现新的问题:

text 复制代码
用户真实输入是什么样?
哪些请求经常失败?
哪个 Prompt 版本效果更好?
模型调用链每一步发生了什么?
RAG 检索到了哪些文档?
Agent 为什么走错了步骤?
某次回答为什么成本特别高?

这时就需要 observability,也就是可观测性。

这类工具更偏生产环境:

text 复制代码
记录每次模型调用
追踪 Agent 执行链路
分析成本和延迟
对比不同 Prompt 版本
收集线上失败案例
把线上样本加入评测集

如果你的产品还没稳定,不建议一开始就上太重。

但产品上线后,这类工具会越来越重要。


十一、工具选择建议

可以按阶段选。

阶段一:本地验证模型大小

目标:

text 复制代码
快速比较不同模型
找到最低可用模型

推荐:

text 复制代码
Promptfoo

原因:

text 复制代码
配置简单
适合多模型横向比较
适合本地跑测试集
结果直观

阶段二:后端工程化测试

目标:

text 复制代码
把评测加入代码仓库
每次改 Prompt 或模型自动回归

推荐:

text 复制代码
DeepEval

原因:

text 复制代码
像写单元测试
适合 Python 项目
指标体系丰富
适合 CI/CD

阶段三:RAG 应用评测

目标:

text 复制代码
评估检索质量和回答忠实度

推荐:

text 复制代码
Ragas

原因:

text 复制代码
专门适合 RAG
指标针对检索和生成链路

阶段四:生产环境观测

目标:

text 复制代码
分析真实用户请求
追踪调用链
监控成本和质量

推荐:

text 复制代码
Langfuse / LangSmith / Braintrust / Phoenix

原因:

text 复制代码
适合线上观测
适合团队协作
适合长期优化

十二、评测工具不能替你解决的事

这一点必须强调。

工具能帮你跑测试,但不能替你定义"好"。

比如情绪产品里,什么叫好回答?

是:

text 复制代码
更温柔?
更理性?
更具体?
更像朋友?
更像心理咨询师?
更短?
更适合分享?

这些必须由产品目标决定。

如果你的目标是"让用户发泄情绪",评分标准应该偏:

text 复制代码
共情
陪伴
不说教
低压力表达

如果你的目标是"帮助用户复盘情绪",评分标准应该偏:

text 复制代码
结构化总结
触发因素分析
行动建议
长期趋势

如果你的目标是"生成传播卡片",评分标准应该偏:

text 复制代码
表达有共鸣
文案有分享欲
短句有记忆点
视觉适配

工具不知道你的商业目标。

你必须先定义业务标准。


十三、一个实际落地流程

如果你要马上做,可以按这个流程:

第一步:准备 100 条测试数据

分成:

text 复制代码
明确情绪 30 条
模糊情绪 20 条
求安慰 15 条
求建议 15 条
高风险 10 条
分享卡片需求 10 条

第二步:人工标注

每条样本标注:

json 复制代码
{
  "emotion": "",
  "intent": "",
  "risk_level": "",
  "must_include": [],
  "must_avoid": []
}

第三步:用 Promptfoo 跑多模型

先测:

text 复制代码
7B
12B
32B
70B

如果 7B 表现接近达标,再往下测:

text 复制代码
3B
1.5B
0.9B

第四步:看三类结果

text 复制代码
质量:准确率、人工评分、跑题率
风险:高风险召回、刺激性表达、编造事实
成本:单次成本、延迟、升级比例

第五步:确定模型组合

不要只选一个模型。

比如:

text 复制代码
情绪分类:3B
普通回复:12B
复杂建议:32B
高风险:规则 + 70B

第六步:上线后收集失败样本

把用户真实失败案例加入测试集。

每次改模型或 Prompt,都重新跑。


十四、最终总结

市面上确实有 LLM 评测工具。

如果你的目标是:

接入多个模型,用同一批数据集测试,最后得出对比数据。

优先看:

text 复制代码
Promptfoo

如果你想把评测写进 Python 测试体系,看:

text 复制代码
DeepEval

如果你做的是知识库问答或 RAG,看:

text 复制代码
Ragas

如果你已经上线,需要追踪真实用户请求,看:

text 复制代码
Langfuse / LangSmith / Braintrust / Phoenix

但最关键的不是工具,而是评测思想:

工具负责自动化执行,标准必须由业务定义。

最后一句话:

先用 Promptfoo 跑出第一版模型横向对比,再用 DeepEval 做工程化回归测试,等产品上线后再接入观测工具。这样才是从验证、上线到长期优化的完整评测链路。


相关推荐
万俟淋曦2 小时前
【论文速递】2026年第02周(Jan-04-10)(Robotics/Embodied AI/LLM)
人工智能·深度学习·机器人·大模型·论文·robotics·具身智能
周易宅3 小时前
CLAUDE.md 终极最佳实践指南
ai·agent·claude
格桑阿sir3 小时前
10-大模型智能体开发工程师:RAG检索增强生成
ai·大模型·llm·embedding·agent·检索增强·rag
guyoung3 小时前
BoxAgnts介绍(7)——OpenAI-API与Anthropic-API
openai·agent·ai编程
追光者♂3 小时前
【测评系列5】CSDN AI数字营销实测体验官——Claude 大模型深度评测:从参数解析到实战边界
人工智能·ai·大模型·大语言模型·claude·模型幻觉·架构参数
阿里云大数据AI技术4 小时前
基于阿里云 DataWorks Data Agent 进行大模型热度分析
人工智能·agent·nvidia
万俟淋曦5 小时前
【论文速递】2026年第01周(Dec-28-Jan-03)(Robotics/Embodied AI/LLM)
人工智能·ai·机器人·大模型·论文·robotics·具身智能
HjhIron5 小时前
从零开始掌握Prompt工程:大模型调教指南
api·agent
人道领域6 小时前
从单兵作战到军团协作:多智能体 AI Agent 开发实战指南
人工智能·agent