概述
在上一节我们讨论了如何通过摘要压缩来管理上下文长度。现在我们要关注另一个关键问题:如何确保AI智能体的行为符合预期,特别是在执行高风险操作时。
想象一下,如果AI智能体可以直接发送邮件、进行支付、修改数据库,一旦它理解错了用户意图或者被恶意引导,后果可能很严重。这时候,我们就需要人在关键环节进行把关。
Human-in-the-loop中间件正是为了解决这个问题而设计的。它的核心思路很简单:在AI智能体执行某些关键工具调用之前,先暂停流程,等待人工审核、编辑或拒绝,只有经过人工确认后,操作才会真正执行。
这就好比公司里重要决策需要领导签字一样,AI可以提出方案,但执行需要人工确认,确保风险可控。
使用场景
高风险操作审批
对于涉及资金、数据修改、系统配置等高风险操作,必须在执行前获得人工确认。比如:
- 发送重要邮件
- 进行支付或转账
- 修改生产数据库
- 删除重要文件
合规要求
在金融、医疗、政务等受监管的行业,某些操作必须有人工审核环节,这是合规的基本要求。
业务流程控制
某些业务流程本身就需要人工确认环节,比如订单处理、合同审核等,AI可以帮助执行,但最终需要人确认。
核心功能需求
工具级别的干预控制
不是所有工具都需要人工干预,我们需要能够精确控制哪些工具需要审批,哪些可以直接执行。
工具白名单/黑名单机制
- 白名单模式:只有列在白名单中的工具需要人工审批
- 黑名单模式:只有列在黑名单中的工具需要人工审批
- 推荐:建议使用白名单模式,更安全,避免遗漏高风险工具
干预操作类型
对于需要审批的工具,我们可以支持不同的操作:
- 审批(Approve):同意执行,工具按原计划执行
- 编辑(Edit):修改工具调用的参数,比如修改邮件收件人、调整金额等
- 拒绝(Reject):拒绝执行,终止当前操作
产品建议:不是所有工具都需要支持全部三种操作。比如只读查询可能只需要审批和拒绝,不需要编辑。我们可以为每个工具配置允许的操作类型。
状态保存与恢复
人工审批需要时间,在这期间,AI智能体的执行状态必须保存下来,否则审批回来后状态丢失,就无法继续执行了。
Checkpointer机制
需要引入状态保存机制(Checkpointer),保存当前的对话状态、已执行的步骤、工具调用参数等信息。
状态持久化
- 内存保存:适合测试环境,简单但不可靠
- Redis/数据库保存:适合生产环境,可以支持分布式部署和状态恢复
产品建议:生产环境必须使用持久化的状态保存机制,确保审批流程不会因为服务重启而中断。
PRD需求描述
功能需求
FR-1: 工具级别的审批控制
- 描述:能够为每个工具配置是否需要人工审批,以及支持哪些审批操作
- 配置方式:提供配置界面,支持工具级别的细粒度控制
- 优先级:P0(核心功能)
FR-2: 审批流程管理
- 描述:当需要审批的工具被调用时,系统暂停执行,发起审批流程
- 审批信息:向审批人展示工具名称、调用参数、上下文信息等
- 优先级:P0(核心功能)
FR-3: 审批操作支持
- 描述:支持审批、编辑、拒绝三种操作
- 编辑功能:允许审批人修改工具调用参数,修改后重新提交
- 优先级:P0(核心功能)
FR-4: 状态保存与恢复
- 描述:在审批期间保存执行状态,审批完成后恢复执行
- 持久化:生产环境必须支持状态持久化,避免状态丢失
- 优先级:P0(核心功能)
FR-5: 审批超时处理
- 描述:如果审批超过预设时间未处理,执行预设的默认操作(继续/终止)
- 超时时间:可配置,建议默认24小时
- 优先级:P1
FR-6: 审批通知
- 描述:当有需要审批的操作时,及时通知审批人
- 通知方式:支持邮件、短信、系统内通知等
- 优先级:P1
非功能需求
NFR-1: 权限控制
- 审批权限:只有具有相应权限的用户才能审批对应的工具操作
- 权限管理:需要与现有的权限系统(如RBAC、OAuth)集成
NFR-2: 审计与追溯
- 审批日志:记录所有审批操作,包括审批人、审批时间、审批结果、参数修改等
- 追溯能力:支持查询历史审批记录,便于审计和问题排查
NFR-3: 性能要求
- 状态保存性能:状态保存操作不应显著影响响应时间
- 并发支持:支持多用户并发审批
产品设计要点
审批界面设计
审批界面需要清晰展示以下信息:
- 工具信息:工具名称、功能描述
- 调用参数:工具调用的所有参数,便于审批人判断
- 上下文信息:当前对话的上下文,帮助审批人理解操作背景
- 风险提示:对于高风险操作,需要醒目提示
编辑功能设计
编辑功能应该:
- 参数校验:编辑后的参数需要校验格式和合法性
- 修改对比:展示修改前后的对比,让审批人清楚修改了什么
- 二次确认:重大修改需要二次确认
超时策略设计
超时后的默认行为需要根据业务场景配置:
- 高风险操作:超时后默认拒绝,安全第一
- 一般操作:超时后可以默认通过,但需要记录日志
- 配置化:允许为不同工具配置不同的超时策略
使用建议
什么时候应该使用
- 高风险操作:涉及资金、数据修改、系统配置等操作
- 合规要求:行业监管要求必须有人工审核环节
- 业务流程需要:业务本身就需要人工确认
配置建议
- 工具选择:仔细评估哪些工具需要审批,避免过度审批影响效率
- 权限管理:建立清晰的权限体系,确保合适的人审批合适的操作
- 超时策略:根据业务特点设置合理的超时时间
注意事项
- 必须配置Checkpointer:没有状态保存机制,审批流程无法正常工作
- 工具名称精确匹配:配置时需要确保工具名称完全一致(包括大小写)
- 与其他中间件的配合:建议将Human-in-the-loop放在优先级较高的位置,确保人工审批先于其他控制逻辑生效
与其他中间件的配合
Human-in-the-loop可以与其他中间件配合使用:
- 与ToolCallLimitMiddleware配合:人工审批通过后,工具调用才计入次数限制
- 与PIIDetection配合:如果检测到敏感信息,可以触发人工审核
后续优化方向
- 智能审批建议:AI可以提前分析操作风险,给审批人提供审批建议
- 批量审批:支持一次性审批多个相似操作
- 审批模板:对于常见的审批场景,可以预设审批模板,提高效率
- 审批分析:统计分析审批通过率、平均审批时间等,帮助优化审批流程