当前位置: 首页 > news >正文

大模型测评从入门到精通 - 初核心概念

文章目录

    • 核心概念 - 像专家一样思考
      • 2.1 测试用例 (Test Case) —— 评估的原子单位
        • 单轮 vs 多轮测试用例
      • 2.2 指标 (Metric) —— 你的评估标尺
      • 2.3 数据集 (Dataset) —— 测试的弹药库
      • 2.4 评估方式 —— 三种运行模式
        • 方式一:使用 `assert_test` (Pytest 风格)
        • 方式二:使用 `evaluate` 函数
        • 方式三:独立运行指标
      • 2.5 核心架构图

核心概念 - 像专家一样思考

大半夜的加完班更一贴吧,希望大家都像标题一样像专家一样思考 莫给队友添负担

2.1 测试用例 (Test Case) —— 评估的原子单位

在 DeepEval 中,测试用例 (Test Case)是评估的最小单位。想象它是一份"试卷",包含:

小白划重点🎯

LLMTestCase想象成一个字典/JSON 对象,里面装着评估需要的所有信息。
DeepEval 会拿这些信息去"问"评判 LLM:“嘿,看看这个回答怎么样?”

  • 题目(input): 用户的问题或指令
  • 学生答案(actual_output): 你的 LLM 应用的输出
  • 标准答案(expected_output): 期望的理想回答(可选)
  • 参考资料(context): 提供给 LLM 的背景知识(可选)
  • 检索结果(retrieval_context): RAG 系统检索到的文档(可选)
  • 工具调用(tools_called): Agent 调用的工具列表(可选)
  • 期望工具(expected_tools): 期望 Agent 调用的工具(可选)
fromdeepeval.test_caseimportLLMTestCase,ToolCall test_case=LLMTestCase(input="What if these shoes don't fit?",# 用户问题expected_output="You're eligible for a 30 day refund.",# 期望回答actual_output="We offer a 30-day full refund at no extra cost.",# 实际回答context=["All customers are eligible for a 30 day full refund at no extra cost."],# 上下文retrieval_context=["Only shoes can be refunded."],# 检索结果tools_called=[ToolCall(name="WebSearch")]# 调用的工具)
单轮 vs 多轮测试用例
fromdeepeval.test_caseimportLLMTestCase,ConversationalTestCase,LLMTestCase# 单轮测试:一问一答single_turn=LLMTestCase(input="What's the weather today?",actual_output="It's sunny and 25°C.")# 多轮测试:完整对话multi_turn=ConversationalTestCase(scenario="Customer asking about return policy",turns=[LLMTestCase(input="Hi, I want to return my shoes",actual_output="Sure, I can help with that..."),LLMTestCase(input="How long do I have?",actual_output="You have 30 days...")])

LLMTestCase是评估的基本单元,代表一次 LLM 交互:

参数类型必需说明
inputstr发送给 LLM 的输入
actual_outputstrLLM 生成的输出
expected_outputstr期望输出(参考标准)
retrieval_contextList[str]RAG 检索上下文
contextList[str]额外背景信息
tools_calledList[ToolCall]Agent 调用的工具
expected_toolsList[str]期望调用的工具
# 官网给的 demo 附加上吧fromdeepeval.test_caseimportLLMTestCase test_case=LLMTestCase(input="美国的现任总统是谁?",actual_output="乔·拜登是美国现任总统。",expected_output="乔·拜登",retrieval_context=["乔·拜登目前担任美国总统。"],)

2.2 指标 (Metric) —— 你的评估标尺

指标是评估的标准。DeepEval 提供 50+ 指标,分为几大类:

┌─────────────────────────────────────────────────────────────┐ │ DeepEval 指标家族 │ ├─────────────────────────────────────────────────────────────┤ │ 📊 RAG 指标 │ Faithfulness, Answer Relevancy, │ │ │ Contextual Precision/Recall/Relevancy│ ├─────────────────────────────────────────────────────────────┤ │ 🤖 Agent 指标 │ Task Completion, Tool Correctness, │ │ │ Step Efficiency, Plan Adherence │ ├─────────────────────────────────────────────────────────────┤ │ 💬 对话指标 │ Conversation Relevancy, Knowledge │ │ │ Retention, Role Adherence │ ├─────────────────────────────────────────────────────────────┤ │ 🛡️ 安全指标 │ Bias, Toxicity, PII Leakage, │ │ │ Misuse, Non-Advice │ ├─────────────────────────────────────────────────────────────┤ │ ⚙️ 通用指标 │ Hallucination, Summarization, │ │ │ JSON Correctness, Ragas │ ├─────────────────────────────────────────────────────────────┤ │ 🎨 自定义指标 │ G-Eval, DAGMetric │ └─────────────────────────────────────────────────────────────┘

每个指标返回:

  • score: 0-1 之间的分数
  • reason: 评分的理由说明
  • success: 是否通过阈值 (score >= threshold)

小白划重点🎯

score 是什么?就像考试分数,0 分最差,1 分最好。

threshold 是什么?及格线。比如 threshold=0.7,那分数 >= 0.7 才算通过。

reason 是什么?LLM 给出的评语,告诉你为什么给这个分数。这在调试时超级有用!

示例输出: Score: 0.85 Reason: The response directly answers the user's question about return policy and provides accurate information consistent with the context. Success: True

常见坑点⚠️

  • 坑 1: 以为 score 是百分比 → 其实是 0-1 的小数,0.85 = 85%
  • 坑 2: threshold 设得太高 → 建议从 0.5-0.7 开始,逐步调整
  • 坑 3: 忽略 reason → reason 是调试神器,一定要看!

2.3 数据集 (Dataset) —— 测试的弹药库

数据集是测试用例的集合。你可以:

fromdeepeval.datasetimportEvaluationDataset,Golden# 创建数据集dataset=EvaluationDataset(goldens=[Golden(input="What is DeepEval?",expected_output="An LLM evaluation framework."),Golden(input="How to install?",expected_output="pip install deepeval")])# 从 CSV 加载dataset.add_goldens_from_csv_file(file_path="test_data.csv")# 从 JSON 加载dataset.add_goldens_from_json_file(file_path="test_data.json")# 从 Confident AI 云端拉取dataset.pull(alias="My Production Dataset")

2.4 评估方式 —— 三种运行模式

方式一:使用assert_test(Pytest 风格)
fromdeepevalimportassert_testfromdeepeval.test_caseimportLLMTestCasefromdeepeval.metricsimportAnswerRelevancyMetricdeftest_answer_relevancy():metric=AnswerRelevancyMetric(threshold=0.7)test_case=LLMTestCase(input="What is DeepEval?",actual_output="DeepEval is an open-source LLM evaluation framework.")assert_test(test_case,[metric])

运行:deepeval test run test_file.py

方式二:使用evaluate函数
fromdeepevalimportevaluatefromdeepeval.test_caseimportLLMTestCasefromdeepeval.metricsimportAnswerRelevancyMetric,FaithfulnessMetric test_cases=[LLMTestCase(input="Q1",actual_output="A1"),LLMTestCase(input="Q2",actual_output="A2")]metrics=[AnswerRelevancyMetric(),FaithfulnessMetric()]results=evaluate(test_cases=test_cases,metrics=metrics)
方式三:独立运行指标
fromdeepeval.metricsimportAnswerRelevancyMetricfromdeepeval.test_caseimportLLMTestCase metric=AnswerRelevancyMetric()test_case=LLMTestCase(input="Q1",actual_output="A1")metric.measure(test_case)print(f"Score:{metric.score}")print(f"Reason:{metric.reason}")

2.5 核心架构图

Yes

No

用户输入 input

你的 LLM 应用

实际输出 actual_output

参考资料 context

检索结果 retrieval_context

测试用例 LLMTestCase

评估指标 Metric

分数 Score 0-1

理由 Reason

是否通过 Success

>= threshold?

✅ 测试通过

❌ 测试失败


简单过了遍官网内容,感觉核心的东西就这么多 就是怎么展开去用的问题,和 pytest 一样 了解 pytest 应该会感觉这个还好比较容易通

http://www.jsqmd.com/news/1065584/

相关文章:

  • 基于Pytest与Selenium的电商UI自动化测试实战:从PageObject模式到CI/CD集成
  • OpenClaw进阶实践:智能体操作系统级工程化落地指南
  • WebVM:浏览器中的Linux虚拟化革命
  • Java开发框架比较分析:选择最适合你的工具
  • 加州PeMS高速车流预测实战包:LSTM/GRU/SAEs三模型一键训练,含清洗数据与可视化结果
  • AI编程工作流:构建可复用的人机协同肌肉记忆
  • C++Builder 6串口发送完整可运行工程:含界面、通信逻辑与资源文件
  • Vela Jr.超新星遗迹的伽马射线辐射机制研究
  • Windows系统文件cscdll.dll丢失找不到问题解决
  • Sunshine游戏串流:3个关键优势构建你的跨平台游戏王国
  • 二手三辊研磨机市场价格揭秘,多少钱合理? - myqiye
  • 开源供应链安全:从依赖投毒到纵深防御的实战指南
  • 构建软件供应链安全日报:从情报自动化到闭环运营的实战指南
  • Flask测试客户端:从原理到实战的自动化测试指南
  • STM32耳机三键线控开发套件:含原理图、测试音源、仿真文件与基础代码
  • 干货指南:如何评估高性价比的 AI 推广企业 - myqiye
  • 国密SM4加密实战:从源码实现到Bouncy Castle集成
  • 网页图片横向拖拽浏览组件(jQuery+CSS,含示例和配置说明)
  • 光纤中超短光脉冲传播仿真工具:基于分步傅里叶法的NLSE数值求解器
  • Web安全实战指南:从SQL注入到XSS的攻防原理与防御实践
  • Nginx双向SSL认证配置实战:从原理到高安全API网关部署
  • 零基础学C#工业视觉:从相机连接到第一个图像处理程序
  • Google Colab终极指南:掌握云端Python开发的完整方案
  • 10年养育2个表弟,他的人生选择让无数人沉默:普通人的善良到底值不值?
  • Cherry Studio+PromptX+GLM构建可落地AI教学系统
  • 南京化学试剂:靠谱的化学试剂工厂和服务商 - myqiye
  • (2026最新)昆明防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • SQL注入自动化检测与利用:SQLMap从入门到实战指南
  • (2026最新)无锡防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • Selenium WebUI自动化避坑指南:10大高频问题与实战解决方案