首页
/ 3步打造LLM评测黄金标准:DeepEval Golden数据全攻略

3步打造LLM评测黄金标准:DeepEval Golden数据全攻略

2026-02-04 04:33:39作者:翟萌耘Ralph

你是否还在为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:手动创建基础数据集

适合场景:小型项目、特定测试场景、需要精确定义的关键用例。

创建步骤

  1. 初始化空数据集:
from deepeval.dataset import EvaluationDataset

# 创建空数据集
dataset = EvaluationDataset()
  1. 添加单轮Golden数据:
# 添加单轮数据
dataset.add_golden(Golden(
    input="如何重置密码?",
    expected_output="请点击登录页面的'忘记密码'链接",
    context=["密码重置需要验证邮箱", "重置链接有效期24小时"]
))
  1. 添加多轮对话数据:
# 添加多轮对话数据
dataset.add_golden(ConversationalGolden(
    scenario="用户投诉订单未送达",
    expected_outcome="查询订单状态并安排补发",
    user_description="VIP用户,第三次购买,订单延迟3天"
))
  1. 验证数据集类型:
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评测体系,有效捕捉模型性能变化。

后续学习路径

  1. 学习如何使用Golden数据集进行评估:docs/docs/evaluation-datasets.mdx
  2. 探索高级评估指标:docs/docs/metrics-introduction.mdx
  3. 了解如何在CI/CD流程中集成LLM评测:docs/guides/guides-regression-testing-in-cicd.mdx

通过掌握Golden数据创建方法,你已迈出构建可靠LLM评测体系的关键一步。下一步,建议从实际项目中选择一个场景,应用本文介绍的方法创建首个Golden数据集,并通过DeepEval进行评估实践。

登录后查看全文
热门项目推荐
相关项目推荐