Zilmac 博客
← 返回技术实践

2026 AI Agent 技术栈全面解析:GPT、Gemini、Claude、MCP、Function Calling 与 JSON Schema 如何协同工作?

Agent 技术栈 ·约 14 分钟阅读

开发者在 Mac 上把 GPT、Gemini、Claude 的工具调用与 MCP、JSON Schema 接到同一套 AI Agent 运行时

2026 年再谈 AI Agent,争论点已经不是「选 GPT、Gemini 还是 Claude」。真正决定系统能否上线的,是模型如何通过 Function Calling 发出结构化请求、JSON Schema 如何约束参数、MCP 如何把工具与上下文插到运行时。三者叠在一起,才构成可编排、可审计、可替换模型的 Agent 技术栈。

本文面向正在把聊天机器人升级成可执行 Agent 的工程团队:拆开各层职责、走完一次完整工具循环,并说明在云端 Mac 上跑构建类工具时该如何切分边界。成本侧可对照 OpenRouter 上 Claude / GPT / Gemini 的调用成本;工作区隔离见 Agent 虚拟文件系统;跨会话状态见 Agent Memory 横向评测。

3
模型层:GPT · Gemini · Claude,可替换推理引擎
1
契约层:Function Calling + JSON Schema
MCP
插槽层:工具、资源与提示词的标准传输

先把栈拆开:模型不是全部

把 Agent 理解成「会说话的模型」会漏掉真正承载可靠性的三层:

  1. 推理引擎:GPT、Gemini、Claude 等,负责规划、选工具、解释结果。
  2. 调用契约:Function Calling(各家也称 tool use)加上 JSON Schema,规定「能调什么、参数长什么样」。
  3. 运行时插槽:Model Context Protocol(MCP) 把文件系统、仓库、浏览器、内部 API 以标准方式接到 Agent 主机。

2025–2026 年的共识是:模型可以换,契约与插槽应尽量稳定。业务代码不要绑死某一家 SDK 的私有函数名,而应围绕「工具清单 + Schema + 执行沙箱」来设计。

GPT、Gemini、Claude 在 Agent 里怎么分工

三家都支持工具调用,差异主要在默认风格、多模态入口、长上下文与合规姿态,而不是「有没有 function call」。

  • GPT 系列:工具循环文档成熟,OpenAI Function Calling 与 Responses / Chat Completions 生态最大,适合作为默认编排器或网关后端。
  • Gemini:多模态与长上下文强,官方 Function Calling 适合文档、截图、仓库树同时进上下文的 Agent。
  • Claude:工具使用与计算机/代码场景口碑稳,Anthropic tool use 适合高风险改代码、需要更谨慎拒绝越权调用的路径。

生产上更常见的是路由而不是单模型信仰:规划用强推理模型,大批量结构化抽取用便宜模型,敏感写操作固定走带人工确认的模型档。路由与账单拆解见 多模型调用成本对照。

工程师在工作台上把 GPT、Gemini、Claude 的工具调用与 MCP 服务器接到同一套 Agent 运行时
典型结构:用户意图 → 模型规划 → JSON Schema 校验的工具调用 → MCP / 本地执行器 → 观察结果回写上下文

Function Calling:模型与世界的合法接口

Function Calling 的本质不是「模型自己执行函数」,而是模型输出一份符合约定的调用意图,由宿主程序决定是否执行。正确拆分是:

  • 模型:选择工具名、填充参数、根据观察继续规划。
  • 宿主:鉴权、限流、校验、实际 I/O、把结果编回消息列表。

各家 JSON 字段名略有差异(tools / function / input_schema),但循环相同:声明工具 → 模型返回 tool call → 执行 → tool result → 再推理。不要让模型直接拼 shell 字符串当「工具」;那会绕过 Schema,把注入风险交给提示词。

工程底线

  • 工具名稳定、语义单一:一个工具只做一类副作用。
  • 写操作与读操作分开,写操作默认需要确认或沙箱。
  • 工具结果写回时保留 call_id,便于审计与重试。

JSON Schema:工具的类型系统

JSON Schema 在 Agent 栈里扮演的是编译期类型 + 运行时校验。模型再聪明,也应先过 Schema:缺必填字段、枚举越界、额外属性,都应在进业务逻辑前失败,并让模型看到校验错误后重试。

推荐把每个工具的 parameters / input_schema 写成一份可版本化的 Schema(见 JSON Schema),而不是散落在提示词里的「请传入 repo 和 branch」。

必须写进 Schema 的约束

  • type、required、additionalProperties: false:减少幻觉字段。
  • 路径、URL、枚举用 pattern / enum,不要用自由文本冒充标识符。
  • 大字段(日志、diff)不要塞进参数;改为「写入工作区文件 + 返回路径」,与 VFS 按需读取一致。
  • 版本号放 Schema 或工具名后缀(deploy_v2),避免新旧 Agent 共用一份模糊契约。

校验应发生在模型输出之后、真实副作用之前。只靠「提示词里写 JSON」无法构成生产控制。

MCP:工具与上下文的通用插槽

MCP 解决的是 Function Calling 之上的发现与传输问题:工具不一定写死在应用代码里,而可以由 MCP Server 动态列出 tools、resources、prompts。主机(Claude Code、IDE Agent、自建 orchestrator)通过标准协议连接多个 Server。

和「每个模型厂商各写一套插件」相比,MCP 的价值是:

  • 工具可插拔:Git、浏览器、内部工单系统各跑一个 Server,Agent 主机只维护连接与权限。
  • 上下文可引用:资源 URI 让大文件不必整段塞进 prompt。
  • 与模型解耦:同一套 MCP 工具清单可喂给 GPT、Gemini 或 Claude 的 Function Calling 层。

落地时仍要把 MCP 工具映射成带 JSON Schema 的 function 声明,并在主机侧做路径白名单。MCP 不是安全边界本身,它是标准插头;沙箱、密钥与审计仍在宿主。

一次完整循环:从意图到工具结果

以「根据失败的 iOS 构建日志提修复 PR」为例,协同顺序通常是:

  1. 用户给出意图;主机注入系统策略(禁止碰证书、禁止生产密钥)。
  2. 模型阅读工具清单(来自静态注册或 MCP list_tools)。
  3. 发出 fetch_ci_log 的 Function Call,参数经 JSON Schema 校验。
  4. 执行器在沙箱或 云端 Mac 上取日志,超长内容落入 VFS 文件。
  5. 工具结果回写;模型再调用 apply_patch,写操作走确认或只读 diff 预览。
  6. 若需要记忆「上次 Profile 过期」,写入 Memory 层而不是塞进 Schema 参数。见 Memory 选型。

任何一步失败都应结构化错误(校验失败、权限拒绝、超时)而不是一段自然语言,否则模型难以正确重试。

对照表与选型

层 负责什么 不负责什么 2026 常见选择
GPT / Gemini / Claude 规划、选工具、解释观察 真实 I/O、鉴权 按任务路由,保留切换能力
Function Calling 把意图变成带 id 的工具请求 定义业务权限模型 各厂商 tool use,主机统一适配
JSON Schema 参数形状、必填、枚举 运行时副作用 版本化 Schema,执行前校验
MCP 发现工具/资源、标准传输 替代沙箱与密钥保管 每类系统一个 Server + 主机策略

生产落地:校验、权限、失败回退

把上述层接上之后,上线前至少要过四道关:

  • Schema 对抗测试:故意缺字段、多字段、错误枚举,确认宿主拒绝且模型能根据错误改参数。
  • 越权工具:清单里没有的工具名、过期 MCP Server、伪造 call_id 必须失败。
  • 副作用隔离:构建、签名、部署与对话进程分离;Agent 默认拿不到生产凭证。
  • 可观测性:每次 tool call 记录工具名、Schema 版本、耗时、成功/校验失败/权限失败。

OWASP 将过度授权与提示注入列为 LLM 应用核心风险,因此「模型说要调就调」不能作为策略。OWASP LLM Top 10 可作为审计清单锚点。

在云端 Mac 上跑 Agent 工具链

对 iOS / 跨平台团队,MCP 里经常会出现 xcodebuild、模拟器、证书相关工具。这些工具绑定 macOS 与 Apple 工具链,不适合塞进普通 Linux 函数沙箱。

务实切分:

  1. 对话与规划:任意云上的 GPT / Gemini / Claude。
  2. 仓库读写:VFS / MCP filesystem,路径白名单。
  3. 真实构建与真机:Zilmac 云端 Mac 上的受控 MCP Server 或 CI 任务,密钥留在构建机。

这样模型栈可以换,Schema 与 MCP 清单保持稳定,Apple 侧副作用始终落在可回收的云端 Mac 会话里,而不是开发者笔记本。

常见问题

Function Calling 和 MCP 是不是重复了?

不重复。Function Calling 是模型输出工具请求的方式;MCP 是主机发现并连接工具/资源的协议。落地时 MCP 的每个 tool 仍会映射成一次 Function Calling 声明。

必须三家模型都接吗?

不必。先选一家把契约与 MCP 跑稳,再用同一套 Schema 做第二家路由。为「评测而接三家」只会放大未校验的工具面。

JSON Schema 能不能只写在系统提示词里?

不能当作唯一控制。提示词可辅助模型填参,但拒绝非法参数必须发生在宿主校验器。否则注入或模型漂移会直接打到后端。

自建 Agent 怎样避免锁死某一家 API?

内部统一「工具名 + JSON Schema + 执行结果」结构,对 GPT / Gemini / Claude 只做适配层。MCP Server 对主机暴露同一清单,计费与故障切换放在网关。

模型可以换,构建机不能含糊

把 GPT、Gemini、Claude 接到同一套 Function Calling 与 MCP 契约之后,真正卡住 iOS 交付的仍是 Apple 工具链。Zilmac 云端 Mac 适合作为受控执行端:Agent 在 Schema 约束下发任务,签名与 xcodebuild 在隔离的 macOS 上完成。

无需自备实体 Mac,即可给 Agent 接上可审计的构建插槽。 — 查看云 Mac 方案

限时优惠

Zilmac

云端 Mac、远程开发与 Mac VPS,为 iOS 与跨平台团队补齐 Apple 工具链。

返回首页
限时优惠 点击查看套餐