用途:在 LangGraph 中实现人在环路模式,例如暂停等待人工审批、收集用户输入、处理可修复错误。
主要能力:
- interrupt(value):暂停执行并把值呈现给调用方,结果中出现在 interrupt 下。
- Command(resume=value):恢复执行,该值成为 interrupt() 的返回值。
- 支持审批工作流:interrupt 展示草稿,按人工决定路由到发送或结束。
- 支持校验循环:在循环中 interrupt 校验输入,无效则重新提示。
- 支持并行多中断:按中断 ID 映射到恢复值,一次恢复全部。
必要用法:
- 编译时传入 checkpointer,开发用 InMemorySaver(),生产用 PostgresSaver;如 compile(checkpointer=InMemorySaver())。
- 每次 invoke/stream 传入 config,例如 {"configurable": {"thread_id": "thread-1"}}。
- 传给 interrupt() 的值必须可 JSON 序列化。
- 恢复只能用 Command(resume=...),不要用 Command(update=...)。
限制与注意:
- 无 checkpointer 会失败;thread_id 不一致会新建线程而非恢复。
- 恢复时节点从头重跑,interrupt() 之前的代码会再次执行;子图中父节点与子图节点都会重执行。因此 interrupt() 之前的副作用必须幂等,建议用 upsert、检查后创建,或把副作用放到 interrupt() 之后。
- 关于重试策略等其他错误处理方式,资料仅指向 fundamentals 技能,未展开。