# Human-In-The-Loop-using-Langgraph：构建可控的AI智能体工作流

> 基于LangGraph实现的人机协作系统，演示如何在AI智能体执行关键操作前暂停并请求用户确认，结合工具调用、记忆功能和人工监督，实现更安全的智能体工作流。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-18T18:13:20.000Z
- 最近活动: 2026-04-18T18:21:34.578Z
- 热度: 159.9
- 关键词: LangGraph, 人机协作, HITL, AI智能体, LangChain, 工作流控制, 安全设计, 工具调用
- 页面链接: https://www.zingnex.cn/forum/thread/human-in-the-loop-using-langgraph-ai
- Canonical: https://www.zingnex.cn/forum/thread/human-in-the-loop-using-langgraph-ai
- Markdown 来源: ingested_event

---

## 背景与意义

随着AI智能体能力的不断增强，一个核心问题日益凸显：如何在赋予智能体足够自主权的同时，确保关键决策有人类监督？特别是在涉及资金交易、数据修改、外部系统调用等高风险场景下，完全自主的AI决策可能带来不可控的风险。

Human-In-The-Loop（HITL）模式正是为解决这一问题而设计。它允许AI智能体在执行特定操作前暂停，等待人类用户的确认或拒绝。这种模式在保持AI效率的同时，为关键决策设置了安全阀门。

## 项目概述

本项目是一个聚焦于LangGraph HITL模式的演示项目，通过实际可运行的代码展示了如何在智能体工作流中集成人工监督机制。项目包含：

- 一个循序渐进的Jupyter Notebook教程
- 两个对比版本的聊天机器人（带HITL和不带HITL）
- 基于uv的现代Python项目管理

## 核心技术栈

### LangGraph 框架

LangGraph是LangChain的扩展，专为构建有状态、多智能体应用而设计。它提供了：

- **图结构工作流**：将智能体行为建模为节点和边的图
- **状态管理**：跨步骤持久化状态
- **中断机制**：支持在任意节点暂停执行
- **人机交互**：内置支持人类输入和干预

### 关键组件

| 组件 | 用途 |
|------|------|
| `interrupt()` | 暂停智能体执行，等待人类输入 |
| `Command(resume=...)` | 恢复执行并传递人类决策 |
| `MemorySaver` | 持久化对话状态 |
| `thread_id` | 区分不同对话会话 |

## 实现机制详解

### 基础HITL流程

项目的Notebook详细展示了HITL的核心流程：

1. **智能体处理**：智能体接收用户输入，决定需要调用工具
2. **中断触发**：在关键操作前调用 `interrupt()`，暂停执行
3. **人类审查**：系统向人类展示操作详情，请求确认
4. **决策传递**：人类输入"yes"或"no"
5. **恢复执行**：通过 `Command(resume={"action": "yes/no"})` 恢复流程
6. **结果返回**：根据人类决策执行或取消操作

### 股票交易机器人示例

项目提供了一个生动的股票交易场景来演示HITL的实际应用：

**不带HITL的版本**（`chatbot_without_HITL.py`）：
- 智能体可以自主查询股价
- 智能体可以自主执行购买操作
- 完全自动化，无人工干预

**带HITL的版本**（`chatbot_with_HITL.py`）：
- 查询股价：自主执行（低风险操作）
- 购买股票：触发中断，等待人工确认（高风险操作）

示例对话流程：

```
用户：购买10股AAPL
系统：[中断] 请确认：购买10股AAPL？
用户：yes
系统：已为您下单购买10股AAPL
```

## 安全设计考量

### 风险分级

项目展示了如何对不同操作进行风险分级：

- **低风险操作**（如查询）：无需中断，智能体自主完成
- **高风险操作**（如交易）：强制中断，必须人工确认

这种分级策略既保证了效率，又确保了安全。

### 防御性设计

- **输入验证**：对人类输入进行验证，防止注入攻击
- **超时处理**：可配置中断的超时时间，超时后自动取消
- **会话隔离**：通过 `thread_id` 确保不同对话的状态隔离

## 技术实现细节

### 工具定义

项目定义了两个工具函数：

```python
# 查询股价 - 低风险，无需HITL
def get_stock_price(symbol):
    """从Alpha Vantage获取实时股价"""
    pass

# 模拟购买 - 高风险，需要HITL
def dummy_purchase_stock(symbol, quantity):
    """在购买前调用interrupt()请求确认"""
    interrupt(f"Approve buying {quantity} shares of {symbol}")
    # 根据人类决策执行或返回取消消息
```

### 依赖管理

项目使用 `uv` 进行依赖管理，这是Python生态中新兴的现代化工具：

```toml
[project]
dependencies = [
    "langgraph",
    "langchain-openai",
    "langchain-community",
    "python-dotenv",
]
```

## 应用场景

### 金融交易

如项目示例所示，任何涉及资金的操作都应该有人工确认环节，防止AI误判或恶意指令导致的损失。

### 数据修改

在数据库操作、配置变更等场景下，HITL可以确保关键修改经过人工审核。

### 外部系统调用

当智能体需要调用外部API（如发送邮件、创建资源）时，HITL提供了最后的检查点。

### 医疗诊断

在医疗AI应用中，诊断建议和治疗方案应该由医生最终确认。

### 内容发布

社交媒体管理、新闻发布等场景下，HITL可以防止不当内容的自动发布。

## 局限与改进方向

### 同步阻塞

当前实现采用同步阻塞模式，智能体必须等待人类响应。对于需要高吞吐量的场景，可以考虑：

- 异步通知机制
- 批量确认模式
- 预授权某些操作类型

### 用户体验

中断弹出的方式可能影响用户体验，未来可以探索：

- 更友好的UI集成
- 移动端推送通知
- 语音确认等自然交互方式

### 决策记录

目前的实现没有详细记录人类决策的历史，可以扩展：

- 决策日志审计
- 决策模式学习
- 自动授权常见操作

## 与其他框架的对比

| 特性 | LangGraph HITL | AutoGPT | MetaGPT |
|------|---------------|---------|---------|
| 中断粒度 | 节点级别 | 任务级别 | 角色级别 |
| 恢复机制 | Command(resume) | 重新规划 | 重新分配 |
| 状态持久化 | 内置MemorySaver | 需自行实现 | 需自行实现 |
| 易用性 | 中等 | 高 | 中等 |

LangGraph的HITL实现提供了较细粒度的控制能力，适合需要精确控制关键节点的场景。

## 实践建议

### 何时使用HITL

- 操作不可逆（删除、转账）
- 操作影响范围广（批量修改）
- 操作涉及敏感资源（密钥、权限）
- 操作结果难以自动验证（创意内容）

### 何时避免HITL

- 高频低风险操作（日志查询）
- 已验证的自动化流程
- 用户体验优先的实时场景

### 渐进式采用

建议采用渐进式策略：

1. 先对所有操作启用HITL，观察模式
2. 分析日志，识别低风险操作
3. 逐步移除低风险操作的HITL要求
4. 保留关键操作的HITL保护

## 结语

Human-In-The-Loop-using-Langgraph 项目以简洁清晰的代码展示了如何在现代AI应用中实现人机协作。它证明了技术实现并不复杂——关键在于识别哪些决策需要人类参与，以及如何设计流畅的交互体验。

随着AI智能体在生产环境中的部署越来越普遍，HITL模式将成为标准实践。本项目为开发者提供了一个很好的起点，帮助他们在自己的应用中构建安全可控的AI工作流。
