work hard work smart

专注于AI+Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DeepEval 快速入门:LLM 应用评估指南

Posted on 2026-06-25 16:12  work hard work smart  阅读(6)  评论(0)    收藏  举报

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 应用质量可控!🚀