核心要点

  • 工具调用的关键是结构化输出:模型不是直接执行函数,而是输出要调用的工具名和参数。

  • 应用层负责真正执行工具:宿主程序校验参数、调用 API 或函数,再把结果回传给模型。

  • Schema 质量决定调用质量:工具名、描述、参数类型和必填字段越清晰,模型越不容易乱调。

  • 安全边界必须在应用层兜住:权限、参数校验、审计和高危操作确认不能只靠 prompt

简要回答

在 prompt 中声明工具 JSON Schema,模型生成 tool_calls 结构化输出,宿主执行函数后将 observation 塞回 messages,模型据此继续回答。

标准回答

一、先讲调用闭环

Function Calling / Tool Use 的核心是:模型不直接执行代码,而是根据工具 schema 输出一个结构化调用请求,例如工具名、参数 JSON 和调用 id。应用层拿到这个请求后,负责校验参数、执行函数或 API,再把 tool result 作为新消息回传给模型,模型最后基于结果继续回答。

二、拆开实现细节

一次完整链路通常是:定义工具 schema → 用户提问 → 模型判断是否需要工具 → 返回 tool_calls → 宿主程序执行工具 → 回填工具结果 → 模型生成最终答案。Schema 里最重要的是 工具描述、参数类型、必填字段、枚举范围和失败说明。如果工具描述含糊,比如 “search” 没有说明搜什么、何时用,模型就容易乱调或漏调。

三、补上安全和可靠性

生产环境里,工具调用的风险在应用层。参数必须校验,高危操作要人工确认,工具执行要有超时、重试和审计日志;工具返回内容也不能完全信任,尤其是网页、邮件、RAG 文档这类外部文本,可能包含 prompt injection。并行 tool calls 能提升效率,但也要处理依赖顺序和部分失败。

常见误区

⚠️ 常见踩坑

误区一:以为模型真的执行了函数。模型只是提出调用请求,真正执行的是应用层。

误区二:只靠 prompt 限制危险工具。删除数据、转账、发邮件这类动作必须有权限控制和人工确认,不能只写“不要乱调用”。

追问

追问 1OpenAI tools 和 MCP 如何配合?

题库专题:什么是 A2A 协议?它与 MCP 协议是什么关系与区别?

OpenAI tools / Function Calling 是模型 API 层的结构化调用能力;MCP 是工具提供方的协议与运行时。常见模式是:Host 先从 MCP Server 读取工具 schema,把它转换成模型请求里的 tools;模型返回 tool_calls 后,Host 再调用对应 MCP Server 执行工具,把结果作为 tool message 回填给模型。候选人可以补一句边界:模型 API 负责“表达调用意图”,MCP 负责“工具发现、连接和执行”,两者是配合关系,不是互相替代。

题库延伸:与本追问相关的专题题 → 什么是 A2A 协议?它与 MCP 协议是什么关系与区别?

追问 2如何防止模型调用危险工具?

可以按四层防护回答:工具白名单,模型只能看到当前场景允许的工具;参数校验,schema、枚举、范围、用户权限都在应用层检查;高危确认,删库、转账、发邮件、改权限必须人工确认;审计与沙箱,所有调用记录用户、参数、结果和失败原因,执行环境最小权限。这样即使模型被诱导,也不能直接造成真实副作用。

🔗 相似问题

同一考点的不同问法,换着练更稳

延伸学习

按主题分类的相关资源,便于系统复习