JSON Schema → Tool Use 変換 (Claude / OpenAI / Gemini)
JSON Schema や手書きのパラメータ定義から、Anthropic Claude の tool_use、OpenAI の function calling、Google Gemini の function declaration の各形式を自動生成。フォーム UI で 0 から組み立てるか、既存スキーマを貼って 3 形式すべてに同時変換。
使い方: 各 SDK の tools 配列にこの JSON を入れる
📖 つまずきやすいポイント
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 の扱い、日付の書式は、スキーマだけでは完全には強制されません。ネストの深いオブジェクトや、oneOf / anyOf のような分岐を含むスキーマでは、精度がさらに落ちます。 |
受け取った引数は必ずアプリケーション側で検証してください — zod や pydantic のようなバリデータを通し、失敗したらエラーをツールの結果としてモデルに返すのが定石です。「date は YYYY-MM-DD 形式である必要があります。受け取った値: 2026/07/26」と返せば、モデルは訂正して呼び直します。あわせて、スキーマは浅く保ってください — ネストを 2 段までに抑え、複雑な分岐は複数のツールに分けるほうが、結果的に精度が出ます。 |
| ツールを増やすほど精度が落ちる | ツール定義はすべて毎回のリクエストの入力に含まれます。20 個も定義すれば、それだけで数千トークンが固定費として乗り、しかも似た説明が並ぶほどモデルの選択は不安定になります。get_user / fetch_user / load_user_data が同居していれば、人間でも選べません。 |
1 リクエストに渡すツールは、その場面で必要なものだけに絞ってください。会話の状態や画面ごとにツールセットを切り替えるのが実用的です。名前が似ているものは統合するか、名前で用途が一意に分かるように改名してください — search_users_by_email のように、何をどう探すかまで名前に入れると衝突しなくなります。トークン量は トークンカウンターで測れます。 |
3 社の形式は似ていますが、入れ子の位置が違います。Claude は input_schema にスキーマを直接置き、OpenAI は function.parameters の下に、Gemini は functionDeclarations[].parameters の下に置きます。加えて、Gemini は JSON Schema の一部のキーワードしかサポートしていません — $ref や additionalProperties のように、他社では通るものが落ちることがあります。移植したら必ず実際に 1 回呼び出して、引数が期待どおり届くか確かめてください。形式が受理されることと、意図どおり動くことは別です。
📖 使い方
-
1
フォームか JSON で入力「フォーム入力」で 0 から組み立てるか、「JSON Schema 貼付」で既存定義を変換
-
2
プロバイダ選択Anthropic / OpenAI / Gemini を切り替えて即比較
-
3
SDK にコピペ生成された JSON をそのまま tools[] に
❓ よくある質問
3 形式の違いは?
strict mode は?
複数ツール?
🐛 このツールで問題が発生しましたか?
完全無料・登録不要。再現手順だけでも結構です。届いたご報告は運営者に直接届き、修正の参考にします。
ご報告ありがとうございます!
運営者に届きました。改善の参考にさせていただきます。