DeepEval 快速入门:LLM 应用评估指南
什么是 DeepEval?
DeepEval 是一个开源的 LLM 评估框架,用于测试和评估大语言模型应用的质量。它提供多种内置评估指标,支持自定义评估标准。
特点:
- 开源免费
- 安装简单
- 内置丰富评估指标
- 支持自定义评估
安装
pip install deepeval
配置环境变量:
# Windows PowerShell
$env:OPENAI_API_KEY="your-openai-key"
# Linux/Mac
export OPENAI_API_KEY="your-openai-key"
核心概念
1. 测试用例(LLMTestCase)
每个测试用例包含三个要素:
from deepeval.test_case import LLMTestCase
test_case = LLMTestCase(
input="用户问题", # 输入
actual_output="AI回答", # 实际输出
retrieval_context=["背景信息"] # 可选:参考上下文
)
2. 评估指标(Metrics)
DeepEval 提供多种内置指标:
from deepeval.metrics import (
AnswerRelevancyMetric, # 答案相关性
HallucinationMetric, # 幻觉检测
FaithfulnessMetric, # 忠实度
ContextualPrecisionMetric # 上下文精确度
)
# 创建指标
metric = AnswerRelevancyMetric(
threshold=0.7, # 通过阈值
model="gpt-4o-mini", # 评估模型
include_reason=True # 包含评分理由
)
3. 运行评估
from deepeval import evaluate
results = evaluate(
test_cases=[test_case1, test_case2],
metrics=[metric1, metric2]
)
完整示例:智能客服评估
场景
评估一个电商客服助手的回答质量。
步骤 1:定义应用
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# 定义客服助手
llm = ChatOpenAI(model="gpt-3.5-turbo")
prompt = ChatPromptTemplate.from_messages([
("system", "你是电商客服,专业友好地回答问题。"),
("user", "{question}")
])
chain = prompt | llm
def customer_service(question: str) -> str:
response = chain.invoke({"question": question})
return response.content
步骤 2:准备测试数据
test_data = [
{
"input": "我的订单什么时候能到?",
"context": ["订单号:12345", "发货时间:2024-01-15"]
},
{
"input": "这个商品支持退货吗?",
"context": ["退货政策:7天无理由退货"]
},
{
"input": "有什么优惠活动吗?",
"context": ["当前活动:满100减20"]
}
]
步骤 3:创建测试用例
from deepeval.test_case import LLMTestCase
test_cases = []
for data in test_data:
# 运行应用获取回答
answer = customer_service(data["input"])
# 创建测试用例
test_case = LLMTestCase(
input=data["input"],
actual_output=answer,
retrieval_context=data["context"]
)
test_cases.append(test_case)
步骤 4:配置评估指标
from deepeval.metrics import (
AnswerRelevancyMetric,
HallucinationMetric
)
metrics = [
# 答案相关性
AnswerRelevancyMetric(
threshold=0.7,
model="gpt-4o-mini"
),
# 幻觉检测
HallucinationMetric(
threshold=0.5,
model="gpt-4o-mini"
)
]
步骤 5:运行评估
from deepeval import evaluate
results = evaluate(
test_cases=test_cases,
metrics=metrics,
print_results=True
)
自定义评估指标
使用 GEval 创建自定义评估:
from deepeval.metrics import GEval
from deepeval.test_case import LLMTestCaseParams
custom_metric = GEval(
name="服务态度",
criteria="评估客服回答是否专业、友好、有同理心",
evaluation_params=[
LLMTestCaseParams.INPUT,
LLMTestCaseParams.ACTUAL_OUTPUT
],
evaluation_steps=[
"检查是否使用礼貌用语",
"评估语气是否友好",
"判断是否有同理心"
],
threshold=0.6,
model="gpt-4o-mini"
)
Pytest 集成
DeepEval 可以与 pytest 集成,实现自动化测试:
from deepeval import assert_test
from deepeval.test_case import LLMTestCase
from deepeval.metrics import AnswerRelevancyMetric
def test_customer_service():
# 创建测试用例
test_case = LLMTestCase(
input="订单什么时候到?",
actual_output="您的订单预计明天送达",
retrieval_context=["订单号:12345"]
)
# 定义指标
metric = AnswerRelevancyMetric(threshold=0.7, model="gpt-4o-mini")
# 断言测试通过
assert_test(test_case, [metric])
运行测试:
pytest test_customer_service.py
常用评估指标
| 指标 | 用途 | 适用场景 |
|---|---|---|
| AnswerRelevancyMetric | 答案相关性 | 评估回答是否切题 |
| HallucinationMetric | 幻觉检测 | 检测是否编造信息 |
| FaithfulnessMetric | 忠实度 | 评估是否基于上下文 |
| ContextualPrecisionMetric | 上下文精确度 | 评估检索质量 |
| BiasMetric | 偏见检测 | 检测偏见内容 |
| ToxicityMetric | 毒性检测 | 检测有害内容 |
查看结果
方式 1:终端输出(推荐)
results = evaluate(
test_cases=test_cases,
metrics=metrics,
print_results=True # 打印结果
)
结果会直接显示在终端中,包括:
- 每个测试用例的得分
- 各项指标的评估结果
- 总体统计信息
方式 2:Web 界面(可选)
# 使用 DeepEval CLI 运行并查看 Web 界面
deepeval test run your_test_file.py
可以访问本地 Web 界面查看可视化报告(默认端口:19820)。
最佳实践
1. 设置合理阈值
# 根据场景调整阈值
metric = AnswerRelevancyMetric(
threshold=0.7, # 严格场景:0.8+
# 一般场景:0.6-0.7
# 宽松场景:0.5
model="gpt-4o-mini"
)
2. 组合多个指标
metrics = [
AnswerRelevancyMetric(threshold=0.7, model="gpt-4o-mini"),
HallucinationMetric(threshold=0.5, model="gpt-4o-mini"),
FaithfulnessMetric(threshold=0.6, model="gpt-4o-mini")
]
3. 准备高质量测试数据
# ✅ 好的测试数据
{
"input": "订单延迟了怎么办?",
"context": ["订单政策:延迟赔偿10元", "客服流程:先道歉再解决方案"]
}
# ❌ 差的测试数据
{
"input": "你好",
"context": []
}
总结
DeepEval 的优势
| 维度 | 说明 |
|---|---|
| 易用性 | 几行代码即可开始评估 |
| 开源免费 | 无使用限制 |
| 丰富指标 | 内置多种评估指标 |
| 可扩展 | 支持自定义评估 |
| CI/CD 集成 | 支持 pytest |
适用场景
- ✅ LLM 应用上线前测试
- ✅ 提示词优化后验证
- ✅ 模型对比评估
- ✅ 持续质量监控
开始使用 DeepEval,让你的 LLM 应用质量可控!🚀
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号