核心要点

  • 能讲清调用闭环:声明 tools 的 JSON Schema → 模型返回 tool_calls 结构化输出 → 宿主执行函数 → 把结果作为 tool message 塞回 → 模型据此继续回答

  • 能点出模型本身不执行函数:它只生成「要调哪个函数、传什么参数」的结构化意图,真正执行在应用层

  • 能说出可靠性手段:SFT 用工具轨迹微调、推理时 constrained decoding 保证 JSON 合法,参数校验放应用层

  • 能说出工程实践:工具描述要清晰、失败把错误回传让模型重试、并行 tool calls 提升效率

简要回答

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

标准回答

调用闭环

  1. 定义 tools=[{name, description, parameters(schema)}] 随请求传给模型。
  2. 用户提问。
  3. 模型返回 tool_calls(要调的函数及参数)或最终文本。
  4. 若有 tool_calls,应用层执行函数并把结果作为 tool message 追加回 messages。
  5. 模型基于工具结果生成最终回答。

关键点:模型本身不执行函数,它只输出结构化的调用意图,真正执行在宿主侧。

为什么模型能稳定产出合法 JSON

  • 训练:用工具调用轨迹做 SFT,让模型学会何时调、怎么填参数。
  • 推理:用 constrained decoding 约束输出符合 schema,保证 JSON 合法。

工程实践

工具描述要清晰无歧义;参数校验放在应用层;调用失败时把错误信息回传让模型重试;可并行多个 tool calls 提升效率。

常见误区

⚠️ 常见踩坑

以为是模型直接执行了函数——模型只生成调用意图,执行与鉴权都在应用层,因此参数必须在应用层校验、不能信任模型输出;另一误区是工具描述写得含糊,模型选错工具或填错参数,描述质量直接决定调用准确率

追问

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

题库专题:什么是 MCP(Model Context Protocol)?解决什么问题?

OpenAI Function Calling 是模型 API 层的结构化工具调用;MCP 是工具提供方的协议与运行时。常见模式:Host 从 MCP Server 拉取 tool schema,转成 OpenAI tools 格式注入请求;执行时 Host 调 MCP Server,再把结果塞回 messages 完成闭环。

题库延伸:与本追问相关的专题题 → 什么是 MCP(Model Context Protocol)?解决什么问题?

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

工具层白名单与参数 schema 校验;高危操作(删库、转账)强制人工确认;沙箱执行与最小权限 IAM;速率限制与审计;模型侧 system prompt 约束;对 tool output 做策略检查后再展示给用户。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • LangChain

    最流行的 LLM 应用开发框架,137K+ stars。提供链式编排、RAG 检索增强生成、Agent 构建等核心能力,覆盖 Python 和 JavaScript 双语言生态,是构建 LLM 应用的基础设施

  • MCP Playwright

    Playwright 浏览器自动化的 MCP 实现,将成熟的 Playwright 测试框架能力通过标准 MCP 协议暴露给 AI Agent。支持网页抓取、表单自动化、E2E 测试场景、SPA 应用交互等完整浏览器自动化能力。5,400+ GitHub Star,相比原生浏览器 MCP 方案,Playwright 的跨浏览器支持(Chromium/Firefox/WebKit)和成熟 API 使其在复杂场景下更可靠

  • AutoGen / AG2

    微软开源对话式多 Agent 框架,54,000+ GitHub stars(最高),强项是代码沙箱和迭代调试,多个 Agent 通过对话协作完成复杂编程任务,MIT 协议

  • crewAI

    角色扮演 AI Agent 编排框架,49,411+ stars。通过角色分配让多个 Agent 协作完成复杂任务,支持工具调用、任务委派、结果审核。是构建 Multi-Agent 系统的最流行框架。