跳到内容

JSON Schema → Tool Use 转换

从 JSON Schema 或手写的参数定义自动生成 Anthropic Claude 的 tool_use、OpenAI 的 function calling 和 Google Gemini 的 function declaration 格式。使用表单 UI 从零开始组建,或粘贴现有 Schema 以同时转换为所有 3 种格式。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式
完整 MCP 服务器: 🧬 MCP 服务器样板 →

            

使用:放入 SDK 的 tools[] 数组

📖 常见的坑

把 JSON Schema 或手写的参数定义,转换为 Claude 的 tools、OpenAI 的 function calling、Gemini 的 function declarations 各自的格式。处理全部在浏览器内完成。格式对上了,并不意味着模型就会正确调用该工具——决定它调不调用的不是 JSON 结构,而是 description 里写了什么

情形 会发生什么 怎么处理
模型始终不调用该工具 原因是 description 太短,或者只写了「做什么」。仅凭 "获取天气",模型无法判断何时应当调用。当存在功能相近的多个工具时,它无法区分,于是要么偏向其中一个,要么两个都不调用。参数上的 description 为空,也会造成同样的后果。 请在 description 中同时写明「何时使用」与「何时不使用」。例如「当用户询问某个城市的当前天气时使用;历史气象数据与天气预报不要使用本工具(那些请用 get_forecast)」,这种显式划出边界的写法最有效。每个参数也同样处理:不要只写 "date",而写 "日期,YYYY-MM-DD 格式。例:2026-07-26"
参数类型没有被遵守 即便写了 "type": "integer",也可能返回字符串 "3"。数字与字符串的界线、null 的处理、日期格式,仅靠 schema 无法被完全强制。嵌套很深的对象,以及含 oneOf / anyOf 分支的 schema,准确率还会进一步下降。 收到的参数请务必在应用侧校验——用 zod、pydantic 之类的校验器过一遍,校验失败时把错误作为工具结果返回给模型。返回「date 必须是 YYYY-MM-DD 格式;收到的是 2026/07/26」,模型就会自行纠正并重新调用。同时请让 schema 保持扁平:嵌套最多两层,复杂分支拆成多个工具——这比任何措辞上的打磨都更能提升准确率。
工具越多,准确率越低 所有工具定义都会包含在每一次请求的输入中。定义 20 个,仅此一项就要多出数千 token 的固定成本;更糟的是,描述越相似,模型的选择就越不稳定。当 get_userfetch_userload_user_data 并列时,连人都选不出来。 每次请求只传入该场景真正需要的工具。按会话状态或页面切换工具集是可行的做法。名称相近的,请合并,或改名到仅凭名称即可唯一确定用途——像 search_users_by_email 这样把「查什么、怎么查」都写进名字,就不会再冲突。token 用量可用 Token 计数器测量。

三家的格式相似,但schema 的嵌套位置不同:Claude 直接放在 input_schema 下,OpenAI 在 function.parameters 下,Gemini 在 functionDeclarations[].parameters 下。此外,Gemini 只支持 JSON Schema 的一部分关键字——$refadditionalProperties 这类在别家能通过的写法,可能会被丢弃。移植之后,请务必真实调用一次,确认参数如预期送达。「格式被接受」与「行为符合预期」是两件事。

📖 使用方法

  1. 1
    表单 / JSON
    表单或粘贴 JSON
  2. 2
    选择提供商
    Anthropic / OpenAI / Gemini
  3. 3
    粘贴到 SDK
    粘贴到 tools[]

❓ 常见问题

3 种区别?
input_schema / parameters / functionDeclarations
strict?
仅 OpenAI 有 strict
多工具?
一次一个,手动拼接
🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送