因素07:用工具调用联系人工
大约 2 分钟
因素07:用工具调用联系人工
来源:12-Factor Agents / Factor 7(Contact humans with tool calls)
一句话先懂
“请求人工介入”也要做成结构化工具调用,而不是模型随口说一句。
奶奶版理解
社区办事时,工作人员给你的不是“你看着办”,而是标准表单:
- 要你确认什么
- 什么时候回复
- 可选项有哪些
这就是结构化协作。
原文关键洞察
LLM 在“输出自然语言”还是“输出 JSON”之间,经常是一开始就做高风险选择。
一种可实验策略是:让模型尽量总是输出结构化对象,用 intent 区分不同动作。
推荐的人机交互工具结构
{
"intent": "request_human_input",
"question": "是否允许发布 v1.2.3 到生产?",
"context": "此次发布影响在线用户",
"options": {
"urgency": "high",
"format": "yes_no"
}
}系统可把同一对象渲染到 Slack、邮件、短信。
为什么这么做
- 联系人工过程可审计
- 便于多渠道统一处理
- 易与 pause/resume 流程衔接
- 可扩展到 Agent->Agent 请求
真实落地流程
- 模型输出
request_human_input - 系统落
human_input_requested事件 - 发送消息并暂停线程
- 人工回复通过 webhook 回来
- 落
human_response事件并恢复
常见误区
- 问题不具体,用户不知道怎么答。
- 没有
urgency和deadline,响应不可控。 - 人工回复未进入线程,后续丢上下文。
我的思考
把人类当“特殊工具节点”是非常实用的抽象。
它让 AI 工作流从“聊天机器人”升级为“多人协作系统”。
小结
- 人工介入应协议化、事件化。
- 联系人类要和工具调用统一建模。
- 人机协同能力决定 agent 实用上限。
