中断与人工在环
中断机制
中断允许暂停图的执行并等待外部输入。
基本用法
from langgraph.types import interrupt
@entrypoint
def workflow_with_approval(data):
"""需要人工批准的工作流"""
# 处理第一步
processed = process_data(data)
# 中断请求批准
approval = interrupt({
"message": "需要批准处理结果",
"data": processed,
"options": ["approve", "reject", "edit"]
})
# 根据批准结果继续
if approval == "approve":
return finalize(processed)
elif approval == "edit":
edited = edit_data(processed)
return finalize(edited)
else:
return "已拒绝"
恢复中断
# 第一次执行到中断
config = {"configurable": {"thread_id": "task_1"}}
try:
result = app.invoke(initial_data, config=config)
except Exception:
# 被中断
pass
# 用户审查后,带着输入恢复
result = app.invoke(None, config=config, input_={"approval": "approve"})
多步骤批准工作流
from langgraph.types import interrupt
def approval_workflow(request_data):
# 第一步:初步处理
processed = analyze_request(request_data)
# 第一次中断:初步审核
initial_check = interrupt({
"stage": "initial_review",
"data": processed
})
if not initial_check:
return "初步审核失败"
# 第二步:详细处理
detailed = detailed_processing(processed)
# 第二次中断:详细审核
detailed_check = interrupt({
"stage": "detailed_review",
"data": detailed
})
if not detailed_check:
return "详细审核失败"
# 最终批准
return finalize(detailed)
人工在环模式
1. 审批模式
决策者审查并批准/拒绝操作
2. 编辑模式
用户可以修改建议
3. 验证模式
确保操作不会产生不良结果
实现建议
✅ 确保中断请求清晰说明为什么需要中断 ✅ 提供足够的上下文供决策 ✅ 有合理的超时时间 ✅ 记录所有批准/拒绝决 定 ✅ 支持多种恢复选项
常见模式
多步骤审批: 根据复杂性进行多级审核 条件批准: 基于阈值自动批准低风险操作 反馈循环: 允许用户迭代改进