双重发送消息¶
前提条件
很多时候用户可能会以非预期的方式与您的图进行交互。例如,用户可能发送一条消息,然后在图完成运行之前发送第二条消息。更一般地,用户可能会在第一次运行完成之前第二次调用图。我们称之为“双重发送消息”。
目前,LangGraph 仅在 LangGraph 平台 中解决了这个问题,而不是在开源版本中。原因是,为了处理这个问题,我们需要知道图是如何部署的,并且由于 LangGraph 平台处理部署,逻辑需要存在于那里。如果您不想使用 LangGraph 平台,我们在下面详细描述了我们已实现的选项。
拒绝¶
这是最简单的选项,它只是拒绝任何后续运行,并且不允许双重发送消息。请参阅 操作指南 以配置拒绝双重发送消息选项。
入队¶
这是一个相对简单的选项,它继续第一次运行直到完成整个运行,然后将新输入作为单独的运行发送。请参阅 操作指南 以配置入队双重发送消息选项。
中断¶
此选项中断当前执行,但保存到那时为止完成的所有工作。然后它插入用户输入并从那里继续。
如果您启用此选项,您的图应该能够处理可能出现的奇怪边缘情况。例如,您可能已经调用了一个工具,但尚未获得运行该工具的结果。您可能需要删除该工具调用,以避免出现悬空的工具调用。
请参阅 操作指南 以配置中断双重发送消息选项。
回滚¶
此选项回滚到那时为止完成的所有工作。然后它发送用户输入,基本上就像它刚刚遵循原始运行输入一样。
这可能会创建一些奇怪的状态 - 例如,您可能会连续有两个 User
消息,它们之间没有 Assistant
消息。
您需要确保您调用的 LLM 可以处理这种情况,或者将它们组合成一个 User
消息。
请参阅 操作指南 以配置回滚双重发送消息选项。