3 个场景跑通 LLM 评估DeepEval 从 RAG 问答到多轮客服的落地路径【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval改了 prompt效果到底是变好还是变差多数人都说不清。上线全靠感觉回归只能人肉抽查这是很多 LLM 团队的日常。DeepEval 是一个用 Python 写的 LLM 评估框架你可以把它当成 LLM 测试框架来用把真实流量整理成测试用例选几个指标打分看趋势决定改动上不上线。它的核心思路叫 LLM-as-a-Judge用一个 LLM 充当裁判按固定标准给另一个 LLM 的输出打分。为什么你的 LLM 应用需要一套体检表体检表的价值不在于指标多而在于可比。没有分数每次改动都是玄学有了分数prompt 调优、模型升级、检索参数变化都能用同一把尺子衡量。DeepEval 内置了几十个指标覆盖 RAG、多轮对话、工具调用这些常见形态指标实现都放在deepeval/metrics/目录下按场景取用即可。每个指标输出 0~1 的分数同时给出推理过程方便你判断这个分打得好不好。阈值默认 0.5可按场景收紧。说白了它把感觉还行变成了0.82比上个版本高 3 个点。先搞懂DeepEval 怎么打分的流程很直接你提供一个测试用例Test Case里面装输入、实际输出、检索上下文这些原料每个指标读原料输出一个 0~1 的分数再和阈值对比——默认阈值是 0.5超过算通过低于算不通过。分数不是黑盒每个指标都会附一段推理过程说明为什么打这个分。指标背后有三种打分方法区别一句话就能说清方法一句话区别QAG把问题拆成小问答逐项核对回答与检索上下文是否一致DAG把评分逻辑写成 if/else 决策树纯代码判定不经过模型G-Eval你用自然语言写标准LLM 按标准直接打分LLM-as-a-Judge整体思路让模型当裁判用结构化提示词输出分数加理由知道这个机制后面挑指标就不慌了。分数低时先看推理过程再决定是改模型、改提示词还是改检索。按你的场景挑指标我搭了个 RAG 问答机器人怕它瞎编瞎编在评估里叫幻觉对应的指标是忠实度Faithfulness即回答有没有脱离给定的资料瞎说。但光查忠实度不够资料本身没检索到关键点回答同样会偏。所以 RAG 评估指标一般至少配两个——忠实度盯生成器上下文相关性Contextual Relevancy盯检索器分数低时你能分清锅在谁。from deepeval import evaluate from deepeval.metrics import FaithfulnessMetric, ContextualRelevancyMetric from deepeval.test_case import LLMTestCase test_case LLMTestCase( input退款政策是什么, actual_output7 天内可无理由退款。, retrieval_context[本店支持 7 天无理由退款, 运费险默认赠送], ) results evaluate( test_cases[test_case], metrics[ FaithfulnessMetric(threshold0.7), ContextualRelevancyMetric(threshold0.6), ], ) for r in results: print(r.metric_name, round(r.score, 2), r.successful)阈值怎么定金融、医疗这类容错低的场景忠实度建议 0.8 起步因为编一句比答不上伤害大得多普通知识库问答可以先从 0.5 或 0.6 跑观察分数分布后再收紧。我的客服多轮对话经常失忆怎么量化用户第三轮说就按刚才那个方案办模型回一句请问您指的是哪个方案——这就是失忆。量化它用知识保留度Knowledge Retention检查早期轮次给出的信息在后续轮次是否还被正确引用。再配一个角色一致性Role Adherence确认人设在整段对话里没有崩一个盯信息一个盯人设对话系统评估的最低配置就有了。from deepeval import evaluate from deepeval.test_case import ConversationalTestCase, Turn from deepeval.metrics import KnowledgeRetentionMetric, RoleAdherenceMetric case ConversationalTestCase( chatbot_role售后客服只处理退款和物流问题, turns[ Turn(roleuser, content我要退订单 8812 的款), Turn(roleassistant, content好的已为您登记订单 8812 的退款申请。), Turn(roleuser, content刚才那个订单顺便改成顺丰), Turn(roleassistant, content请提供一下需要改快递的订单号。), ], ) results evaluate( test_cases[case], metrics[ KnowledgeRetentionMetric(threshold0.6), RoleAdherenceMetric(threshold0.6), ], ) for r in results: print(r.metric_name, round(r.score, 2), r.successful)阈值建议客服场景里失忆直接影响工单量知识保留度可以压到 0.7角色一致性按品牌调性定普通导购 0.6 就够人设是卖点的 IP 对话建议 0.8。内置指标不够用我想按自己的业务标准打分内置指标都是通用标准而业务标准往往更具体比如客服必须主动给出下一步。这类需求交给 G-Eval一段自然语言写清楚标准框架负责把它变成结构化打分提示词。这也是写 G-Eval 自定义指标最省事的地方——不用碰提示词工程。如果你的规则足够硬比如必须包含订单号更适合用 DAG 指标写成代码决策树确定性强、结果可复现不走模型。from deepeval import evaluate from deepeval.metrics import GEval from deepeval.test_case import LLMTestCase, LLMTestCaseParams metric GEval( name客服解决力, criteria回复是否解决了用户问题且没有推诿或敷衍。 解决给高分仅安抚情绪最高 0.5。, evaluation_params[LLMTestCaseParams.INPUT, LLMTestCaseParams.ACTUAL_OUTPUT], threshold0.6, ) case LLMTestCase( input订单 8812 怎么还没退款, actual_output8812 已受理预计 1-3 个工作日原路退回无需操作。, ) evaluate(test_cases[case], metrics[metric])阈值别照抄自定义标准的分数方差通常比内置指标大建议先拿 20~50 条人工标好的用例校准标准写得模糊就补例子分数稳定后再定阈值。把评估跑进你的工作流CI 回归deepeval test run直接对接 pytest挂在 CI 里跑。指标分低于阈值就阻断合入prompt 改动从此有护栏。生产追踪给线上代码加observe装饰器采样真实请求和响应坏 case 能回流成新的测试用例。模型 A/B候选模型上线前用 ArenaGEval 让裁判盲评两个模型在相同输入下的输出比盯着大盘指标猜更有说服力。更多细节可以翻仓库里的文档目录docs/content/docs/按指标章节对照着读。from deepeval.tracing import observe observe def answer(question: str) - str: return llm_chat(question)一句话总结别贪多挑 2 个指标、10 条真实用例先把用例→打分→阈值这条链路跑通再按场景逐步加指标。【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考