首页 > 其他分享 >LangGraph中的检查点与人机交互

LangGraph中的检查点与人机交互

时间:2024-11-11 17:20:21浏览次数:5  
标签:LangGraph checkpoint state 检查点 human graph input 人机交互

一、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")

在这个升级版的智能客服系统中,我们引入了以下改进:

  1. 根据置信度决定是否需要人工干预。
  2. 在每次总结和修剪后创建检查点,以便在需要时恢复状态。
  3. 人工干预节点允许人类直接参与对话。

总结

LangGraph的检查点机制和人机交互功能为构建复杂、可靠的AI系统提供了强大的工具。通过合理使用这些功能,我们可以创建更加智能、灵活且可控的应用程序。检查点允许我们在长时间运行的任务中保存和恢复状态,而人机交互则为AI决策过程引入了人类的判断和专业知识。在实际应用中,这些功能的结合可以显著提高系统的性能和可靠性。

 

标签:LangGraph,checkpoint,state,检查点,human,graph,input,人机交互
From: https://www.cnblogs.com/muzinan110/p/18540164

相关文章

  • 使用LangGraph构建复杂AI工作流:子图架构详解
    一、子图架构概述子图(Subgraph)是LangGraph中一个强大的特性,它允许我们将复杂的工作流程分解成更小、更易管理的组件。通过子图,我们可以实现模块化设计,提高代码的可重用性和可维护性。1.1子图的基本概念子图本质上是一个完整的图结构,可以作为更大图结构中的一个节点使用。它具......
  • LangGraph入门:构建ReACT架构的智能Agent
    引言在人工智能和大语言模型(LLM)快速发展的今天,如何构建高效、灵活的智能Agent成为了一个热门话题。LangGraph作为一个强大的工具,为我们提供了一种新的方式来实现复杂的AI工作流,特别是在构建ReACT(ReasoningandActing)架构的智能Agent方面表现出色。本文将深入探讨如何使用LangGra......
  • LangGraph进阶:条件边与工具调用Agent实现
    在前两篇文章中,我们讨论了LCEL和AgentExecutor的局限性,以及LangGraph的基础概念。今天,我们将深入探讨LangGraph的高级特性,重点关注条件边的使用和如何实现一个完整的工具调用Agent。条件边的高级用法条件边是LangGraph中最强大的特性之一,它允许我们基于状态动态决定执行流......
  • 07 Oracle数据库恢复基础解析:从检查点到归档,一步步构建数据安全防线
    文章目录Oracle数据库恢复基础解析:从检查点到归档,一步步构建数据安全防线一、检查点(Checkpoint)1.1检查点定义1.2检查点重要性1.3检查点工作原理1.4手动触发检查点二、日志(RedoLog)2.1日志定义2.2日志重要性2.3查看当前使用的Redo日志成员三、归档机制(Archiving)3......
  • 终于有了!!!基于Langgraph使用本地LLM搭建agent!!!
    需求Langchain是使用闭源LLM实现agent搭建的,Langgraph官网给的例子是基于Claude,其他一些agent例子也是基于OPENAI的,但是对于很多私有化场景,使用本地LLM搭建agent是非常重要的。但是网上并没有相关的教程,捣鼓了两天,捣鼓出来Ollama+Langgraph实现的基于本地LLM的agent搭建模......
  • 使用LangGraph构建多Agent系统架构!
    0前言Agent是一个使用大语言模型决定应用程序控制流的系统。随着这些系统的开发,它们随时间推移变得复杂,使管理和扩展更困难。如你可能会遇到:Agent拥有太多的工具可供使用,对接下来应该调用哪个工具做出糟糕决策上下文过于复杂,以至于单个Agent无法跟踪系统中需要多个专业领域(......
  • 编辑软件人机交互效率浅入分析
    编辑软件人机交互效率浅入分析背景  我们在使用办公软件工作时,需要用到键盘输入,鼠标操作,以及菜单项等原子操作,每项任务都可以由以上这些原子操作单独或组合来完成,一个软件功能设计是否合理,与这些原子的组合有很大关系。  那如何设计软件才能让用户效率最高,用的最顺手呢? ......
  • LangGraph 源码分析 | BaseTool 模板类
    文章目录BaseTool源码分析核心属性以`TavilySearchResults(BaseTool)`为例namedescriptionargs_schemaresponse_format查询选项属性需要子类实现的抽象方法以`TavilySearchResults(BaseTool)`为例核心方法`arun()`:`run()`的异步执行版本`invoke()`和`ainvoke()`......
  • 利用LangGraph和Waii实现你的chat2db!
    0前言在数据分析领域快速发展的今天,通过自然语言与数据交互的能力变得越来越有价值。对话式分析旨在使复杂数据结构对没有专业技能的用户更易于访问。LangGraph是个框架,用于构建使用语言模型的状态化、多代理应用程序。Waii提供文本到SQL和文本到图表的功能,使用户能够通过......
  • 下载 |《2024年AI Agent行业报告》——大模型时代的“APP”,探索新一代人机交互及协作
    前言随着大型模型在各行各业的广泛应用,基于大型模型的人工智能体(AIAgent)迎来了快速发展的阶段。研究AIAgent是人类不断接近人工通用智能(AGI)的探索之一。知名AIAgent项目AutoGPT已经在GitHub的星星数已经达到140,000颗,进一步反映了用户对于AIAgents项目的广泛兴趣和支持。随......