跳到内容

重复输入

先决条件

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

目前,LangGraph 只将此作为 LangGraph Platform 的一部分来解决,而不是在开源版本中。原因是,为了处理这个问题,我们需要知道图是如何部署的,而由于 LangGraph Platform 处理部署,因此逻辑需要放在那里。如果您不想使用 LangGraph Platform,我们在下面详细描述了我们已实现的选项。

拒绝

这是最简单的选项,它会拒绝任何后续运行,并且不允许重复输入。请参阅操作指南,了解如何配置拒绝重复输入的选项。

排队

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

中断

此选项会中断当前的执行,但会保存截至该点的所有工作。然后插入用户输入并从那里继续。

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

请参阅操作指南,了解如何配置中断重复输入的选项。

回滚

此选项会回滚截至该点的所有工作。然后将用户输入发送进去,基本上就像紧随原始运行输入一样。

这可能会产生一些奇怪的状态——例如,您可能连续有两条 User 消息,它们之间没有 Assistant 消息。

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

请参阅操作指南,了解如何配置回滚重复输入的选项。