跳到内容

重复发送消息 (Double Texting)

先决条件

许多时候,用户可能会以非预期的方式与您的图进行交互。例如,用户可能会发送一条消息,而在图完成运行之前又发送第二条消息。更一般地说,用户可能会在第一次运行完成之前第二次调用图。我们称之为“重复发送消息”。

目前,LangGraph 仅在LangGraph 平台中处理此问题,而不是在开源版本中。原因是,为了处理这个问题,我们需要知道图是如何部署的,而 LangGraph 平台负责部署,所以逻辑需要存在于那里。如果您不想使用 LangGraph 平台,我们将在下面详细描述我们已实现的选项。

拒绝

这是最简单的选项,它会拒绝任何后续运行,并且不允许重复发送消息。有关配置拒绝重复发送消息选项的说明,请参阅操作指南

排队

这是一个相对简单的选项,它会继续第一次运行直到其完成整个运行,然后将新输入作为单独的运行发送。有关配置排队重复发送消息选项的说明,请参阅操作指南

中断

此选项会中断当前执行,但会保存到该点为止已完成的所有工作。然后它会插入用户输入并从那里继续。

如果启用此选项,您的图应该能够处理可能出现的奇怪边缘情况。例如,您可能已经调用了一个工具但尚未从运行该工具中获得结果。您可能需要删除该工具调用以避免出现悬挂的工具调用。

有关配置中断重复发送消息选项的说明,请参阅操作指南

回滚

此选项会回滚到该点为止已完成的所有工作。然后它会发送用户输入,基本上就像它只是遵循原始运行输入一样。

这可能会创建一些奇怪的状态——例如,您可能会连续收到两条User消息,中间没有Assistant消息。

您需要确保您调用的 LLM 可以处理这种情况,或者将这些消息合并为一条User消息。

有关配置回滚重复发送消息选项的说明,请参阅操作指南