首页 › AI Agent › 智能体 Agent 12要素原则 › 工具本质只是结构化输出

工具本质只是结构化输出

工具本身并不复杂。究其核心,工具就是大模型输出的结构化数据,用来触发固定逻辑代码执行。​

文档标识:140-tools-are-just-structured-outputs​

​

飞书文档 - 图片

​

示例说明​

假设现有两个工具:创建工单 CreateIssue、检索工单 SearchIssues。​

让大模型“选用多款工具其一”,本质就是让模型输出一段可解析为工具对象的 JSON 文本。​

​

数据模型定义​

​

代码块​

Python

# 工单基础结构​

class Issue:​

title: str # 工单标题​

description: str # 工单描述​

team_id: str # 所属团队ID​

assignee_id: str # 负责人ID​

​

# 创建工单工具结构体​

class CreateIssue:​

intent: "create_issue"​

issue: Issue​

​

# 检索工单工具结构体​

class SearchIssues:​

intent: "search_issues"​

query: str # 检索关键词​

what_youre_looking_for: str # 检索目标说明​

​

​

通用执行范式​

整套流程逻辑十分简洁:​

大模型输出标准化结构化 JSON​

后端固定逻辑代码匹配并执行对应操作(例如调用第三方开放接口)​

捕获执行结果,回填至上下文窗口供下一轮推理​

这套设计实现了模型决策逻辑与应用执行逻辑的解耦:​

由大模型判断「该做什么」,由业务代码掌控「具体怎么做」。​

即便大模型输出了某工具调用指令,你也不必每次都机械地执行对应固定函数,可自由定制执行逻辑。​

​

代码匹配示例(承接前文分支判断逻辑)​

​

代码块​

Python

if nextStep.intent == 'create_payment_link':​

# 调用Stripe接口生成付款链接​

stripe.paymentlinks.create(nextStep.parameters)​

return​

elif nextStep.intent == 'wait_for_a_while': ​

# 自定义延时、等待类逻辑​

​

​

补充注释​

业界有大量文章对比「原生提示词」「工具调用」「JSON 输出模式」三者的优劣与性能取舍,相关参考资料后续会附上,本文不展开细说。​

相关拓展阅读素材:​

Prompting vs JSON Mode vs Function Calling vs Constrained Generation vs SAP​

When should I use function calling, structured outputs, or JSON mode?​

OpenAI JSON vs Function Calling​

核心拓展观点​

所谓“下一步操作”不一定只是单纯执行函数并返回结果。​

一旦你建立认知:工具调用只是模型输出一段描述执行动作的 JSON,就能获得极高的开发灵活度。​

结合第 8 条「自主掌控业务控制流」理念,可搭建高度自定义的智能体执行链路。​

​