DeepEval:3步实操上手大模型评估框架
【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval
DeepEval 是一个开源的大模型评估框架,适合会写 Python 但没做过模型评估的开发者:它把 LLM 输出变成 0~1 的分数,用自动测试用例和通过线替代人工抽查。你只需装好、写一个 LLM 测试用例,就能拿到分数。
🧩 拆开 LLM 评估是怎么打分的
DeepEval 的机制核心是评审模型(LLM-as-judge):用一个更大的模型,给另一个模型的输出打分。你把一个测试用例(LLMTestCase)写成三要素——问题(input)、模型实际输出(actual_output)、期望答案(expected_output)。指标拿到用例后,把这些字段填入评分模板,发给评审模型,得到一个 0~1 的分数和理由。分数低于你设的阈值(threshold),用例即判失败,pytest 断言变红。1 个用例和 1000 个用例走的是同一条流水线,差别只在数据集。
这张图看什么:左侧本地 SDK 生成评估数据,结果经 API 层流向右侧仪表盘,底部 MCP 通道可接编码工具直接查询评估结论。
🚀 跑通第一个 LLM 评估测试用例
装好依赖和评审模型
先装框架、给评审模型配好 API key,这个 key 决定谁来"当评委":
# 安装 DeepEval pip install -U deepeval # 设置评审模型的 API key,默认走 OpenAI export OPENAI_API_KEY="your-key-here"写一个 LLM 测试用例
建一个eval_first.py,填好用例三要素,选答案相关性指标:
# 导入测试运行器、测试用例、答案相关性指标 from deepeval import assert_test from deepeval.test_case import LLMTestCase from deepeval.metrics import AnswerRelevancyMetric # 构建一个 LLM 测试用例:问题、模型实际输出、期望答案 test_case = LLMTestCase( input="怎么退货?", actual_output="登录账号,进入订单页点击申请退货即可在线完成。", expected_output="登录账号,在订单页点击申请退货,在线完成退货流程。", ) # 答案相关性指标:给输出是否切题打分,通过线 0.7 metric = AnswerRelevancyMetric(threshold=0.7) # 执行断言,pytest 是否通过由这一行决定 assert_test(test_case, [metric])运行评估并读分
在文件所在目录执行下面的命令,终端会打印 0~1 的分数和通过状态:
deepeval test run eval_first.py分数不合预期时先检查三要素是否填对,多数误判来自测试用例字段填错,而不是评审模型判错。全部指标的源码都在 deepeval/metrics/ 目录,每个指标一个独立文件夹。
💡 没有 OPENAI_API_KEY 也能跑:通过环境变量可把评审模型切成其他厂商,所有开关见 docs/content/docs/environment-variables.mdx。
结果接入 Confident 平台后,你会得到这样的看板:
这张图看什么:每个测试用例带通过或失败状态,顶部聚合条直接给出通过率,比逐行读终端直观。
📊 按场景选对评估指标
指标有 40 多个,不必全记。如果你卡住不知道如何评估大模型,先定场景再挑指标:
| 场景 | 首选指标 | 选它的理由 | 什么时候补 |
|---|---|---|---|
| RAG 检索增强 | FaithfulnessMetric + ContextualRelevancyMetric | 把"检索错了"和"基于上下文编造"两类故障拆开 | 要确认关键信息是否都用上时,加 ContextualRecallMetric |
| 单轮/多轮聊天 | AnswerRelevancyMetric / TurnRelevancyMetric | 单轮看回答是否切题,多轮看每轮是否跑偏 | 要检查对话是否完整收尾,加 ConversationCompletenessMetric |
| 智能体工具调用 | ToolUseMetric + TaskCompletionMetric | 一个判工具调用对不对,一个判任务有没有真正完成 | 怀疑死循环时加 AgentLoopDetectionMetric |
| 自定义业务标准 | GEval | 把标准写成一句话,让评审模型按它打分 | 现成指标表达不了"语气专业且简洁"这类要求时使用 |
💡 RAG 评估指标建议成对使用:上下文分高、忠实度低,说明"检索对、生成错";反过来则是检索环节先崩。
🏭 把评估搬进批量、CI 与生产
批量测试:用例积累到几十个后,用EvaluationDataset装起来,deepeval test run一次跑完。得到每个用例的通过率和可导出的分数表。
CI 卡点:改完 prompt 或模型版本,push 触发 GitHub Actions 里的deepeval test run,任一指标低于阈值构建就红。得到合并前可见的回归,改坏的人在合并前就知道。
线上监控:配置 CONFIDENT_API_KEY 后,生产 trace 同步进 Confident AI 仪表盘。得到"循环输出激增"这类异常信号,比用户投诉先一步报警。
这张截图看什么:同一用例两个版本并排,某指标从通过变失败,回归卡点要拦的就是这种变化。
⚠️ 避开 LLM 评估最常见的 4 个坑
**1. 阈值不要拍脑袋用默认值。**先跑 20~30 个样本看分数分布,把阈值设到能拦住你已知的坏样本的那个分位,再批量调整。
**2. 评估成本与指标数成正比。**每个指标都是一次 LLM 调用。把评审模型换成小模型并开启结果缓存,日常用抽样跑全指标,发布前回归才跑全量。
**3. 多个指标结论打架时不要求平均。**相关度高、忠实度低是典型的"自信地错"。每个指标独立设通过线,失败用例逐个打开 reason 字段排查。
**4. 0.8 分不等于 80% 正确。**它是评审模型按 rubric 打的分。分数反直觉时先读 reason(默认开启输出),再核对测试用例字段是否齐全。
这张界面看什么:每条信号是一个异常模式,带增长或收敛趋势,替代"出事后翻日志"的被动排查。
想看完整示例,读 examples/getting_started/test_example.py,然后对你的测试文件执行deepeval test run,拿到第一个真实分数。
【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考