ツール/関数定義リンター
OpenAI、Anthropic、Google、Cohere形式のAI Function Calling定義を検証・リントします
上のエディタにツール/関数のJSON定義を貼り付けて、OpenAI、Anthropic、Google、Cohereの仕様に対して検証します。
OpenAI Function Calling、Anthropic Tool Use、Google Gemini Function Declarations、CohereのTool Useに対応しています。
AIツール定義リンターとは?
AIツール定義リンターは、LLM APIの関数やツールを定義するJSON構造を検証するツールです。OpenAI、Anthropic Claude、Google Gemini、CohereなどのプロバイダーでFunction Calling(ツール使用とも呼ばれます)を使用する際、関数を記述する正しく構造化されたJSON定義 — 名前、説明、パラメータースキーマ — を提供する必要があります。
これらの定義における小さなエラー — フィールド名のスペルミス、無効な型、必須プロパティの欠落 — でさえ、API呼び出しがサイレントに失敗したり、予期しない動作を引き起こしたりする可能性があります。ツール定義リンターはデプロイ前にこれらのエラーをキャッチし、デバッグ時間の節約と本番環境の問題防止に役立ちます。
この無料リンターは4つの主要プロバイダー(OpenAI、Anthropic、Google、Cohere)すべてに対して定義を同時に検証し、エラーの正確な場所を示し、各問題を修正するための具体的な提案を提供します。Mistral AI、xAI(Grok)、DeepSeekはOpenAI互換フォーマットを使用するため、OpenAIの検証に合格すればこれらもカバーされます。すべてブラウザ内で実行され、データがサーバーに送信されることはありません。
このリンターの使い方
ツール定義リンターの使い方はシンプルです — 貼り付けるだけで検証できます:
- JSON定義を貼り付け — コードベースからツール/関数定義をコピーしてエディタに貼り付けます。リンターは単一のツールオブジェクト、ツールの配列、`tools`配列を含むラップされたオブジェクトを受け付けます。
- リアルタイムの結果を確認 — リンターは入力に応じて自動的に検証します(短いデバウンス付き)。ボタンをクリックする必要はありません。検出された形式、プロバイダー互換性のステータス、問題が即座に表示されます。
- 互換性を確認 — 4つのプロバイダーカードが定義がOpenAI、Anthropic、Google、Cohereと互換性があるかを表示します。緑は互換性あり、赤は修正が必要な問題があることを意味します。
- 問題を修正 — 各問題は影響するフィールドパス、明確なエラーメッセージ、修正方法の提案を表示します。問題は重要度別に分類されます:エラー(必ず修正)、警告(修正推奨)、情報(あれば良い)。
- 修正済みJSONをコピー — 確認後、「修正済みJSONをコピー」ボタンで基本的な自動修正が適用されたクリーンでフォーマットされたバージョンを取得できます。
AI Function Calling形式の理解
各AIプロバイダーには呼び出し可能な関数を定義するための独自の形式がありますが、基盤となるコンセプトは共通しています:名前、説明、パラメーター用のJSONスキーマです。
OpenAI Function Calling
OpenAIはツール定義を`{ type: "function", function: { ... } }`構造でラップします。内部オブジェクトには`name`、`description`、`parameters`(JSONスキーマオブジェクト)が含まれます。OpenAIはStructured Outputsを有効にする`strict`モードもサポートしています — trueに設定すると、モデルは必ず正確なスキーマに従いますが、`additionalProperties: false`が必要です。
Anthropic Tool Use
Anthropicはラッパーなしのフラットな構造を使用します。各ツールは`name`、`description`、`input_schema` — OpenAIの`parameters`とは異なるフィールド名に注意 — で定義されます。Anthropicは最適なパフォーマンスのために説明を1024文字未満に保つことを推奨しています。`cache_control`フィールドはプロンプトキャッシングにオプションで使用できます。
Google Gemini Function Declarations
Google GeminiはAnthropicに似たフラット構造を使用しますが、OpenAIと同様に`parameters`を使用します。重要な違いは、GoogleのJSONスキーマサポートがより限定的であることです — スキーマ参照の`$ref`をサポートせず、`oneOf`、`anyOf`、`allOf`のような合成キーワードのサポートも限定的です。
CohereのTool Use
Cohereはツール定義に`parameter_definitions`フォーマットを使用し、各パラメーターに`description`、`type`、`required`を直接指定します。JSONスキーマベースのアプローチとは異なる独自の構造です。CohereはSOC 2およびHIPAA準拠を提供しており、エンタープライズ環境でのツール使用に適しています。
OpenAI互換プロバイダー
Mistral AI、xAI(Grok)、DeepSeekはOpenAI互換のFunction Callingフォーマットを採用しています。これらのプロバイダーでは、OpenAIと同じ`{ type: "function", function: { ... } }`ラッパー構造と`parameters`フィールドを使用します。そのため、OpenAIの検証に合格した定義はこれらのプロバイダーでもそのまま動作します。
ツール定義における一般的なエラー
よく見られるパターンに基づいて、AIツール定義で最も頻繁に発生するミスを紹介します:
- スキーマフィールド名の間違い — プロバイダーが「input_schema」(Anthropic)を期待している場所で「parameters」を使用する、またはその逆。これはクロスプロバイダー互換性の問題の第1位です。
- ラッパー構造の欠落 — OpenAI向けの`{ type: "function", function: { ... } }`ラッパーの忘れ、またはAnthropic/Google向けにラッパーを含めてしまうこと。
- 無効な関数名 — スペース、特殊文字、64文字を超える名前の使用。すべてのプロバイダーは英数字、アンダースコア、ハイフンのみを要求します。
- requiredにあるフィールドがpropertiesにない — 「required」配列にリストされたフィールドが「properties」オブジェクトに存在しない。
- スキーマオブジェクトの「type」欠落 — すべてのJSONスキーマオブジェクトには「type」フィールドが必要です。ルートスキーマは「type」: 「object」であるべきです。
- プロパティの説明の欠落 — 技術的には必ずしも必須ではありませんが、プロパティの説明はモデルの理解とツール呼び出しの精度を大幅に向上させます。
- Strictモードの違反 — OpenAIのstrictモードを使用する際、「additionalProperties」: falseの設定やすべてのプロパティをrequiredとしてリストすることを忘れること。
よくある質問
ツール定義リンターはどの形式をサポートしていますか?
このリンターは4つの主要AIプロバイダーに対してツール/関数定義を検証します:OpenAI Function Calling形式({ type: "function", function: {...} }ラッパー付き)、Anthropic Tool Use形式(input_schema使用)、Google Gemini Function Declarations(parameters使用)、Cohere Tool Use形式(parameter_definitions使用)。Mistral AI、xAI(Grok)、DeepSeekなどのOpenAI互換プロバイダーもOpenAIの検証でカバーされます。貼り付けた形式を自動検出し、すべてのプロバイダーとの互換性をチェックします。
OpenAI、Anthropic、GoogleのFunction Calling形式の違いは何ですか?
主な違いは構造的なものです。OpenAIはツール定義を{ type: "function", function: {...} }でラップし、JSONスキーマに「parameters」を使用します。Anthropicは「parameters」の代わりに「input_schema」を持つフラット構造を使用します。Googleも「parameters」を持つフラット構造を使用しますが、JSONスキーマのサポートがより限定的です — $refをサポートせず、oneOf、anyOf、allOfのサポートも限定的です。Cohereは独自の「parameter_definitions」フォーマットを使用し、各パラメーターにdescription、type、requiredを直接指定します。Mistral AI、xAI、DeepSeekなどのOpenAI互換プロバイダーはOpenAIと同じフォーマットを使用します。すべてのプロバイダーがname、description、パラメーター定義を必要とします。
リンターはすべてのエラーをキャッチしますか?
リンターは最も一般的な構造的エラーをキャッチします:必須フィールドの欠落、無効な名前(アンダースコア/ハイフン付きの1〜64英数字でなければならない)、不正なJSONスキーマ(無効な型、propertiesに存在しないrequiredフィールド、配列のitems欠落)、形式固有の問題(間違ったラッパー構造、間違ったスキーマフィールド名)。ビジネスロジックや関数の説明がモデルの理解に効果的かどうかの検証は行いません。
ネストされたパラメーターを持つツール定義も検証できますか?
はい、リンターは最大5レベルの深さのネストされたJSONスキーマ構造を検証します。各ネストされたオブジェクトの適切な型定義、enum配列の検証、配列のitemsスキーマ、各ネストレベルでrequiredフィールドが実際に存在するプロパティを参照していることを確認します。
「修正済みJSONをコピー」機能は安全に使用できますか?
修正済みJSONは安全で非破壊的な修正のみを適用します:JSONの整形、必要に応じた「type」: 「object」の追加、存在しないプロパティを参照するrequiredエントリの削除。関数名、説明、プロパティ定義は変更されません。本番環境で使用する前に、修正された出力を必ず確認してください。
関連ツール
AI APIの構築に役立つその他のツールもご覧ください:
- AI向けJSONスキーマジェネレーター — Function Callingに最適化されたJSONスキーマをサンプルデータから生成
- OpenAPIからAI Function Callingへの変換 — Swagger/OpenAPI仕様をツール定義に変換
- 会話メッセージビルダー — チャット補完メッセージ配列をビジュアルに構築・テスト