一、LangGraph的检查点机制
检查点机制是LangGraph中一个强大的功能,它允许我们在图执行的特定点暂停处理,保存状态,并在需要时恢复。
1.1 检查点的基本概念
检查点本质上是图执行过程中的一个快照,包含了当前的状态信息。这对于长时间运行的任务、需要人工干预的流程,或者需要断点续传的应用特别有用。
1.2 创建检查点
在LangGraph中,我们可以使用create_checkpoint
函数来创建检查点:
from langgraph.checkpoint import create_checkpoint def process_with_checkpoint(state): # 处理逻辑 # ... # 创建检查点 checkpoint = create_checkpoint(state) return {"checkpoint": checkpoint, "state": state} graph.add_node("process", process_with_checkpoint)
1.3 恢复检查点
使用load_checkpoint
函数可以恢复之前保存的检查点:
from langgraph.checkpoint import load_checkpoint def resume_from_checkpoint(checkpoint): state = load_checkpoint(checkpoint) # 继续处理 # ... return state graph.add_node("resume", resume_from_checkpoint)
二、实现人在环路(Human-in-the-loop)交互
人在环路交互是指在AI系统的执行过程中,允许人类参与并提供输入或做出决策。LangGraph提供了灵活的机制来实现这种交互。
2.1 使用回调函数实现人机交互
我们可以在图的节点中定义回调函数,用于获取人类输入:
def human_input_node(state): # 显示当前状态给用户 print("Current state:", state) # 获取用户输入 user_input = input("Please provide your input: ") # 更新状态 state['user_input'] = user_input return state graph.add_node("human_input", human_input_node)
2.2 条件分支实现人机交互
我们可以使用条件分支来决定是否需要人类干预:
def check_confidence(state): if state['confidence'] < 0.8: return "human_input" else: return "auto_process" graph.add_conditional_edges( "check_confidence", { "human_input": lambda s: s['confidence'] < 0.8, "auto_process": lambda s: s['confidence'] >= 0.8 } )
三、实际应用案例:智能客服系统升级版
让我们将检查点机制和人机交互结合到之前的智能客服系统中:
from langgraph.prebuilt import ToolMessage, HumanMessage from langgraph.checkpoint import create_checkpoint, load_checkpoint def process_query(state): # 处理用户查询 # ... state['confidence'] = calculate_confidence(state) return state def human_intervention(state): print("Current conversation:", state['messages']) human_response = input("Please provide assistance: ") state['messages'].append(HumanMessage(content=human_response)) return state def summarize_and_prune(state): # 总结对话 summary = summarize_conversation(state['messages']) # 保留最新的消息和总结 new_messages = state['messages'][-5:] new_messages.append(ToolMessage(content=summary)) state['messages'] = new_messages # 创建检查点 checkpoint = create_checkpoint(state) state['checkpoint'] = checkpoint return state graph = Graph() graph.add_node("process_query", process_query) graph.add_node("human_intervention", human_intervention) graph.add_node("summarize_and_prune", summarize_and_prune) graph.add_conditional_edges( "process_query", { "human_intervention": lambda s: s['confidence'] < 0.8, "summarize_and_prune": lambda s: s['confidence'] >= 0.8 } ) graph.add_edge("human_intervention", "summarize_and_prune") graph.add_edge("summarize_and_prune", "process_query")
在这个升级版的智能客服系统中,我们引入了以下改进:
- 根据置信度决定是否需要人工干预。
- 在每次总结和修剪后创建检查点,以便在需要时恢复状态。
- 人工干预节点允许人类直接参与对话。
总结
LangGraph的检查点机制和人机交互功能为构建复杂、可靠的AI系统提供了强大的工具。通过合理使用这些功能,我们可以创建更加智能、灵活且可控的应用程序。检查点允许我们在长时间运行的任务中保存和恢复状态,而人机交互则为AI决策过程引入了人类的判断和专业知识。在实际应用中,这些功能的结合可以显著提高系统的性能和可靠性。
标签:LangGraph,checkpoint,state,检查点,human,graph,input,人机交互 From: https://www.cnblogs.com/muzinan110/p/18540164