青蛙小白

OpenAI API Tools(OpenAI API 工具)

OpenAI API Tools(OpenAI API 工具) 是 OpenAI API 中把模型连接到外部能力的一组接口:模型可以搜索网页、检索文件、按需加载工具定义、请求应用执行自定义函数,或通过 Model Context Protocol(模型上下文协议)访问第三方服务。

这个词条是本库的综述视角,用来归纳 OpenAI 官方 Using tools 文档里的平台能力。它不是单个工具或单个协议,而是 Responses API(响应 API)OpenAI Agents SDK 共同暴露的工具层。

API 层的统一入口

在 Responses API 中,开发者通常通过 tools 参数启用工具能力。每个工具有自己的配置结构,但模型端语义一致:模型根据当前输入判断是否需要调用工具;开发者也可以用 tool_choice 明确控制或引导工具选择。

OpenAI 官方文档把可用工具分成几类:

层级能力作用工程含义
主工具Web search在生成回答时引入互联网信息适合需要时效性和引用的任务
主工具File search从上传文件或向量存储中检索上下文适合企业知识库、文档问答、RAG
主工具Tool search运行时按需加载延迟定义的工具降低大工具集对上下文和选择准确率的压力
主工具Function Calling(函数调用)调用应用自定义函数让模型请求业务系统执行真实查询或动作
主工具Programmatic Tool Calling(程序化工具调用)让模型生成 JavaScript 编排可用工具在托管运行时过滤和聚合中间结果,减少上下文与模型往返
主工具Remote MCP连接远程 MCP 服务器把第三方工具服务器接入模型工具层
主工具OpenAI API Connectors通过内置 connector 访问常见 SaaS 服务省去自建 remote MCP server,但仍要处理 OAuth、审批和数据边界
主工具Shell / Computer use / Image generation 等托管工具由平台或运行时提供执行能力需要更明确的权限、沙箱和审计边界
Shell 环境能力Skills把版本化 SKILL.md 文件束挂载到 Shell 环境复用团队流程、脚本、模板和资产

其中 tool_search 只由 gpt-5.4 及后续模型支持。它解决的不是“模型会不会调用工具”,而是“工具定义什么时候进入上下文”:常用工具可以直接暴露,低频或大量工具可以延迟加载。

与 Function Calling 的关系

Function Calling(函数调用) 是 OpenAI 工具层里最基础的自定义扩展机制。开发者定义函数名、说明、JSON Schema 和 strict mode;模型返回结构化调用请求;应用执行真实函数后,再把工具结果回填给模型。

OpenAI API Tools 的范围比 Function Calling 更大:Web search、File search、Remote MCP、Shell、Computer use 等都属于工具层,但不都需要开发者自己写函数执行逻辑。可以把 Function Calling 理解为“应用自定义能力”的工具形态,把托管工具和 MCP 理解为“平台或外部服务提供能力”的工具形态。

Programmatic Tool Calling(程序化工具调用)位于直接工具调用之上:它不增加外部能力,而是让模型在隔离 V8 runtime 中用 JavaScript 对已授权工具做并行、循环和结果缩减。只有数据流可预测的阶段应交给它;写入、审批、语义判断和最终核验仍应走直接调用,保留清晰的授权和审计边界。

与 MCP 的关系

Remote MCP 让模型通过远程 Model Context Protocol(模型上下文协议)服务器获得新能力。在 Responses API 请求中,它表现为 type: "mcp" 的工具配置,包含服务器标签、说明、URL 和审批策略等字段。

这说明 MCP 与 OpenAI 工具调用不是替代关系,而是上下两层的组合:

  • MCP 负责外部工具服务器如何发现、描述和暴露能力
  • Responses API 工具层负责把这些能力呈现给模型,让模型在当前 turn 中选择是否调用
  • 应用或平台仍要处理审批、权限、日志和失败恢复

OpenAI 的 MCP 工具支持两种接入形态:一种是用 server_url 指向 remote MCP server;另一种是用 connector_id 调用 OpenAI API Connectors这类平台内置连接器。两者在 response output 中都表现为 mcp_list_toolsmcp_call 等结构,差别主要在能力来源、授权和信任边界。

工程上还有三个容易被忽略的点:

  • Responses API 会先列举 MCP server 暴露的工具,成功后返回 mcp_list_tools;只要这个 item 留在对话上下文里,后续 turn 不必重复列举工具,可降低延迟
  • allowed_tools 可以只导入一部分工具,defer_loading: true 可以配合 tool search 延迟加载大 MCP server 的函数定义,减少上下文和选择成本
  • authorization 常用于传 OAuth access token;OpenAI 不会在 Response 对象中保存或回显这个字段值,因此每次创建 response 都要重新传入

因此,MCP 的安全问题不会因为接入 OpenAI API 而消失。远程服务器暴露了什么工具、工具描述是否可信、工具调用是否需要人工审批,仍然是 Agent Guardrails(Agent 护栏)Agent Sandbox(Agent 沙箱) 需要覆盖的边界。

Agents SDK 中的工具语义

OpenAI Agents SDK 中,工具语义不变,但接线位置从单次 Responses API 请求移动到 Agent 定义和工作流设计里。常见做法有三种:

  • 把托管工具、函数工具或 MCP 工具直接挂到某个 specialist agent 上
  • 把一个 specialist agent 暴露成另一个 manager agent 可调用的工具
  • 把 shell、apply patch、computer use 等执行 harness 保留在运行时,由 SDK 负责建模工具决策

这对应 Harness Engineering(驾驭工程)中的一条关键分工:SDK 可以描述“谁能调用什么工具”,但真实执行、权限审批、日志审计和回滚策略仍然属于应用运行时。

Skills 作为 Shell 环境能力

Skills 在 OpenAI API 工具层里处于 prompt 和工具之间,但它不是和 Web search、Function Calling、MCP 并列的独立 tools[].type。它必须依附于 Responses API 的 Shell 工具:开发者把 Skill bundle 挂到 Shell 的 environment.skills 下,模型在 Shell 环境中按需读取 SKILL.md、运行脚本、使用模板和资产。Shell 可由 OpenAI 以托管容器方式运行,也可由开发者自管本地 runtime;这两种模式的 Skill 挂载方式不同。

Cookbook 把 Skills 称为 prompts、tools、system prompts 之间的“middle layer”:prompt 定义常驻行为,工具提供原子能力和副作用,Skill 封装可复用流程、脚本和资产。

这使 Skills 特别适合稳定但不该每轮常驻的知识:公司报告格式、数据清洗脚本、发布检查清单、复杂文件转换流程。它和 Tool search 解决的问题相似,都是减少低频能力对上下文的干扰;差别在于 Tool search 延迟加载工具定义,Skills 延迟加载任务过程和支持文件。

最小使用流程:创建一个目录,里面放 SKILL.md 和需要的脚本/资产;OpenAI 托管容器 Shell 用 POST /v1/skills 上传目录或 zip,然后在 Responses API 的 Shell 工具里写 environment.skills: [{"type": "skill_reference", "skill_id": "...", "version": 2}];local shell 则在 environment.skills 里提供本地 namedescriptionpath

使用时要注意三个边界:

  • Skill 的 description 是模型是否加载它的路由信号,要写清楚触发场景和不适用场景。
  • Skill 正文作为用户 prompt 输入进入上下文,不等同于 system prompt;需要确定性触发时,应在任务输入里明确要求使用某个 Skill。
  • 生产环境应固定 Skill 版本,并把写入、联网和高影响动作交给 Agent Guardrails(Agent 护栏)处理。

设计取舍

OpenAI API Tools 的核心取舍不是“工具越多越好”。每个工具定义都会消耗上下文,也会增加模型选择错误、权限误用和 prompt injection 的攻击面。

实践上更稳的做法是:

  • 常用、高置信、低风险工具直接暴露给模型
  • 大量低频工具用 tool search 延迟加载
  • 高风险动作通过 tool_choice、审批策略和应用侧权限控制收窄
  • 工具描述、参数 schema 和错误返回按 Agent-Computer Interface(智能体计算机接口) 来设计
  • 对工具调用轨迹做 trace,和 Evals(评估)一起形成回归数据

换句话说,OpenAI API Tools 把模型“能做事”的入口平台化了;系统是否可靠,仍取决于工具接口、上下文管理、执行环境和治理策略是否配套。

相关概念

参考来源
  1. 1. https://developers.openai.com/api/docs/guides/tools
  2. 2. https://developers.openai.com/api/docs/guides/tools-connectors-mcp
  3. 3. https://developers.openai.com/api/docs/guides/tools-shell
  4. 4. https://developers.openai.com/api/docs/guides/tools-skills
  5. 5. https://developers.openai.com/cookbook/examples/skills_in_api
评论