ツールスキーマ検証
ツール定義を貼り付けて、拒否される理由や誤って呼ばれる理由を突き止めます。
ツール定義は社内のシステムやエンドポイントを説明します。すべてブラウザー内で点検され、送信されません。
定義を一から作る
ツールスキーマ検証 について
ツール定義には二種類の問題が住んでいます。一つは構造上のもの。JSON Schema の型でない型、プロパティに無い required 名、items のない配列、strict モードが課す規則を欠いた strict。これらは拒否されますが、返るメッセージはたいてい項目名を告げても理由は告げません。もう一つの種類は完全に妥当なまま別の問題を起こします。ツールが誤ったタイミングで、あるいはもっともらしい出鱈目を引数に入れて呼ばれる。スキーマのどこにも意味が書かれていないからです。ここでは両方を点検し、各指摘をその出どころのパスとともに報告し、貼り付けられた形は何であれ受け付けます。単体のツール、配列、リクエストの断片、あるいはスキーマだけでも。
機能
- 単体・配列・tools 断片・スキーマ単体のいずれも受け付け
- 各指摘にその出どころのパスを付与
- 個々のプロパティも含めて不正な型を検出
- プロパティにない required 名を検出
- strict モードの規則を適用し、違反しているプロパティを名指し
- 誤ったキーの下にあるスキーマを指摘
- 配列内でのツール名の重複を検出
- 説明のないパラメーターと空の列挙に警告
ツールスキーマ検証 の使い方
- 手元にある形のまま定義を貼り付けます
- パス付きの指摘を読みます
- まずエラーを、次に説明文を直します
- 何も残らなくなるまで点検を繰り返します
例
入力
"required": ["email", "customer_id"]
出力
Error: “customer_id” is required but is not among the properties
対応するプロパティのない required 名は、そのまま拒否されます。
よくあるエラーとトラブルシューティング
- API がツールを拒否するのに項目名を教えてくれない。 — ここに貼ってください。指摘にはパスが付くので、問題のノードが名指しされ、探し回らずに済みます。
- スキーマのキーが違うと言われる。 — Messages API が読むのは input_schema です。他の流儀で書かれた定義は parameters を使いがちで、JSON として妥当なまま単に読まれません。
- 正しく見えるスキーマで strict が失敗する。 — strict には additionalProperties: false と、すべてのプロパティの required が要ります。両方を点検し、違反しているプロパティを名指しします。
- エラーではなく説明文の警告ばかり出る。 — それが二つ目の種類の問題です。ツールが受理されることは妨げませんが、誤った引数で呼ばれる原因になります。
よくある質問
- どんな形を貼れますか。
- ツールのオブジェクト、その配列、{"tools": [...]} の断片、あるいは入力スキーマ単体です。スキーマ単体は認識されて注記されます。ツールには名前と説明も要るからです。
- なぜ説明の欠落を警告するのですか。
- ツールが誤って呼ばれる最大の原因でありながら、決してエラーにならないからです。名前だけで説明のないパラメーターは、意味を名前から推測させることになります。
- 実際の引数と突き合わせて検証しますか。
- いいえ、定義そのものを点検します。特定の引数が検証を通るかは別の問いで、呼び出したときに API が答えます。
- $ref には対応していますか。
- 指摘の対象です。ツールスキーマでは参照が確実に解決されるとは限らず、それに頼った定義は書いた人が読んだのと違う挙動をしがちです。定義を展開して書けばこの問いは消えます。
- 複数のツールをまとめて点検できますか。
- はい、配列ごと貼ってください。集合内の名前の重複を検出します。ツールをまとめて見たときにしか現れない問題です。
関連ツール
AI・エージェントの他のツール
AI・エージェントのツールをすべて見る · すべてのツール