Skip to main content
在处理基于模型进行决策的非确定性系统(例如由大语言模型驱动的智能体)时,详细检查其决策过程非常有用:
  1. 理解推理过程:分析导致成功结果的各个步骤。
  2. 调试错误:识别错误发生的位置及原因。
  3. 探索替代方案:测试不同路径以发现更优解决方案。
LangGraph 提供了时间旅行功能来支持这些用例。具体而言,您可以从先前的检查点恢复执行——既可以重放相同的状态,也可以修改状态以探索替代路径。在所有情况下,从过去恢复执行都会在历史记录中产生一个新的分支。 要在 LangGraph 中使用时间旅行功能:
  1. 运行图:使用 invokestream 方法,以初始输入运行图。
  2. 在现有线程中识别检查点:使用 get_state_history() 方法检索特定 thread_id 的执行历史,并定位所需的 checkpoint_id。 或者,在您希望暂停执行的节点之前设置一个中断点。随后即可找到截至该中断点所记录的最新检查点。
  3. 更新图状态(可选):使用 update_state 方法修改检查点处的图状态,并从新的替代状态继续执行。
  4. 从检查点恢复执行:使用 invokestream 方法,输入为 None,配置中包含相应的 thread_idcheckpoint_id
如需了解时间旅行的概念概述,请参阅时间旅行

在工作流中的应用

本示例构建了一个简单的 LangGraph 工作流,用于生成笑话主题并使用 LLM 编写笑话。它演示了如何运行图、检索过去的执行检查点、选择性地修改状态,以及从选定的检查点恢复执行以探索不同的结果。

设置

首先,我们需要安装所需的包:
接下来,我们需要设置 Anthropic(我们将使用的 LLM)的 API 密钥:
注册 LangSmith,快速发现并提升您的 LangGraph 项目的性能。LangSmith 可让您利用追踪数据来调试、测试和监控基于 LangGraph 构建的 LLM 应用程序。

1. 运行图

输出:

2. 识别检查点

输出:
输出:

3. 更新状态

update_state 将创建一个新的检查点。新检查点将关联到相同的线程,但拥有新的检查点 ID。
输出:

4. 从检查点恢复执行

输出: