news 2026/9/9 14:59:01

如何 10 分钟跑通 DeepEval 本地 LLM 评测:一份完整的新手指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何 10 分钟跑通 DeepEval 本地 LLM 评测:一份完整的新手指南

如何 10 分钟跑通 DeepEval 本地 LLM 评测:一份完整的新手指南

【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval

如果你已经搭好了 RAG 问答或 AI Agent 应用,但每次改 prompt、换模型后只能靠人工抽查来判断质量,这篇指南就是为你写的。DeepEval 是一个专用于 LLM 评测的开源框架:它像 pytest 一样收集测试用例,用内置指标在本机自动打分。读完本文,你会完成三件事——跑通第一条评测、用指标批量给 RAG 应用打分、把评测接进 CI 做自动回归。

三步从零跑通 DeepEval 本地评测环境

步骤 1:安装 DeepEval

DeepEval 要求 Python 3.9+,在你的虚拟环境中执行:

pip install -U deepeval

它会自动接入 pytest,后续deepeval test run会以 pytest 的方式收集并执行你的评测文件。

步骤 2:写第一个测试用例

新建test_chatbot.py

from deepeval import assert_test from deepeval.test_case import LLMTestCase, SingleTurnParams from deepeval.metrics import GEval metric = GEval( name="Correctness", criteria="Determine if the 'actual output' is correct based on the 'expected output'.", evaluation_params=[SingleTurnParams.ACTUAL_OUTPUT, SingleTurnParams.EXPECTED_OUTPUT], threshold=0.5, ) case = LLMTestCase( input="If these shoes don't fit, what can I do?", actual_output="You can get a full refund within 30 days for free.", expected_output="We provide a full refund within 30 days for free.", ) assert_test(case, [metric])

这段代码把"用户问题 + 应用真实输出 + 期望答案"打包成一个测试用例,交给 GEval 这个 LLM-as-a-judge(让另一个大模型当裁判)指标按 0~1 分打分,低于 threshold 就判定失败。actual_output在真实项目里应替换成你应用的真实输出。

步骤 3:执行评测

deepeval test run test_chatbot.py

终端会输出每条指标的得分和整体结论,首次跑通 ✅ 之后,你就有了一套可以反复执行的 LLM 回归测试。更多入门细节可参考官方文档 docs/content/docs/getting-started.mdx。

用 DeepEval 内置指标给 RAG 应用打分

逐个手写评测逻辑很慢,DeepEval 内置了 30+ 开箱即用的指标(实现在 deepeval/metrics/),覆盖相关性、事实性、安全性等维度。最常用的几个:

指标作用
AnswerRelevancyMetric衡量回答与问题的相关性
FaithfulnessMetric衡量回答是否忠实于检索上下文,检测幻觉
ContextualRecallMetric检查检索上下文是否覆盖期望答案所需信息
HallucinationMetric检查输出与给定上下文是否冲突
ToxicityMetric / BiasMetric检查输出是否有害、是否含偏见

当你手头有一批 Golden 数据(每条含 input、actual_output、retrieval_context)时,用evaluate()一次批量打分:

from deepeval import evaluate from deepeval.metrics import AnswerRelevancyMetric, FaithfulnessMetric evaluate( test_cases=dataset, metrics=[ AnswerRelevancyMetric(threshold=0.7), FaithfulnessMetric(threshold=0.7), ], )

evaluate()会跑完所有用例并输出包含各指标得分与通过率的汇总,方便你对比不同 prompt 或不同模型的版本差异。指标全貌与选型建议见 docs/content/docs/metrics-introduction.mdx。

测试用例不够?批量合成 Golden 数据

真实业务的测试数据往往很少,DeepEval 的 Synthesizer 可以基于你描述的"场景 + 任务 + 输入格式"批量生成 Golden 数据集,省去手工标注。

from deepeval.synthesizer import Synthesizer from deepeval.synthesizer.config import StylingConfig styling = StylingConfig( scenario="A customer support chatbot for a shoe store", task="Answer questions about returns and refunds", input_format="A short user question in plain language", ) goldens = Synthesizer(styling_config=styling).generate_goldens_from_scratch(num_goldens=20)

运行后你会得到 20 条带标准答案的测试数据,可以直接喂给前面的evaluate()。如果手头已有业务文档,也可以改用generate_goldens_from_docs从文档中提取问答对,让评测更贴近实际场景。

把 DeepEval 接进 CI/CD:模型一改就自动回归

人工跑评测很容易漏,把评测放进流水线,才能保证"每次改动都有评测兜底"。DeepEval 的测试文件就是标准 pytest 用例,接入 CI 很简单:

jobs: eval: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.11" - run: pip install -U deepeval - run: deepeval test run tests/

这样每当代码合并或模型更新时自动触发一轮评测 🔁,指标不达标流水线即失败,prompt 漂移、模型降级这类问题能在上线前被拦住。

DeepEval 评测常见问题排查

问题 1:用例总是失败,得分忽高忽低。LLM-as-a-judge 类指标本身带有一定随机性。先确认裁判模型可用(需配置对应模型的环境变量,或换成你指定的模型),再把 threshold 调到合理及格线;对关键用例连续跑几次,观察得分是否稳定。

问题 2:RAG 指标报错或结果无效。Faithfulness、Contextual 系列指标都依赖retrieval_context字段。检查你的测试用例或 Golden 里是否填入了实际检索到的上下文,而不是只填了问题和答案。

问题 3:评测跑得慢、裁判调用费用高。裁判模型调用次数约等于用例数 × 指标数。可以先用 ExactMatchMetric、JsonCorrectnessMetric 这类纯规则指标做初筛,再对可疑用例跑 LLM 裁判指标,也能明显降低调用量。

问题 4:评测数据不想出内网。把裁判模型换成本地部署的开源模型即可:继承 DeepEval 提供的DeepEvalBaseLLM基类、实现自己的调用接口,评测流程就完全在本机执行,数据不出环境。

总结:下一步可以直接做的 3 件事

DeepEval 的价值不在于单个指标多精确,而在于把"LLM 质量"从主观感受变成可量化、可回归的测试,让每次改 prompt、换模型都有据可依。建议按顺序推进:

  1. 克隆仓库git clone https://gitcode.com/GitHub_Trending/de/deepeval,对照 examples/ 目录的示例,给你的应用写下第一条assert_test
  2. 用 Synthesizer 生成 20 条 Golden 数据,跑一次 AnswerRelevancy + Faithfulness,记下基线分数。
  3. deepeval test run加进 CI,让"改一版 prompt 就回归一次"成为团队的默认流程。

【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 14:58:49

端侧AI算力选型实战:从TOPS到真实帧率的避坑指南

最近给一台四足机器人做机载感知系统升级,顺便把手头几块端侧算力板卡拉到实车环境里跑了一轮对比测试。这个项目折腾了将近三个月,踩了不少坑,也摸出了一些选型规律。今天把这些实测数据和教训整理出来,给正在做具身智能车载/机载…

作者头像 李华
网站建设 2026/9/9 14:58:17

坐标换带计算全解析:从高斯投影原理到批量工具实现

简介:坐标换带计算小工具是一份面向GIS、测绘及规划从业者的实用资源,重点解决3度带与6度带之间的坐标转换问题,并附带地理信息系统课程电子教案,适合需要理解投影带原理或进行批量坐标换算的读者。压缩包共14个文件,含…

作者头像 李华
网站建设 2026/9/9 14:57:21

自适应混沌粒子群ACPSO与PSO的Matlab实现及多峰函数对比

很多人拿到PSO代码之后第一件事就是换测试函数、跑收敛曲线,然后发现传统PSO在单峰函数上表现尚可,一到Rastrigin这种多峰函数就容易原地打转。这个问题不是粒子数不够,也不是迭代次数太少,而是经典结构里缺少“逃离局部最优”的机…

作者头像 李华
网站建设 2026/9/9 14:57:11

Java入门完整学习路径:从语法基础到JVM内存与面试准备

1. 先说清楚:Java这扇门里到底有什么很多人一提到 Java 入门,第一反应是"学会语法、能跑通 Hello World、会用 IDEA 写个上课作业",然后就开始纠结是看视频还是看书。等真去投简历了,又发现面试题里全是 JVM、集合源码、…

作者头像 李华
网站建设 2026/9/9 14:57:02

单片机计算机毕设之基于 STM32 的环境温度校正超声波测距移动端监控系统实现 基于 STM32 的 ESP32‑CAM 视频超声波安防预警系统设计与开发(014207)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/9/9 14:56:59

计及N-k安全约束的含光热电站优化调度Matlab实现

做电力系统优化调度的朋友,这几年一定没少被“含光热电站”和“N-k安全约束”这两个词刷屏。光热电站和光伏不一样,它带储热系统,可以把中午的光照能量挪到晚上用,这让它从一个标准的“新能源”变成一个具备可调度性的电源。而N-k…

作者头像 李华