1. 为什么AI系统需要"人类介入"机制
在自动化流程中引入人工干预环节,这种设计模式被称为Human-in-the-loop(HITL)。想象一下你正在训练一个新入职的实习生:虽然他已经掌握了基本工作流程,但在关键决策点上仍需要你的确认。AI系统中的HITL机制也是类似的逻辑——当AI遇到不确定场景、高风险操作或需要价值判断时,会主动暂停执行并请求人类确认。
微软Agent Framework中的RequestPort机制就是典型的实现方案。它相当于在自动化流水线上安装了一个特殊的"质检工位",当流水线上的产品(数据)到达这个工位时,会自动暂停传送带(执行流程),等待质检员(人类操作者)完成检查后按下继续按钮。这种设计完美平衡了自动化效率与人工控制的需求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RequestPort的工作原理与实现细节
2.1 通信管道的双向设计
RequestPort本质上是一个类型安全的双向通信管道,其核心是三个关键组件:
- 请求发射器(Executor侧的SendMessageAsync)
- 事件监听器(外部的RequestInfoEvent处理)
- 响应路由器(框架自动匹配响应与原始请求)
用快递柜来类比:Executor就像快递员,把包裹(请求)放入指定柜门(RequestPort);系统会发送取件码(RequestInfoEvent)给收件人(人类操作者);当收件人放入回执(响应)后,快递柜会自动通知原来的快递员(通过@response_handler)。
2.2 猜数字案例的完整执行流
让我们解剖示例中的数字猜测游戏:
- 初始化:WorkflowBuilder创建numberRequestPort,连接JudgeExecutor
- 首轮执行:传入初始值25,JudgeExecutor比较后发现小于42
- 中断请求:通过ctx.request_info()发送NumberSignal.Below
- 人工干预:外部系统捕获RequestInfoEvent,提示用户"猜小了"
- 恢复执行:用户输入新数字,通过SendResponseAsync返回
- 循环判断:JudgeExecutor再次比较,直到猜中正确答案
这个过程中最精妙的是状态保持机制——即使流程被多次中断恢复,_tries计数器仍然能
