DeepEval 完整指南:5分钟上手LLM评测框架
【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval
当你需要量化评估 LLM 应用的质量时,DeepEval 这个开源 LLM 评测框架可以把主观判断变成可复现的分数:把应用的输入输出写进测试用例,选择若干指标跑一遍,就得到 0 到 1 的得分和通过与否的结论。
项目定位
DeepEval 是一个开源的 LLM 评测框架,定位类似 Pytest,但专门用来测试大语言模型应用——你可以把它理解成一条给 AI 应用把关的质检流水线:输入是你的问答数据,输出是一组可对比的分数。它主要服务于构建 RAG 系统、聊天机器人和 Agent 应用的开发者。
- 内置 30+ 评测指标:覆盖 RAG、多轮对话、Agent 任务、安全性等场景
- 灵活的裁判模型:指标默认采用 LLM-as-a-judge(让另一个大模型当裁判打分)机制,可以接入你自选的任何模型,包括本地部署的模型
- Pytest 风格测试:用例写在标准 Python 文件里,一条命令运行,可直接接入 CI/CD 流水线
- 配套工具链:合成数据集生成、基于评测结果的提示词自动优化、公开基准测试
快速上手
要求 Python 3.9 以上,安装只需一行:
pip install -U deepeval最小可运行示例(非 Pytest 模式,适合在 Notebook 里直接跑)。先设置OPENAI_API_KEY环境变量,或换成自己的本地模型:
from deepeval import evaluate from deepeval.metrics import AnswerRelevancyMetric from deepeval.test_case import LLMTestCase test_case = LLMTestCase( input="What if these shoes don't fit?", actual_output="We offer a 30-day full refund at no extra costs.", retrieval_context=["All customers are eligible for a 30 day full refund at no extra costs."], ) evaluate([test_case], [AnswerRelevancyMetric(threshold=0.7)])预期结果:终端打印一张得分表,AnswerRelevancy 得到 0 到 1 之间的分数,达到 0.7 阈值则判定 PASS,否则 FAIL。
核心能力拆解
| 能力模块 | 解决的问题 | 典型场景 |
|---|---|---|
| 内置评测指标(deepeval/metrics/) | 主观质量难以量化 | 答案相关性、幻觉、毒性、JSON 格式校验 |
| 测试用例与数据集 | 评测输入不统一、人工整理慢 | RAG 单轮、多轮对话、合成数据生成 |
| 追踪与轨迹评测 | 只看最终输出难以定位问题 | 评估 Agent 每一步模型决策与工具调用 |
| 基准测试 | 模型选型缺少客观依据 | MMLU、HumanEval、GSM8K 等公开基准 |
| 提示词优化 | 提示词靠反复试错 | 根据评测结果自动改写提示词 |
内置评测指标。最常用的入口是 AnswerRelevancyMetric,衡量回答与问题的相关程度;FaithfulnessMetric 面向 RAG,校验回答是否基于检索到的上下文、有没有编造事实。没有现成指标时,GEval 允许你写一句话标准(例如"判断 actual output 相对 expected output 是否正确"),由 LLM 按标准打分并给出理由。每个指标一个子目录、各自独立,单挑任何一个指标单独使用也可以。
追踪与轨迹评测。DeepEval 把 LLM 应用既当黑盒,也当可以拆开看的流水线:用@observe()装饰器标记函数后,每次模型调用、工具调用、中间步骤都会被记录成一条 trace。之后用数据集的evals_iterator()把同一批测试输入跑过应用,就能对完整执行轨迹跑 TaskCompletion 等指标,定位是哪一步拖低了分数。
一个完整工作流
以"RAG 客服机器人的质量回归"为例,流程分三步。
步骤 1:写测试用例。在测试文件里放入若干问答样本,每个样本是一个 LLMTestCase,包含 input(用户问题)、actual_output(你的机器人实际回复)、expected_output(理想回复):
# test_chatbot.py import pytest from deepeval import assert_test from deepeval.metrics import AnswerRelevancyMetric from deepeval.test_case import LLMTestCase def test_chatbot(): test_case = LLMTestCase( input="What if these shoes don't fit?", actual_output="You have 30 days to get a full refund at no extra cost.", expected_output="We offer a 30-day full refund at no extra costs.", ) assert_test(test_case, [AnswerRelevancyMetric(threshold=0.7)])步骤 2:运行测试。在终端执行deepeval test run test_chatbot.py,框架会把每条用例送进指标打分,在终端汇总得分与通过情况。
步骤 3:定位与迭代。指标未达标时,阅读它输出的 reason 文本判断问题出在哪个环节,修改应用或提示词后重跑同一条命令。这条命令可以直接写进 CI 流水线,每次提示词或模型变更都跑一遍回归评测。
进阶与生态
二次开发入口:自定义指标只需继承 BaseMetric(位于 deepeval/metrics/base_metric.py),实现 measure 方法返回 0 到 1 的分数,即可自动接入现有的断言、报表与 CI 流程。
规模化与性能要点:
- 测试文件可配合 pytest-xdist 并行执行,把数据集拆给多个 worker
evaluate支持异步配置并发运行应用,也提供缓存配置,避免裁判模型对同一输入重复计费- 指标与测试用例解耦,给大型数据集增删指标不需要改动用例代码
框架集成:LangChain 与 LangGraph 通过 callback handler 接入评测,Pydantic AI、CrewAI、LlamaIndex、OpenAI、Anthropic、Google ADK 等也有对应集成,examples/ 目录里可以找到各框架的可运行示例。
文档与社区
- 仓库自带完整文档源文件,位于
docs/content/docs/目录,其中getting-started.mdx是 5 分钟快速入门,metrics-introduction.mdx是指标选型指南 tests/与examples/目录提供了官方测试用例和示例脚本,适合直接通读学习- 版本变更记录归档在
docs/content/changelog/,项目以持续小步迭代的方式更新;使用问题可通过仓库 issue 跟踪器提交
行动清单
- 安装后直接运行
deepeval test run examples/getting_started/test_example.py,查看完整的打分与判定输出 - 浏览
deepeval/metrics/下的子目录,挑 1 到 2 个贴合自己 RAG 或 Agent 场景的指标,把示例里的 actual_output 替换成自己应用的真实输出试跑 - 打开
docs/content/docs/下的 getting-started 页面,按"写用例、选指标、跑测试"三步搭出第一条回归测试
当你能用数据对比两版提示词谁更好用时,剩下的事情就只是不断往数据集里添加新用例了。
【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考