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

端到端评估

最常见的评估类型是端到端评估,我们希望评估每个示例输入的最终图输出。

定义一个图

让我们先构建一个简单的 ReACT 智能体:

创建数据集

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

创建评估器

以及一个简单的评估器: 需要 langsmith>=0.2.0

运行评估

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

评估中间步骤

通常,评估智能体的最终输出以及它所采取的中间步骤是有价值的。langgraph 的一个优点是,图的输出是一个状态对象,该对象通常已经携带了关于所采取的中间步骤的信息。通常,我们可以通过查看状态中的消息来评估我们感兴趣的任何内容。例如,我们可以查看消息以断言模型在第一步调用了 ‘search’ 工具。 需要 langsmith>=0.2.0
如果我们需要访问状态中没有的中间步骤信息,我们可以查看 Run 对象。它包含所有节点输入和输出的完整跟踪:
有关可以传递给自定义评估器的更多参数信息,请参阅此操作指南

运行和评估单个节点

有时你想直接评估单个节点以节省时间和成本。langgraph 使这变得容易。在这种情况下,我们甚至可以继续使用我们一直在使用的评估器。

相关内容

参考代码