惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
月光博客
月光博客
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Y
Y Combinator Blog
有赞技术团队
有赞技术团队
PCI Perspectives
PCI Perspectives
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
Latest news
Latest news
P
Palo Alto Networks Blog
Blog — PlanetScale
Blog — PlanetScale
Cyberwarzone
Cyberwarzone
P
Privacy International News Feed
Scott Helme
Scott Helme
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
F
Fortinet All Blogs
Engineering at Meta
Engineering at Meta
V
Vulnerabilities – Threatpost
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tor Project blog
S
Securelist
H
Hackread – Cybersecurity News, Data Breaches, AI and More
NISL@THU
NISL@THU
GbyAI
GbyAI
H
Hacker News: Front Page
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
U
Unit 42
T
The Blog of Author Tim Ferriss
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Cloudbric
Cloudbric
Microsoft Security Blog
Microsoft Security Blog
博客园 - Franky
L
LINUX DO - 最新话题
The Hacker News
The Hacker News
WordPress大学
WordPress大学
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
T
Threatpost
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
L
LINUX DO - 热门话题
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recorded Future
Recorded Future
K
Kaspersky official blog
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - work hard work smart

使用 LangChain + Hugging Face 构建文本向量化服务 SQLAlchemy 使用详解 Python 中使用 Elasticsearch 的完整指南 Qdrant 向量数据库使用指南 OpenEvals 快速入门:LLM 评估指南 LangSmith 批量评估完全指南 Qwen-Agent 入门指南:快速构建智能体应用 LangSmith 集成实战:从追踪到评估的完整指南 初识 go-zero:一款让你写后端更规范、更高效的 Go 微服务框架 RAG 中为什么需要 Rerank,以及如何使用 Rerank LangChain4j RAG 核心组件与组合方式 如何使用 Elasticsearch 进行全文检索和向量检索 MinerU Docker 部署指南 5 分钟上手:为 Cline 配置一个免费的 MCP 天气服务 Neo4j 图数据库安装与 Spring Boot 集成实战指南 LangFuse 实战指南:用 @observe 三行代码给 LLM 应用加上全链路追踪 Function Call 深度解析:让大模型从"嘴炮"到"实干"的技术革命 Spring AI 提示词模板实战:告别硬编码,实现提示词工程化管理 LangChain4j 实战指南:用 Java 轻松构建 AI 应用 Spring AI 对话短期记忆实战:让大模型拥有"记忆力" Spring AI 提示词工程实战:让大模型更懂你的意图 Spring AI ChatClient 深度解析:优雅构建大模型应用的利器 Spring AI Alibaba DashScopeChatModel 实战 Spring 中 SSE 流式输出的多种实现方式详解 OpenSandbox 实战指南:为 AI Agent 构建安全的代码执行沙箱 在本机启动 LangGraph 开发服务器:完整指南 DeepAgents中Backend的奥秘:让AI Agent拥有文件操作能力 为什么选择 Go 开发 Web 接口?从入门到实践 智能搜索DeepAgent笔记 RAG学习笔记2--系统查询流程 RAG学习笔记1--系统文件导入流程 百炼 WebSearch 快速入门指南 Python 连接 MongoDB 完整指南:从连接配置到增删改查实战 一行命令搞定 MongoDB 开发环境:Docker Compose 部署 + 可视化管理 使用 Attu 可视化管理 Milvus 向量数据库 在 Windows Docker 中快速安装 Milvus 2.5.6 minio使用 Spark 集群搭建 hadoop集群安装 Spring AI Alibaba 入门实战 Windows 安装 OpenClaw 实战指南 MyBatis 核心流程和原理 Idea中安装Claude code插件 Spark 编程 使用Matplotlib 绘制直方图 Flink安装部署 Flume安装 查找导致cpu过高的代码方法 JVisualVM监控远程Java进程 jmap jacoco多模块生成java单元测试报告实践 arthas 使用demo LockSupport Exchanger CyclicBarrier CountDownLatch 手把手教你用python开始第一个机器学习项目
DeepEval 快速入门:LLM 应用评估指南
work hard work smart · 2026-06-25 · via 博客园 - work hard work smart

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 界面

# 运行评估后,查看 Web 界面
deepeval test run your_test_file.py

访问 http://localhost: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 应用质量可控!🚀