Wink Pings

不用重构代码 一个Python装饰器搞定LLM应用组件级评估

多数LLM评估仅将应用作为黑盒进行端到端测试,无法定位检索、工具调用、模型本身等内部环节的问题。开源LLM评估框架DeepEval仅需一个Python装饰器,即可实现组件级追踪与评估,无需重构现有代码,支持数十种覆盖RAG、Agent、多轮对话、多模态等场景的评估指标,适配所有主流LLM开发框架,GitHub星标超15k,支持私有化部署保障数据安全。

做过LLM应用上线的人大概率都碰过这个问题:端到端测下来效果不好,不知道是检索器拉的上下文不对,还是工具调用的参数错了,或是大模型本身出了幻觉,排查起来全靠猜。

大部分现有LLM评估方案都把应用当黑盒,只看最终输出的好坏,相当于考试只给总分,不告诉哪道题错了,想优化都找不到切入点。

DeepEval解决的就是这个问题。这个开源LLM评估框架,核心只需要一个Python装饰器,3行代码就能实现全链路的组件级追踪,完全不用重构你已经写好的业务代码。

![DeepEval代码与评估界面演示](https://wink.run/image?url=https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FHI6eGW5aoAARN0J%3Fformat%3Djpg%26name%3Dlarge)

具体用法很简单:给你要追踪的每个组件(检索函数、工具调用逻辑、大模型生成函数等)加上`@observe`装饰器,给每个组件绑定对应的评估指标,运行后就能拿到可视化的拆解报告,每个环节的得分、问题一目了然。

DeepEval的GitHub仓库地址为 https://github.com/confident-ai/deepeval ,目前星标超过15k,完全开源,支持私有化部署,所有数据都可以存在自己的服务器上,不用外泄。

DeepEval logo

它的定位相当于专门为LLM应用打造的Pytest单元测试框架,集成了大量学界最新的评估研究成果,提供几十种开箱即用的评估指标,覆盖几乎所有主流LLM应用场景:

- 通用类:支持自定义评估标准的G-Eval、幻觉检测、偏见检测、毒性检测、JSON格式校验等

- RAG场景:回答相关性、事实一致性、上下文召回率、上下文准确率等

- Agent场景:任务完成率、工具调用正确率、步骤效率、计划符合度等

- 多轮对话场景:知识留存率、对话完整性、角色符合度等

- 多模态场景:文生图质量、图文一致性、图片有用性等

- MCP场景:MCP服务使用率、任务完成率等

所有指标既可以用任意大模型作为裁判打分,也可以用本地运行的NLP模型计算,不需要绑定特定的大模型服务商。

DeepEval运行演示

适配性方面,DeepEval可以无缝接入几乎所有主流LLM开发框架,包括OpenAI、Anthropic、LangChain、LangGraph、CrewAI、LlamaIndex、Pydantic AI等,不管你现在的项目用什么技术栈,都能快速接入。它还支持集成到CI/CD流程,每次代码提交自动跑评估,避免出现效果回退。

除了本地运行的框架,它还有配套的云端平台Confident AI,可以统一管理测试数据集、查看全链路追踪、生成可分享的测试报告,也提供了MCP服务器,可以直接在Cursor、Claude Code等编辑器里调用评估能力,不用切换界面就能完成测试、调试、优化全流程。不想用云端服务的用户,所有功能都可以完全在本地运行,满足合规要求。

Confident AI MCP架构图

快速上手也很简单,只需要三步:

1. 安装:`pip install -U deepeval`,支持Python 3.9及以上版本

2. 写测试用例:和普通Pytest用例逻辑一致,定义输入、实际输出、预期输出和对应评估指标即可,示例如下:

```python

from deepeval import assert_test

from deepeval.metrics import GEval

from deepeval.test_case import LLMTestCase, SingleTurnParams

def test_case():

correctness_metric = GEval(

name="Correctness",

criteria="判断实际输出是否与预期输出一致",

evaluation_params=[SingleTurnParams.ACTUAL_OUTPUT, SingleTurnParams.EXPECTED_OUTPUT],

threshold=0.5

)

test_case = LLMTestCase(

input="鞋子不合脚怎么办?",

actual_output="30天内可以免费全额退款",

expected_output="我们提供30天免费全额退款服务",

retrieval_context=["所有用户都可享受30天免费全额退款"]

)

assert_test(test_case, [correctness_metric])

```

3. 运行测试:执行`deepeval test run`命令就能拿到测试结果

如果是已经写好的现有应用,只需要给对应函数加上`@observe`装饰器,不用修改函数内部逻辑,就能自动收集每个环节的运行数据,完成组件级评估。对于不想用Pytest集成的用户,也可以直接在笔记本环境调用评估接口,或是单独使用任意一个评估指标。

发布时间: 2026-05-23 00:35