LangGraph实现人机交互:基于中断机制的智能流程控制

LangGraph-2-interrupt 流程中断 是 LangGraph 中一个强大的流程控制机制,允许在状态机执行过程中根据特定条件中断当前流程并跳转到其他节点。这一机制可以让开发者在关键操作执行前对条件进行检查,若不满足条件,就提前终止流程,避免不必要的计算或者操作。这一机制可以让开发者在关键操作执行前对条件进行检查,若不满足条件,就提前终止流程,避免不必要的计算或者操作。是两个强大的流程控制机制,允许在节点执行前或执行后插入中断检查。这些机制提供了更精细的流程控制能力,特别适合需要精确管理执行顺序和条件的复杂工作流。在 LangGraph 中, 阅读详情

LangGraph实现人机交互:基于中断机制的智能流程控制

引言

在现代AI应用开发中,人机交互成为了一个至关重要的环节。特别是在复杂的工作流程中,我们往往需要在关键节点暂停执行,等待用户的确认或输入,然后根据用户的决策继续执行后续流程。LangGraph作为一个强大的图状态管理框架,提供了优雅的中断机制来实现这种人机交互功能。

本文将深入解析如何使用LangGraph实现基于中断机制的人机交互,让AI应用能够在关键时刻"停下来等等用户"。

核心概念介绍

什么是LangGraph?

LangGraph是一个用于构建复杂、有状态的多角色应用程序的库,特别适用于LLM应用。它允许开发者定义包含循环和条件的工作流程,并且支持状态持久化和中断机制。

关键组件

  • StateGraph: 状态图的核心类,用于定义节点和边
  • MemorySaver: 内存检查点保存器,用于状态持久化
  • 中断机制: 允许在指定节点前暂停执行,等待外部干预

代码实现详解

让我们逐步分析提供的代码实现:

1. 导入必要的模块和定义状态结构

from typing import TypedDict
from langgraph.checkpoint.memory import MemorySaver
from langgraph.graph import StateGraph, START, END

class State(TypedDict):
    input: str

这里定义了一个简单的状态结构,包含一个input字段。TypedDict确保了类型安全。

2. 定义节点函数

def my_node(state):
    print("执行my_node节点")
    pass

def node_a(state):
    print("node_a节点")
    pass

def node_b(state):
    print("node_b节点")
    pass

每个节点函数都接收当前状态作为参数,可以在函数内部进行状态的读取和修改。

3. 构建状态图

# 创建状态图
builder = StateGraph(dict)

# 添加节点
builder.add_node("my_node", my_node)
builder.add_node("node_a", node_a)
builder.add_node("node_b", node_b)

# 定义执行流程
builder.add_edge(START, "my_node")
builder.add_edge("my_node", "node_a")
builder.add_edge("node_a", "node_b")
builder.add_edge("node_b", END)

这里构建了一个线性的执行流程:START → my_node → node_a → node_b → END

4. 配置中断机制和编译图

memory = MemorySaver()
config = {"configurable": {"thread_id": "1"}}
graph = builder.compile(checkpointer=memory, interrupt_before=['node_b'])

关键点在于interrupt_before=['node_b']参数,这告诉LangGraph在执行node_b之前暂停,等待外部干预。

5. 实现人机交互

# 初始执行
for event in graph.stream(input_init, config, stream_mode="values"):
    print(event)

# 用户交互
user = input("是否继续执行?y/n:")
if user.lower() == "y":
    # 继续执行
    for event in graph.stream(None, config, stream_mode="values"):
        print(event)
else:
    # 停止执行
    print("执行已停止")

关键功能分析

1. 中断机制的工作原理

当图执行到node_b之前时,会自动暂停执行。此时:

  • 当前状态被保存到检查点
  • 执行权限返回给主程序
  • 用户可以进行交互决策

2. 状态持久化

MemorySaver确保了状态的持久化,即使程序暂停,状态信息也不会丢失。这对于长时间运行的工作流程至关重要。

3. 流式执行

使用stream_mode="values"可以实时获取每个节点的执行结果,提供更好的用户体验。

实际应用场景

1. 审批流程

def approval_node(state):
    print(f"等待审批:{state['request']}")
    return state

# 在审批节点前设置中断
graph = builder.compile(interrupt_before=['approval_node'])

2. 数据确认

def data_validation_node(state):
    print(f"请确认数据:{state['data']}")
    return state

# 用户可以在数据处理前进行确认

3. 条件分支选择

def route_selection(state):
    choice = input("选择处理方式 (1/2): ")
    if choice == "1":
        return "process_a"
    else:
        return "process_b"

builder.add_conditional_edges("decision_point", route_selection)

高级特性

可视化图结构

graph_png = graph.get_graph().draw_mermaid_png()
with open("workflow.png", "wb") as f:
    f.write(graph_png)

这个功能可以生成工作流程的可视化图表,帮助理解复杂的执行流程。

多线程支持

通过thread_id配置,可以支持多个并发的工作流程实例:

config_1 = {"configurable": {"thread_id": "user_1"}}
config_2 = {"configurable": {"thread_id": "user_2"}}

最佳实践

1. 错误处理

try:
    for event in graph.stream(input_init, config):
        print(event)
except Exception as e:
    print(f"执行出错: {e}")
    # 可以选择重试或回滚

2. 超时机制

import asyncio

async def execute_with_timeout():
    try:
        result = await asyncio.wait_for(
            graph.astream(input_init, config),
            timeout=300  # 5分钟超时
        )
        return result
    except asyncio.TimeoutError:
        print("执行超时")

3. 状态验证

def validate_state(state):
    required_fields = ['input', 'status']
    for field in required_fields:
        if field not in state:
            raise ValueError(f"Missing required field: {field}")
    return True

总结

LangGraph的中断机制为构建智能的人机交互应用提供了强大的基础。通过合理使用中断点、状态持久化和流式执行,我们可以创建出既智能又灵活的工作流程。

主要优势包括:

  • 灵活的控制流程:可以在任意节点设置中断点
  • 状态持久化:确保长时间运行的稳定性
  • 用户友好:支持实时交互和决策
  • 可扩展性:易于添加新的节点和逻辑

这种人机交互模式特别适用于需要人工审核、决策确认或动态调整的AI应用场景,是构建真正实用的AI助手的重要技术基础。

多智能体工具选型指南:从框架、模型到落地验证的完整决策框架 多智能体系统作为AI工程化的重要范式,是指多个具备独立能力的AI Agent通过消息传递和任务编排,协同完成复杂业务目标的架构设计。其核心原理在于平衡智能体间的分工关系、上下文传递与流程控制,从而带来远超单Agent工具的扩展性与鲁棒性,但也引入了死锁、级联错误等新型工程挑战。在落地实践过程中,工具选型往往决定了系统的可维护性上限:框架层需要关注节点编排能力、生态锁喉点与调试可观测性;模型层应依据决策、执行、汇总三类角色配置混合模型以优化成本;通信层则需评估MCP和A2A协议的成熟度,借助标准化的工具链降低 阅读详情

相关推荐

LangGraph流程中断机制实战:interrupt_before与interrupt_after的深度解析

本文深入解析了LangGraph中的流程中断机制,重点对比了interrupt_before与interrupt_after的核心区别与应用场景。通过实战案例演示了如何在工具调用前植入人工确认开关,实现安全可控的AI工作流,并提供了进阶技巧与常见避坑指南,帮助开发者构建可靠的人机协同系统。

weixin_29251567的博客 239

【LangGraph】强大的功能人类和agent的交互(中)

在我们的代码中,这个更新状态和覆盖消息都是基于我们打断agent来的,在上面这些运行日志里也可以看到每一步包括agent在用tools工具搜索之前组装的内容是什么,然后我们覆盖的消息是什么,最后工具出来的结果是什么,很好的实现了我们控制agent的行为。下一节我们将实现人类和agent交互的最后一步,自定义状态。

weixin_40143861的博客 1411

CMap与L1000技术解析:基因表达数据在药物发现中的应用

本文深入解析了CMap(连接图)与L1000技术在药物发现中的核心应用。CMap通过构建基因表达“关系网”,实现基于模式匹配的药物重定位;L1000技术则以低成本、高通量方式生成关键基因表达数据,支撑了LINCS超级数据库。文章以CLUE平台为例,手把手演示了如何利用疾病基因表达签名逆向筛选潜在治疗化合物,并拓展了其在解析药物机制、预测副作用等多场景下的价值。

weixin_29207533的博客 727

开源模型应用落地-LangGraph101-探索 LangGraph人机交互-添加断点(一)

通过“断点机制”实现了智能系统的可控自主性。

以微薄之力,予他人些许温暖. 2万+

MRI脑影像分析从哲学到技术:一文搞懂VBM预处理基本原理(全网最详细解析)

   分析大脑解剖学差异最常用方法之一是基于体素的形态学方法(voxel-based morphometry, VBM)。 VBM的基本思想是测量大脑组织,尤其是灰质的局部浓度的差异。在大脑的每个体素处进行操作,然后在两个或多个实验组之间进行统计比较,从而在受调查的组之间建立特定大脑区域中脑组织浓度的统计学显着差异。 VBM分析基于(高分辨率)MRI脑部扫描,涉及大量处理步骤,主要是空间归一化,分割,平滑和统计分析,最终结果是统计图,显示了各组之间组织类型明显不同的区域[^1]。 参考 [^1] ..

意疏的学习笔记 3万+

SAP GUI 经典事务在 Fiori Launchpad 中的穿越之道:原理、配置与实践指南

在许多企业的 S/4HANA 或 ECC 系统里,经典 SAP GUI 事务依旧承载着关键业务。如何把这些老将自然地嵌入到 Fiori Launchpad,让用户在统一入口里无缝切换新旧 UI,是项目中经常遇到的主题。本文结合社区博文、官方文档与实际项目经验,系统梳理这一过程的技术原理、配置步骤、性能优化以及常见坑点,并给出贴近中国读者的案例解析与改进建议。阅读完毕,你将不仅知道怎么做,还会理解。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 623

2. LangGraph 动态中断教程

介绍如何使用 LangGraph 库创建一个状态图,并在执行过程中处理动态中断。

The cure for boredom is curiosity. This is the log of its adventures. 2688

【安全机制分析案例】从PDF预览页面提取原始PDF文件的方法原理与实践 篇二:基于致远互联(Seeyon)封装的SuwellLightRead技术

该HTML代码片段展示了致远OA协同办公系统的前端页面结构,包含多个CSS样式表和JavaScript文件的引用。页面设置了IE兼容模式,加载了全局环境变量、UI组件库和公告模块相关资源。代码中定义了系统路径、静态资源后缀等全局变量,并包含公告查看功能的相关配置参数。页面还引用了水印、文档处理、即时通讯等功能的JS文件,并设置了文件下载框架。整体呈现了一个典型的OA系统前端实现方案,包含浏览器兼容处理、资源加载和功能模块初始化等逻辑。

生活在别处 2072

LangGraph系列6:AI 工作流如何“暂停-人工处理-继续”?LangGraph 中断与恢复机制全解析

想象一个金融客服场景:用户申请大额转账,AI 判断风险较高,需人工复核。此时系统不能直接拒绝,也不能盲目执行——它必须**安全暂停、等待人工决策、再无缝继续**。 传统 LLM 应用对此束手无策:要么强行自动化(引发合规风险),要么完全交给人(丧失效率)。而 LangGraph 提供的 **Interrupt + Checkpoint 机制**,让 AI 工作流具备“可中断、可恢复、可审计”的企业级能力。据 Gartner 2025 报告,支持人工干预的工作流系统在金融、医疗等高监管行业采用率年增 1

沛哥儿的专栏 1951

产品需求从场景,初始需求IR,产品需求 OR,设计需求DR,设计规格DS的具体案例说明,以扫地机产品为例

摘要: 以扫地机器人"宠物粪便避障"功能为例,说明从用户场景到产品落地的完整需求转化路径。初始需求(IR)源于养宠家庭痛点,要求100%避障并自动告警;产品需求(OR)转化为≥98%识别准确率等量化指标;设计需求(DR)拆解为感知、决策、执行三大技术模块;最终形成传感器选型(如索尼IMX678)、芯片规格(高通QCS6490)等设计规格(DS)。通过实验室模拟和用户测试验证,该功能使产品溢价30%,养宠家庭购买占比达52%,实现技术与商业价值的统一。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 765

ROS 之 使用yocs_velocity_smoother对机器人速度进行限制

yocs_velocity_smoother是一个速度、加速度限制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。Bound incoming velocity messages according to robot velocity and acceleration limits. The velocity smoother nodelet runs together with the kobuki_node to apply robot’s velocity and .

https://shixuebin.gitee.io/hexo-blog/ 2621

突破AI自主决策瓶颈:LangGraph人机协作核心技术详解

你是否遇到过AI agent执行任务时陷入死循环?是否因AI误解用户意图而导致操作失误?在智能客服、医疗诊断等高风险场景中,如何确保AI决策既高效又安全?本文将揭示LangGraph框架中人类交互(Human-in-the-Loop,HIL)技术的实现原理,通过实战案例展示如何在AI系统中无缝嵌入人工审核节点,让你轻松构建可靠的人机协作智能系统。 读完本文你将掌握: - 使用`interrupt...

gitblog_01116的博客 1274

Oracle EBS和华为MetaERP在会计科目(COA)设计上的观察非常精准。这两种设计确实代表了两种截然不同的系统架构思想,我们可以从设计哲学、优劣对比和演进关系三个方面进行深入分析。

OracleEBS与华为MetaERP的COA设计对比分析 OracleEBS采用弹性域架构,通过固定段数字符串实现多维度核算,强调稳定性和全球统一标准,但修改成本高、扩展性受限。华为MetaERP采用解耦架构,将核算单元、自然科目和核算维度分离,支持动态扩展和灵活调整,更适合业务快速变化的企业。 OracleEBS优势在于强一致性和成熟稳定,劣势是灵活性差;华为MetaERP优势是极致灵活性,劣势是对管理要求高。两者代表了不同时代的企业软件设计理念:OracleEBS适合标准化需求,MetaERP则面向快

金牌架构师 429

LangGraph核心组件-人机交互

摘要:LangGraph框架通过结构化机制实现高效人机协作,主要特点包括:1)智能中断触发机制,在关键决策点(置信度低/异常检测)自动请求人工介入;2)多模态交互接口支持文本/语音/标注等多种输入方式;3)双向状态同步确保流程可控性。典型应用场景涵盖客服对话、内容审核等需要动态决策的领域,相比传统方法具有可视化开发、模块化复用等优势。技术实现上通过中断恢复节点、状态管理器和命令控制机制,使系统能在人工干预后无缝恢复执行流程。

2401_88553130的博客 322

华为OD机考双机位C卷 - 员工派遣 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 员工派遣 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1032

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LangGraph Agent 实践手册

把 Agent 想象成一张流程图,每一步怎么走你说了算。自带"自动存档" 和 "记忆笔记本"(Store),能随时暂停、恢复、人工插手,不黑盒、好调试。

码刀攻城 416

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LangGraph实战:从链式调用到状态机编排的核心设计

大模型应用开发正从简单的链式调用走向基于图结构的状态机编排。LangGraph作为LangChain生态中的核心框架,以节点、边和全局状态为抽象模型,支持条件分支、动态循环、人工介入(Human-in-the-loop)以及多智能体协作。掌握状态设计中的Reducer机制是构建稳定工作流的关键,而Planning模式与interrupt中断则让复杂业务具备可控、可暂停、可恢复的执行能力。本文结合工程实践,系统讲解从链到图的思维转换、状态契约设计、动态规划路由、人工审核接入、并行分支处理,以及部署阶段Chec

weixin_42531925的博客 340

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LangGraph篇-人机交互

本文介绍了人机交互(Human-in-the-loop)工作流在LLM应用中的实现方法。重点讲解了LangGraph中的interrupt函数,该函数允许在特定节点暂停执行、向人类展示信息并使用输入恢复工作流。文章详细说明了三种主要设计模式:审批/拒绝、编辑状态和获取输入,并提供了代码示例展示如何设置检查点和断点来实现人工干预。这种机制特别适用于需要人工验证或修正的关键决策场景,确保LLM输出的可靠性,同时保持自动化流程的效率。

Q2024107的博客 1744

探索LangGraph:如何创建一个既智能又可控的航空客服AI

首先,定义图的状态。我们的状态和LLM调用与第二部分相同。python复制代码from typing import Annotated# 如果LLM碰巧返回了一个空响应,我们将重新提示它# 以获得一个实际的响应。):messages = state["messages"] + [("user", "请给出真实的输出。")]messages = state["messages"] + [("user", "请给出真实的输出。")]else:break# Haiku更快更便宜,但准确性较低。

2401_85373898的博客 779

构建自定义AI客户支持助手——LangGraph 中断机制

我们的图状态和 LLM 调用与上一章几乎相同,但有一个例外:我们添加了一个user_info字段,它将在图开始时就被填充,我们可以直接在助手对象中使用状态,而不是使用可配置参数。# 定义状态user_info: str # 新增:用户信息字段# 定义助手类# 如果 LLM 恰好返回空响应,我们会重新提示它给出实际响应):else:break# 配置 LLM# 定义助手提示词"system",),# 定义工具列表# 绑定工具到 LLM现在创建图。

weixin_40143861的博客 704

【Agent的革命之路——LangGraph】人机交互中的interrupt&Command

在LangGraph中,实现人机交互最核心的就是Command和interrupt,就是前面设计4种交互模式所使用的共同方法,简单点说就是中断图,获取人类提供的值,再恢复图。我们这次就来详细分析一下这两个语法。

weixin_40143861的博客 4076

langgraph人工打断功能

在开发智能体流程时,我们常常需要智能体需要做出关键决策或处理敏感信息时引入人工审核环节。比如金融交易审批、医疗诊断复核等场景,单纯的自动化流程可能存在风险。这时候,如何在智能体流程中无缝嵌入人工介入机制,就成为了一个关键挑战。而 LangGraph 框架中强大的 interrupt 功能,能够优雅地实现 "人在回路" 的工作流设计。下面我们来看看langgraph中interrupt 功能如何实现的 二 定义图状态 三 节点执行函数 四 构建状态图 五 运行 2. 增加打

m0_59735413的博客 354

【Agent的革命之路——LangGraph】人机交互中的细节(等待用户的指令)

这节我们探讨下如何使用interrupt等待用户输入,虽然前面都有讲过,但是有部分同学还是一知半解,我决定把这一块详细的逻辑整理出来,从头到尾给大家讲述一下。人机交互 (HIL) 交互对于agentic系统至关重要。等待人工输入是一种常见的HIL交互模式,允许agentic询问用户澄清问题并在继续之前等待输入。我们可以使用函数在LangGraph中实现这一点。interrupt允许我们停止图形执行以收集用户的输入,并使用收集的输入继续执行。

weixin_40143861的博客 1629

【LangGraph】 源码剖析(四):Checkpoint 与人机交互——断点续跑与时间旅行

本文深入剖析了LangGraph框架中的Checkpoint与人机交互系统。Checkpoint机制通过保存Superstep边界的状态快照,实现了断点续跑、人工干预和时间旅行三大核心功能。文章详细解析了StateSnapshot的数据结构,包含channel值、版本信息、待处理写入等关键元数据,并对比了内存、SQLite和PostgreSQL三种Checkpoint存储方案的适用场景。此外,还介绍了人机交互的四种模式(暂停确认、人工修改、强制覆盖和跳过节点)以及时间旅行功能,这些特性使LangGraph从

小李同学_LSH的博客 666

LLMs之GraphRoute/RAG/ETA/Agent:LangGraph(以图逻辑的方式处理或实现复杂流程任务/带有循环功能的Agent)的简介、安装和使用方法、案例应用之详细攻略

​ LLMs之GraphRoute/RAG/ETA/Agent:LangGraph(以图逻辑的方式处理或实现复杂流程任务/带有循环功能的Agent)的简介、安装和使用方法、案例应用之详细攻略 目录 LangGraph的简介 LangGraph的安装和使用方法 LangGraph的案例应用 LangGraph的简介 LangGraph 是一个使用LLMs用于构建具有状态的、多角色应用程序的库。受到 Pregel 和 Apache Beam 的启

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 7120

LangGraph 人工介入机制实战:interrupt 功能设计与应用模式解析

先来看一个完整的中断示例,注意代码中三个关键阶段的衔接:python# 1. 定义包含interrupt的节点函数"""当图执行到该节点时会暂停,等待人工输入"""# 传递需要人工处理的文本内容"instruction": "请将这段文本简化为50字以内"})# 返回人工处理后的结果,更新图状态# 2. 构建并编译图checkpointer = Checkpointer() # 必须指定检查点保存状态# 3. 执行图并处理中断# 首次调用触发中断。

佑瞻的博客 3396
上一篇: LangGraph核心模块:使用 MemorySaver 进行持久化管理
下一篇: 基于LangGraph构建可控制日志分析系统:子图组合与状态管理详解
AI航海家(Ethan)
博客等级 码龄7年 477粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值