3步打造LLM评测黄金标准:DeepEval Golden数据全攻略
你是否还在为LLM评测数据质量差而烦恼?是否因测试用例覆盖不全导致线上故障?本文将系统讲解DeepEval中Golden数据(基准数据)的科学创建方法,帮助你构建可靠的LLM评测体系。读完本文后,你将掌握:
- 单轮与多轮Golden数据的核心结构
- 3种高效创建Golden数据集的实战方法
- 数据集的存储、加载与版本管理技巧
- 自动化生成测试数据的高级策略
Golden数据基础:从定义到结构
什么是Golden数据?
在DeepEval中,Golden数据(基准数据)是评估LLM性能的"标准答案"模板,包含输入、预期输出及相关上下文信息。与直接使用测试用例不同,Golden数据具有更高的灵活性,支持跨版本对比、迭代测试和动态生成评估用例。
核心数据模型
DeepEval提供两种Golden数据模型,分别适用于不同场景:
单轮Golden数据:适用于问答系统、分类任务等单次交互场景,定义在deepeval/dataset/golden.py中:
from deepeval.dataset import Golden
# 基础单轮Golden数据结构
golden = Golden(
input="什么是LLM评测?", # 用户输入
expected_output="LLM评测是评估大语言模型性能的过程", # 预期输出
context=["LLM即大语言模型,是一种基于深度学习的自然语言处理模型"], # 参考上下文
additional_metadata={"difficulty": "easy", "domain": "ai"} # 额外元数据
)
多轮ConversationalGolden数据:适用于对话系统、多轮交互场景:
from deepeval.dataset import ConversationalGolden
# 多轮对话Golden数据结构
conversational_golden = ConversationalGolden(
scenario="用户咨询产品退款流程", # 对话场景描述
expected_outcome="引导用户联系人工客服处理退款", # 预期结果
user_description="新用户,对退款政策不了解,情绪略显急躁", # 用户特征
context=["产品支持30天无理由退款", "退款需提供订单号"] # 背景信息
)
数据模型对比
| 类型 | 核心字段 | 适用场景 | 定义文件 |
|---|---|---|---|
| Golden | input, expected_output | 问答、分类、单轮任务 | deepeval/dataset/golden.py |
| ConversationalGolden | scenario, expected_outcome | 对话系统、多轮交互 | deepeval/dataset/golden.py |
实战指南:3种创建Golden数据集的方法
方法1:手动创建基础数据集
适合场景:小型项目、特定测试场景、需要精确定义的关键用例。
创建步骤:
- 初始化空数据集:
from deepeval.dataset import EvaluationDataset
# 创建空数据集
dataset = EvaluationDataset()
- 添加单轮Golden数据:
# 添加单轮数据
dataset.add_golden(Golden(
input="如何重置密码?",
expected_output="请点击登录页面的'忘记密码'链接",
context=["密码重置需要验证邮箱", "重置链接有效期24小时"]
))
- 添加多轮对话数据:
# 添加多轮对话数据
dataset.add_golden(ConversationalGolden(
scenario="用户投诉订单未送达",
expected_outcome="查询订单状态并安排补发",
user_description="VIP用户,第三次购买,订单延迟3天"
))
- 验证数据集类型:
print(dataset._multi_turn) # 输出False表示单轮数据集,True表示多轮数据集
方法2:从文件导入现有数据
适合场景:已有历史对话记录、外部标注数据、批量迁移测试用例。
DeepEval支持从JSON和CSV文件导入数据,自动映射为Golden数据结构:
从JSON文件导入:
# 从JSON文件导入Golden数据
dataset.add_goldens_from_json_file(
file_path="existing_test_cases.json",
input_key_name="question", # 映射自定义输入字段
expected_output_key_name="answer" # 映射自定义预期输出字段
)
从CSV文件导入:
# 从CSV文件导入Golden数据
dataset.add_goldens_from_csv_file(
file_path="qa_dataset.csv",
context_col_delimiter=";" # 指定上下文列表的分隔符
)
文件格式要求:
- JSON文件应包含对象数组,每个对象代表一个Golden数据
- CSV文件需包含标题行,列名建议与Golden字段对应
方法3:自动化生成合成数据
适合场景:快速构建大规模数据集、覆盖边缘场景、缺乏人工标注资源时。
DeepEval提供Synthesizer工具,支持从文档自动生成高质量Golden数据:
from deepeval.synthesizer import Synthesizer
# 从文档生成Golden数据
synthesizer = Synthesizer()
goldens = synthesizer.generate_goldens_from_docs(
document_paths=[
"docs/product_manual.pdf",
"docs/faq.txt",
"docs/api_docs.docx"
],
num_questions_per_document=5 # 每文档生成5个问题
)
# 创建数据集
dataset = EvaluationDataset(goldens=goldens)
支持的文档类型包括PDF、TXT、DOCX等常见格式,生成过程完全在本地进行,保障数据隐私。
数据集管理:存储、加载与版本控制
本地存储方案
保存为JSON格式:
# 保存为JSON文件
dataset.save_as(
file_type="json",
directory="./datasets",
file_name="product_qa_goldens",
include_test_cases=False # 是否包含测试用例
)
保存为CSV格式:
# 保存为CSV文件
dataset.save_as(
file_type="csv",
directory="./datasets",
file_name="customer_service_goldens"
)
保存后将在指定目录生成包含时间戳的文件,如product_qa_goldens_20250415_143022.json,便于版本追踪。
高级管理:使用Confident AI平台
对于团队协作和大规模数据集管理,推荐使用Confident AI平台(与DeepEval无缝集成):
# 推送到Confident AI平台
dataset.push(
alias="customer_service_v2", # 数据集别名
finalized=True, # 是否标记为最终版本
overwrite=False # 是否覆盖现有数据集
)
# 从平台拉取数据集
dataset = EvaluationDataset()
dataset.pull(alias="customer_service_v2")
通过平台可实现:
- 多人协作标注Golden数据
- 可视化数据质量分析
- 数据集版本对比
- 自定义字段扩展
高级技巧:提升Golden数据质量的策略
科学设计评估维度
优质的Golden数据应覆盖多个评估维度,参考DeepEval官方文档建议:
- 功能完整性:验证所有功能点是否被覆盖
- 边界测试:包含极端值、特殊字符、歧义输入
- 领域覆盖:平衡不同主题和难度级别的数据
- 真实场景:模拟实际使用中的各种用户行为和请求
自动化生成多轮对话数据
使用ConversationSimulator生成逼真的多轮对话数据:
from deepeval.simulator import ConversationSimulator
# 初始化对话模拟器
simulator = ConversationSimulator(
user_intentions={"查询订单": 0.3, "投诉物流": 0.5, "咨询退换货": 0.2},
user_profile_items=["姓名", "订单号", "购买日期", "产品型号"]
)
# 定义LLM回调函数
async def model_callback(input: str, conversation_history: list):
# 这里连接你的LLM应用
return llm_app(input, conversation_history)
# 生成对话测试用例
conversations = simulator.simulate(
model_callback=model_callback,
stopping_criteria="当用户问题得到解决或转人工时停止",
num_conversations=10 # 生成10组对话
)
数据质量检查清单
创建Golden数据时,建议使用以下检查项确保质量:
- [ ] 输入是否覆盖不同场景和难度级别
- [ ] 预期输出是否明确且无歧义
- [ ] 上下文信息是否准确完整
- [ ] 是否包含适当比例的边缘案例
- [ ] 元数据是否有助于分析评估结果
最佳实践与常见问题
性能优化建议
- 对于大型数据集(>1000条),建议分批次加载和处理
- 使用元数据进行数据分类,便于按需加载特定子集
- 频繁使用的数据集可保存为JSON格式,加载速度更快
常见问题解决
Q: 如何处理多轮对话中的上下文依赖问题?
A: 使用additional_metadata存储对话状态,或通过turns参数保存完整对话历史:
# 带对话历史的多轮Golden数据
conversational_golden = ConversationalGolden(
scenario="技术支持故障排查",
expected_outcome="解决用户网络连接问题",
turns=[
{"role": "user", "content": "我的网络连接不上"},
{"role": "assistant", "content": "请检查您的路由器电源"}
]
)
Q: 如何确保Golden数据与生产环境一致?
A: 定期从生产日志中提取真实对话,使用Synthesizer生成衍生测试用例,保持Golden数据的时效性。
总结与下一步
本文详细介绍了DeepEval中Golden数据的创建方法,从基础定义到高级技巧,涵盖了单轮和多轮数据模型、三种创建方法、数据集管理和质量优化策略。通过科学创建Golden数据,你可以构建可靠的LLM评测体系,有效捕捉模型性能变化。
后续学习路径
- 学习如何使用Golden数据集进行评估:docs/docs/evaluation-datasets.mdx
- 探索高级评估指标:docs/docs/metrics-introduction.mdx
- 了解如何在CI/CD流程中集成LLM评测:docs/guides/guides-regression-testing-in-cicd.mdx
通过掌握Golden数据创建方法,你已迈出构建可靠LLM评测体系的关键一步。下一步,建议从实际项目中选择一个场景,应用本文介绍的方法创建首个Golden数据集,并通过DeepEval进行评估实践。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00