核心概念
本页深入讲解评估的各个概念,以及 Langfuse 中提供的能力。
准备开始?
- 创建数据集,持续度量 LLM 应用的性能
- 运行实验,总览应用的表现
- 配置 LLM-as-a-Judge,评估实时 traces
- 创建代码评估器,进行确定性检查
评估闭环
LLM 应用通常处于一个持续测试与监控的闭环之中。
**离线评估(Offline evaluation)**让你在部署之前,针对固定的数据集测试应用。你让新的提示词或模型跑测试用例,审阅分数,不断迭代直到结果理想,然后发布变更。在 Langfuse 中,你可以通过运行实验(Experiments)来做到这一点。
**在线评估(Online evaluation)**为实时 traces 打分,以便在真实流量中发现问题。当你发现数据集没有覆盖到的边缘案例时,把它们加回数据集,让未来的实验能够捕获它们。
下面是一个构建客服聊天机器人的示例工作流
- 你更新提示词,让回复不那么正式。
- 部署之前,你运行一个实验:用客户问题数据集测试新提示词(离线评估)。
- 你审阅分数和输出。语气改善了,但回复变长了,有些还漏掉了重要链接。
- 你改进提示词,再次运行实验。
- 这次结果不错。你把新提示词部署到生产环境。
- 你通过在线评估进行监控,捕获新的边缘案例。
- 你注意到有客户用法语提问,但机器人用英语回答。
- 你把这条法语查询加入数据集,让未来的实验能捕获这个问题。
- 你更新提示词以支持法语回复,并再运行一次实验。
随着时间推移,你的数据集从几个示例成长为多样化、有代表性的真实世界测试用例集。
分数(Scores)
分数(Scores)是 Langfuse 用于存储评估结果的通用数据对象。每当你想为一个 LLM 输出赋予质量判定时——无论是人工标注、LLM 评审、程序化检查,还是终端用户反馈——结果都以分数存储。
分数可以附加到 traces、observations、sessions 或 dataset runs 上。每个分数都有一个名称(name)、一个值(value)和一个数据类型(data type)(NUMERIC、CATEGORICAL、BOOLEAN 或 TEXT)。关于分数类型、如何创建分数和分数分析,请参阅专门的 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 提供仪表盘,实时监控应用性能。你也可以在仪表盘中监控分数。关于如何使用仪表盘的更多细节,请参阅这里。