ツール選択におけるメタデータの役割
ChatGPT と Codex は、開発者が提供するメタデータをもとに、いつツールを呼び出すかを判断します。ツールの名前、説明、パラメーターの説明を明確にすると、関連するプロンプトでの再現率が上がり、意図しない呼び出しも減ります。製品紹介の文面と同じように、メタデータもテストと分析を重ねながら改善します。
評価用プロンプトセットの準備
メタデータを調整する前に、次の分類でラベルを付けたデータセットを用意します。
- 直接的なプロンプト:ユーザーが製品名やデータソース名を明示するもの
- 間接的なプロンプト:ユーザーがツール名を挙げずに、得たい結果を説明するもの
- 対象外のプロンプト:組み込みツールや他のツールで対応すべきリクエスト
各プロンプトについて、期待する動作(自分のツールを呼び出す、何もしない、別の手段を使う)を記録します。このセットは回帰テストでも使用します。
モデルの判断に役立つメタデータの書き方
ツールごとに、次の項目を設定します。
- 名前:対象領域と操作を組み合わせます(
calendar.create_event)。 - 説明:冒頭に「~する場合に使用します」と用途を示し、「リマインダーには使用しないでください」のように、使用してはいけない場面も明記します。
- パラメーターの説明:各引数の意味を説明し、入力例を示します。入力に制約がある場合は、許容される値を使います。
- 読み取り専用のヒント:情報の取得や計算のみを行い、データの作成、更新、削除、会話外への送信を一切行わないツールには、
readOnlyHint: trueを指定します。 - 破壊的操作のヒント:ユーザーデータを削除も上書きもしないツールには、
destructiveHint: falseを指定します。 - 外部アクセスのヒント:公開インターネットにアクセスするツールや、アクセス先が特定の外部リソースに限定されないツールには、
openWorldHint: trueを指定します。ウェブ検索のような読み取り専用ツールも対象です。アクセス範囲が特定の非公開アカウントやワークスペースに限られる場合は、サービスが外部でホストされていてもfalseを指定します。
カスタム MCP サーバーの評価
- ChatGPT でカスタム MCP サーバーを接続し、作成されたプラグインをインストールします。
- 評価用セットの各プロンプトを実行し、選択されたツール、渡された引数、コンポーネントが表示されたかどうかを記録します。
- 各プロンプトについて、適合率(正しいツールが実行されたか)と再現率(実行すべきときにツールが実行されたか)を確認します。
モデルが誤ったツールを選んだ場合は、想定する利用場面が明確に伝わるように説明を見直すか、ツールの用途を絞ります。
段階的な改善
- どの変更が改善につながったかを判断できるように、メタデータは一度に 1 項目ずつ変更します。
- 変更内容を日時、テスト結果とともに記録します。
- デプロイ前に曖昧な表現を見つけられるよう、差分をレビュー担当者と共有します。
変更するたびに評価を繰り返します。再現率のわずかな向上を追求する前に、対象外のプロンプトで誤った呼び出しを減らし、高い適合率を目指します。
本番環境でのモニタリング
MCP サーバーの運用開始後は、次の作業を行います。
- ツール呼び出しの分析結果を毎週確認します。「誤ったツールが選ばれた」と確認された件数が急増した場合は、多くの場合、メタデータが実際の利用状況に合わなくなった兆候です。
- ユーザーのフィードバックを記録し、よくある誤解を解消できるように説明を更新します。
- プロンプトを定期的に再実行する予定を組みます。特に、ツールを追加した後や構造化フィールドを変更した後は、再実行が重要です。
メタデータは継続的に見直します。言葉を吟味し、意図どおりに動作するかを丁寧に評価するほど、モデルは適切なツールを見つけて呼び出しやすくなります。