因素04:工具本质是结构化输出
大约 2 分钟
因素04:工具本质是结构化输出
来源:12-Factor Agents / Factor 4(Tools are just structured outputs)
一句话先懂
工具调用不是魔法,本质是模型输出结构化数据,然后由确定性代码执行。
奶奶版理解
你在餐厅点菜时,给服务员的是“菜名+份数”的单子,不是自己进后厨炒。
“点菜单”是结构化输出,“后厨流程”是确定性执行。
原文核心观点
- 模型做“选择下一步动作”的决策。
- 你的系统做“如何执行动作”的编排。
- 一次工具调用可映射成一段复杂但可控的业务流程。
实战示例
{
"intent": "create_issue",
"title": "生产告警持续",
"priority": "P1",
"team": "platform"
}执行层可以做:
- 参数校验
- 自动补默认值
- 匹配负责人
- 创建工单
- 发通知
- 回写结果事件
落地要点
- 给每个 intent 定义稳定 schema。
- 执行层不要直接把模型字段透传到外部系统。
- 工具结果要回灌到上下文,让模型形成闭环。
常见误区
- 把工具调用理解成“自动调用某个函数”,缺少中间风控层。
- schema 经常变化,导致线上不稳定。
- 只有请求没有结果事件,下一步无法推理。
我的思考
这一条把“AI 系统”拉回“软件系统”。
很多团队失败是因为让模型从“提议者”变成了“直接执行者”。
正确姿势应该是:
- 模型声明意图
- 代码做安全执行
- 结果再回到模型
这才是可维护闭环。
小结
- 工具调用 = 结构化协议。
- 协议稳定,系统才稳定。
- 模型决策和代码执行必须分层。
