langgraph 是一个用于使用 LLM 构建有状态、多参与者应用的库,可用于创建代理和多代理工作流。评估 langgraph 图可能具有挑战性,因为单次调用可能涉及多次 LLM 调用,而具体发起哪些 LLM 调用可能取决于前序调用的输出。在本指南中,我们将重点介绍如何将图和图节点传递给 evaluate() / aevaluate()。如需了解构建代理时的评估技术和最佳实践,请参阅 langgraph 文档。

端到端评估

最常见的评估类型是端到端评估,即针对每个示例输入,评估图的最终输出。

定义图

首先,让我们构建一个简单的 ReACT 代理:

创建数据集

让我们创建一个包含问题和预期回答的简单数据集:

创建评估器

再创建一个简单的评估器: 需要 langsmith>=0.2.0

运行评估

现在我们可以运行评估并查看结果。我们只需要包装图函数,使其能够接收与示例中存储格式相同的输入:
如果所有图节点都定义为同步函数,则可以使用 evaluate 或 aevaluate。如果有任何节点定义为异步函数,则需要使用 aevaluate
需要 langsmith>=0.2.0

评估中间步骤

很多时候,除了评估代理的最终输出之外,评估它执行过的中间步骤也很有价值。langgraph 的一个优点是,图的输出是一个状态对象,其中通常已经包含所执行中间步骤的信息。通常,只需查看状态中的消息,就可以评估我们感兴趣的内容。例如,我们可以查看消息,断言模型是否在第一步调用了 search 工具。 需要 langsmith>=0.2.0
如果需要访问中间步骤中未包含在状态里的信息,可以查看 Run 对象。该对象包含所有节点输入和输出的完整追踪信息:
如需进一步了解可以传递给自定义评估器的参数,请参阅这篇操作指南。

运行并评估单个节点

有时,你可能希望直接评估单个节点,以节省时间和成本。langgraph 可以让这一过程变得非常简单。在这种情况下,我们甚至可以继续使用之前使用的评估器。

相关内容

参考代码