资讯动态

DeepEval LLM评测框架:从入门到生产完全指南

发布时间:2026/9/9 18:34:22 来源:尧图企业网站定制
DeepEval LLM评测框架从入门到生产完全指南【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval一个客服机器人上线前夜的故事周四晚上你盯着刚合并的prompt改动只调整了两句措辞客服机器人对退款政策的回答却开始编造不存在的条款。测试脚本里没有任何一条用例能抓到这种漂移因为你们一直在人肉抽查。第二天早上你把上周的对话日志拉了200条需要一个能自动给每条回答打分、并把不达标的挑出来的工具——DeepEval这个 LLM 评测框架基于 LLM 作为裁判来给输出打分的测试框架就是为这类场景准备的它让你像写单元测试一样给 LLM 应用写可回归的评测。DeepEval 定位一个专测 LLM 应用的 pytest 式框架DeepEval 是一个用于 LLM 应用评测的开源 Python 框架用法和 pytest 类似但每条断言背后是一个评测指标。和同类工具相比它的差异点集中在四处pytest 原生用例就写在普通的test_*.py文件里deepeval test run一条命令出报告不用另学一套 runner。指标覆盖全链路内置 60 余个指标覆盖 RAG、Agent 轨迹、多轮对话、安全合规、多模态与语音每个指标都能独立调用。裁判模型可换打分用的 judge 可以是 OpenAI、Anthropic也可以是你自己包装的本地模型评测逻辑不用动。轨迹级评测内置基于 OpenTelemetry一套标准化的分布式追踪协议的 tracing能还原 Agent 的每一步决策和工具调用而不只是看最终输出。当前版本 4.2.0要求 Python ≥ 3.9License 为 Apache-2.0。架构走读一条评测从用例到报告的数据流抛开组件清单看数据怎么流输入是LLMTestCase一个结构化数据装下 input、actual_output、expected_output、retrieval_context。设计意图是把应用产出和评测解耦——你的应用怎么实现不重要交出一个标准用例即可。指标层按裁判打分每个指标内部用 judge LLM 按模板对用例打分分数统一归一到 0-1threshold判定逻辑集中在基类BaseMetric.is_successful()新指标只需实现measure与a_measure。这是刻意的约束保证几十个指标行为一致。trace 捕获中间轨迹对 Agent 场景OTel 层记录完整的调用序列TaskCompletionMetric这类轨迹指标直接消费它而不是只看最终答案。输出是 test runpytest 插件把整场运行的分数聚合成一次 test run可导出 JSON、可同步到平台做跨版本对比这是回归能成立的基础。10分钟跑通第一个评测用例安装只要一条命令pip install -U deepeval。下面这段代码在做什么定义一个 GEval 裁判指标判断回答是否符合期望构造一条测试用例然后断言。代码取自 README 的 quickstart把actual_output换成你应用的真实输出即可。import pytest from deepeval import assert_test from deepeval.metrics import GEval from deepeval.test_case import LLMTestCase, SingleTurnParams def test_case(): correctness_metric GEval( nameCorrectness, criteriaDetermine if the actual output is correct based on the expected output., evaluation_params[SingleTurnParams.ACTUAL_OUTPUT, SingleTurnParams.EXPECTED_OUTPUT], threshold0.5 ) test_case LLMTestCase( inputWhat if these shoes dont fit?, actual_outputYou have 30 days to get a full refund at no extra cost., expected_outputWe 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.] ) assert_test(test_case, [correctness_metric])GEval 需要裁判模型导出一个 API key 即可也可换成自包装的本地模型export OPENAI_API_KEY... deepeval test run test_chatbot.py你看到的是一行带 PASS/FAIL 的用例结果加上每个指标的 0-1 分数阈值 0.5 意味着分数跌破一半才算失败。这个结果的价值在于它是一次可复跑的判定下次改 prompt 再跑一遍分数涨跌一目了然。核心能力拆解你真正关心的三个问题结果可复现吗可以前提是你固定两样东西评测数据集和裁判模型。分数本身是裁判输出的确定性函数test run 会把参数可用log_hyperparameters记录和结果一起落盘跨版本对比时口径一致。换个模型后端要改多少代码通常是一行。指标构造时传入你自己的模型对象即可例如FaithfulnessMetric(modelyour_local_model)评测脚本其余部分不动。批量跑几千条数据扛得住吗扛得住靠的是异步并发加限流。evaluate和evals_iterator支持AsyncConfig默认max_concurrent20测试文件层面还可以用 pytest-xdist 多进程分发。三种评估粒度怎么选看这张表评估粒度输入回答的问题适用场景端到端黑盒input actual_output最终答案好不好快速回归、换模型对比轨迹级OTel trace 全链路中间决策和工具调用对不对Agent 应用组件级单模块 I/O某个环节如检索质量行不行RAG 调优落地姿势三种角色的工作流变化独立开发者。最痛的点是每次改 prompt 都在赌。用 DeepEval 之后把线上抓的几十条好问题存成 golden 数据集用例写成普通 pytest 文件本地deepeval test run一分钟出分不达标的指标直接暴露在哪条用例上。边界要说清楚它保证的是相对上次没有变差不替你做产品决策。平台工程团队。最痛的点是多个团队各写各的评测口径不一致、结果不可比。引入后CI 里统一跑deepeval test run作为门禁结果同步到平台跨项目横向可比失败用例回流成新的数据集条目。边界平台同步属于配套的 Confident AI 服务纯本地跑也完全可用只是少了跨团队视图。算法研究员。最关心模型与 prompt 版本的分数差异。evaluate()可以在 notebook 里直接跑compare支持多模型横向对比指标层还会记录每次评测的 token 消耗和成本方便你算质量提升花了多少评测费。边界对比的前提是数据集和裁判配置完全一致别在换裁判模型的同时换数据集。进阶并发配置与自定义指标骨架万级用例的异步并发与限流配置大规模评测的瓶颈几乎都在裁判 API 的限流上。AsyncConfig把评测请求做成异步并发两个参数控制节奏from deepeval.evaluate.configs import AsyncConfig # max_concurrent 控制并发数throttle_value 在每条请求间加间隔 async_config AsyncConfig(run_asyncTrue, max_concurrent10, throttle_value0.5)这套配置能压住 429 错误代价是总耗时被限流拉长本地 NLP 类指标如 ExactMatch、PatternMatch不经过裁判 API没有这个瓶颈。8行骨架写出一个自定义指标继承BaseMetric实现两个方法框架会把你的指标和内置指标放进同一套流程阈值判定、报告、pytest 断言都自动生效完整清单可翻 自定义指标文档/)。from deepeval.metrics import BaseMetric from deepeval.test_case import LLMTestCase class LengthLimitMetric(BaseMetric): def measure(self, test_case: LLMTestCase, *a, **k) - float: return 1.0 if len(test_case.actual_output) 200 else 0.0 async def a_measure(self, test_case: LLMTestCase, *a, **k) - float: return self.measure(test_case)两个 trade-off 值得提前知道LLM 裁判类指标每条用例都会产生真实 token 开销大规模回归前先估预算另外轨迹级指标依赖 tracing 开启纯黑盒跑法拿不到中间步骤。生态框架集成与路线图最相关的上下游工具按集成方式列OpenAI / Anthropic官方 client wrapper换 import 即可拿到 trace 和评测。LangChain / LangGraph通过CallbackHandler挂载到config[callbacks]链式调用全程被记录。Pydantic AI / CrewAI前者靠类型安全的自动回调后者一行instrument_crewai()完成埋点。LlamaIndex专用 handler 捕获 RAG 检索上下文直接喂给上下文类指标。OTel 后端trace 是标准 OpenTelemetry 格式可导出到任意兼容后端不锁定单一平台。社区信号方面仓库自带一套 TypeScript SDK 和完整文档站源码Python 侧测试套件覆盖到指标、tracing、集成三大块README 列出的框架集成目前有 12 个。路线图在 README 中有明确清单DAG 自定义指标和 Guardrails 两项尚未完成已勾选的包括 G-Eval、RAG 指标、会话指标、红队测试等。你的下一步git clone https://gitcode.com/GitHub_Trending/de/deepeval本地pip install -U deepeval用本文第4章的用例跑通第一条 PASS。打开 getting-started 文档把 quickstart 里的用例改成你业务的真实输入输出选 2-3 个贴合场景的指标。在 CI 流水线里加一步deepeval test run每晚跑一次基线数据集分数异常就收到告警。做完这三步你手里会有的是一个可以每晚自动回归的 LLM 质量基线任何一次 prompt 或模型改动第二天早上就知道是涨了还是跌了。【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价