如何在 Langflow 流程中使用 Human-in-the-Loop 实现人工确认?
【免费下载链接】langflowLangflow is a powerful tool for building and deploying AI-powered agents and workflows.项目地址: https://gitcode.com/GitHub_Trending/la/langflow
如果你在 Langflow 中构建的流程会执行有实际后果的动作(调用工具、发送内容、提交代码等),你可能需要在关键步骤上插入一个人工确认点:流程运行到该步骤时暂停,等待人选择 Approve 或 Reject,再根据选择继续。Langflow 的 Human-in-the-Loop(HITL)机制做的就是这件事——它暂停流程、创建一个 checkpoint,然后等待人的决定;批准或拒绝之后,运行从 checkpoint 恢复并只走所选分支,之前已完成的步骤不会重新执行。
HITL 有两种接法:在流程中放置Human Input组件(会暂停流程并产生分支),或者在Agent组件上为某个工具开启审批(只暂停、不加分支)。本文先讲主路径 Human Input 组件,再把 Agent 工具审批作为可选方式给出。
方式一:使用 Human Input 组件
这是官方文档给出的标准做法。以文档中的例子为例:一个 agent 起草 Python 代码,其中一个工具会把代码提交到 Git。你把Human Input组件放在代码生成步骤之后,让人在Approve或Reject之间选择——选 Approve 流程继续到 commit 步骤,选 Reject 则把草稿打回修改。
按下面的步骤配置:
- 从Flow Controls菜单添加一个Human Input组件,放在需要人工把关的步骤之后。
- 在Form Content中填写给审阅者看的内容,例如
Review this summary before it is sent to the customer. - 在User Actions中保留默认的Approve和Reject;也可以添加自定义标签,如Escalate。每个动作会给组件增加一个对应的输出连接点。
- 把Approve输出连接到批准后要执行的组件。
- 把Reject输出连接到替代路径,例如一个 Chat Output 组件来说明被拒绝的原因。
- 在Playground中运行流程。执行到达Human Input节点时会暂停,在 approval pane 中选择一个动作即可恢复流程。
Human Input 组件的四个参数如下(来自 Human Input 组件文档):
| 参数名 | 界面显示名 | 说明 |
|---|---|---|
prompt | Form Content | 展示给人审阅的内容。 |
decisions | User Actions | 人可以选择的动作,每个动作成为一个组件分支输出。 |
timeout | Timeout | 开启Enable Fallback后,等待多久未响应就走 fallback 路径。 |
enable_fallback | Enable Fallback | 开启后增加一个Fallback输出,用于超时无人作答的情况。 |
部分参数在可视化编辑器中默认隐藏,选中组件后在组件检查面板里可以修改全部参数。
每个User Action标签在 API 的 resume 请求中映射到一个稳定的action_id。例如标签Request Changes对应request_changes。如果你要通过 API 而非界面来响应暂停,需要用到这个映射。
可选:配置超时与回退分支
如果希望无人应答时流程不要一直挂着,可以增加一条回退路径:
- 在组件检查面板中开启Enable Fallback,这会从组件创建一个新的输出连接点。
- 设置Timeout时长。
- 把Fallback输出连接到超时后应执行的逻辑。
超时前收到决定则正常走对应动作分支;超时前没有决定,Langflow 会路由到Fallback输出。
方式二:为 Agent 工具开启审批
如果流程的核心是一个Agent组件,只想让它在调用某个特定工具前停下来等确认,可以不用 Human Input 组件,而是对该工具开启Requires approval(见 Agent 工具配置文档):
- 把工具组件以Tool Mode开启后,连接到Agent组件的Tools输入。
- 打开 agent 的工具菜单,对目标工具(如 Git commit 工具)开启Requires approval。审批只加在该工具上,其他工具不受影响。
- 当 agent 尝试调用该工具时,运行暂停,直到有人在Playground中选择Approve或Reject。
这种方式不会在画布上增加分支节点。决定会保存在聊天历史中,重新加载会话时直接显示已解析的决定,不会再次弹出确认。
验证人工确认生效
- Playground 验证:运行流程后,执行应在 Human Input 节点处停下并出现 approval pane;选择某个动作后,流程从该动作对应的分支继续,未选中的分支不执行。
- API 验证:如果通过 workflows API 以 background 方式运行,任务的
status为suspended表示"作业已暂停并正在等待人工输入",对应 Workflows API 文档 中的状态表;人做出决定、运行恢复完成后状态变为completed。
使用限制
- 不能放在嵌套流程里:如果 Run Flow / Sub Flow / flow-as-tool 的目标流程中包含已连接的 Human Input 节点(或开启了审批的 agent 工具),运行会以明确错误失败("cannot run as a nested flow… move the approval to the parent flow"),而不是静默地不暂停。应把审批移到父流程中。详见 HITL 功能文档。
- 未接线的 Human Input 不阻塞:如果一个 Human Input 没有下游消费者,它在运行时会被跳过,不会卡住流程。
- 重跑会取代旧暂停:同一个用户对一个已有
SUSPENDED运行的流程再次提交后台运行时,旧的挂起运行会被取消(状态CANCELLED、待处理请求清除)再开始新运行,历史中旧卡片标记为 superseded,只展示新运行的确认点。 - 默认关闭:没有任何组件请求暂停时,HITL 机制不产生 checkpoint、不额外占用行为,普通流程不受影响。
完成确认点后,可以结合 Human-in-the-Loop 概览 查看 1.11 版本的视频示例,或参考 Workflows API 用 API 方式管理后台运行与 resume。
【免费下载链接】langflowLangflow is a powerful tool for building and deploying AI-powered agents and workflows.项目地址: https://gitcode.com/GitHub_Trending/la/langflow
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考