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 使这变得容易。在这种情况下,我们甚至可以继续使用我们一直在使用的评估器。

相关

参考代码