时间旅行 ⏱️¶
先决条件
本指南假定您熟悉 LangGraph 的检查点和状态。如果不熟悉,请先查看持久化概念。
当使用基于模型决策的非确定性系统(例如,由 LLM 驱动的 Agent)时,详细检查其决策过程可能很有用
- 🤔 理解推理:分析导致成功结果的步骤。
- 🐞 调试错误:确定错误发生的位置和原因。
- 🔍 探索替代方案:测试不同的路径以发现更好的解决方案。
我们将这些调试技术称为时间旅行,它由两个关键操作组成:重放 🔁 和派生 🔀 。
重放¶
重放允许我们重新访问和重现 Agent 过去的动作,直到并包括特定步骤(检查点)。
要重放特定检查点之前的操作,请首先检索线程的所有检查点
每个检查点都有一个唯一的 ID。在确定所需的检查点(例如,xyz
)后,将其 ID 包含在配置中
config = {'configurable': {'thread_id': '1', 'checkpoint_id': 'xyz'}}
for event in graph.stream(None, config, stream_mode="values"):
print(event)
图将在提供的 checkpoint_id
之前重放先前执行的步骤,并执行 checkpoint_id
之后的步骤(即,新的派生),即使它们之前已执行过。
派生¶
派生允许您重新访问 Agent 过去的动作,并在图中探索替代路径。
要编辑特定的检查点,例如 xyz
,在更新图的状态时提供其 checkpoint_id
config = {"configurable": {"thread_id": "1", "checkpoint_id": "xyz"}}
graph.update_state(config, {"state": "updated state"})
这将创建一个新的派生检查点 xyz-fork,您可以从中继续运行图
config = {'configurable': {'thread_id': '1', 'checkpoint_id': 'xyz-fork'}}
for event in graph.stream(None, config, stream_mode="values"):
print(event)
其他资源 📚¶
- 概念指南:持久化:阅读持久化指南以获得有关重放的更多背景信息。
- 如何查看和更新过去的图状态:关于如何使用图状态的分步说明,演示了重放和派生操作。