Langfuse 文档 中文 英文原文 ↗
文档 / 核心概念

核心概念

本页深入讲解评估的各个概念,以及 Langfuse 中提供的能力。

准备开始?

评估闭环

LLM 应用通常处于一个持续测试与监控的闭环之中。

**离线评估(Offline evaluation)**让你在部署之前,针对固定的数据集测试应用。你让新的提示词或模型跑测试用例,审阅分数,不断迭代直到结果理想,然后发布变更。在 Langfuse 中,你可以通过运行实验(Experiments)来做到这一点。

**在线评估(Online evaluation)**为实时 traces 打分,以便在真实流量中发现问题。当你发现数据集没有覆盖到的边缘案例时,把它们加回数据集,让未来的实验能够捕获它们。

下面是一个构建客服聊天机器人的示例工作流

  1. 你更新提示词,让回复不那么正式。
  2. 部署之前,你运行一个实验:用客户问题数据集测试新提示词(离线评估)。
  3. 你审阅分数和输出。语气改善了,但回复变长了,有些还漏掉了重要链接。
  4. 你改进提示词,再次运行实验。
  5. 这次结果不错。你把新提示词部署到生产环境。
  6. 你通过在线评估进行监控,捕获新的边缘案例。
  7. 你注意到有客户用法语提问,但机器人用英语回答。
  8. 你把这条法语查询加入数据集,让未来的实验能捕获这个问题。
  9. 你更新提示词以支持法语回复,并再运行一次实验。

随着时间推移,你的数据集从几个示例成长为多样化、有代表性的真实世界测试用例集。

分数(Scores)

分数(Scores)是 Langfuse 用于存储评估结果的通用数据对象。每当你想为一个 LLM 输出赋予质量判定时——无论是人工标注、LLM 评审、程序化检查,还是终端用户反馈——结果都以分数存储。

分数可以附加到 traces、observations、sessions 或 dataset runs 上。每个分数都有一个名称(name)、一个值(value)和一个数据类型(data type)(NUMERICCATEGORICALBOOLEANTEXT)。关于分数类型如何创建分数分数分析,请参阅专门的 Scores 页面。

评估方法

评估方法是为 traces、observations、sessions 或 dataset runs 打分的函数。你可以使用多种评估方法来添加分数

方法 是什么 适用场景
LLM-as-a-Judge 用 LLM 基于自定义标准评估输出 规模化的主观评估(语气、准确性、有用性)
代码评估器 运行自定义 Python 或 TypeScript 逻辑,为 observations 或实验打分 确定性检查、结构化输出校验、自定义业务规则
通过 UI 打分 直接在 Langfuse UI 中为 traces 手动添加分数 快速质量抽查、审阅单个 traces
标注队列 结构化的人工审阅工作流,队列可自定义 构建标准答案(ground truth)、系统化标注、团队协作
通过 API/SDK 打分 使用 Langfuse API 或 SDK 以编程方式添加分数 自定义评估流水线、确定性检查、自动化工作流

在配置新的评估方法时,你可以用 Score Analytics 来分析或校验你产生的分数。

实验(Experiments)

实验让你的应用针对数据集运行,并评估输出。这就是你在部署到生产之前测试变更的方式。

定义

在深入实验之前,先了解 Langfuse 中的构成要素会很有帮助:数据集、数据集条目、任务、分数和实验。

对象 定义
Dataset(数据集) 测试用例(数据集条目)的集合。你可以在数据集上运行实验。
Dataset item(数据集条目) 数据集中的一个条目。每个条目包含一个输入(要测试的场景),以及可选的预期输出。
Task(任务) 你想在实验中测试的应用代码。它会在每个数据集条目上执行,你将为输出打分。
Evaluation Method(评估方法) 为实验结果打分的函数。在 Langfuse 实验的语境下,它可以是代码评估器、通过 API/SDK 从你自己代码接入的分数,或 LLM-as-a-Judge
Score(分数) 评估的输出。可用的数据类型和细节参见分数
Experiment Run(实验运行) 你的任务针对数据集中所有条目的一次执行,产生输出(以及分数)。

你可以在这里找到这些对象的数据模型。

它们如何协同工作

从概念上讲,过程是这样的:

当你在某个数据集上运行实验时,每个数据集条目都会被传给你定义的任务函数。任务函数通常是应用中的一次 LLM 调用,也就是你想测试的部分。任务函数为每个数据集条目产生一个输出。这个过程称为一次实验运行。与数据集条目关联的输出集合就是实验结果

通常你会想为这些实验结果打分。你可以使用各种评估方法,它们接收数据集条目和任务函数产生的输出,并基于你定义的标准产生分数。基于这些分数,你就能完整地看到应用在所有测试用例上的表现。

实验流程

你可以对比不同的实验运行,看新的提示词版本是否提升了分数,或者找出应用表现吃力的特定输入。基于这些实验结果,你可以判断该变更是否可以部署到生产环境。

关于这些对象底层如何关联的更多细节,请参阅数据模型页面

运行实验的两种方式

你可以使用 Langfuse SDK 以编程方式运行实验。这让你对任务、评估逻辑等拥有完全的控制。了解如何通过 SDK 运行实验

另一种方式是直接在 Langfuse 界面中运行实验,只需选择数据集和提示词版本。这对于无需编写代码即可快速迭代提示词非常有用。了解如何通过 UI 运行实验

Langfuse 托管执行 本地/CI 执行
Langfuse 数据集 通过 UI 做实验 通过 SDK 做实验
本地数据集 不支持 通过 SDK 做实验

虽然这是可选的,但我们推荐在 Langfuse 中管理底层数据集,因为它能带来:[1] 在 UI 中对同一数据的不同实验进行对比表格;[2] 基于生产/预发 traces 迭代改进数据集。

在线评估

对于在线评估,你可以配置评估方法自动为生产 traces 打分。这帮助你立即发现问题。

Langfuse 支持 LLM-as-a-Judge、代码评估器和人工标注检查用于在线评估。

用仪表盘进行监控

Langfuse 提供仪表盘,实时监控应用性能。你也可以在仪表盘中监控分数。关于如何使用仪表盘的更多细节,请参阅这里

非官方中文翻译 · 图片/视频/代码均链接官方资源 · 版权归 Langfuse GmbH 所有 查看英文原文 ↗