AIツール呼び出しの契約テスト
· 7分で読める
モデルが引数を捏造したり必須フィールドを飛ばしたりするとき、プロンプトの単体テストでは足りません。契約テストはツールスキーマをモデルとシステム間の強制境界にします。
ツールスキーマをプロダクトAPIとして扱う
ツール呼び出しは自然言語を出すため柔らかく見えますが、副作用は硬いです:支払い、チケット、メール、DB書き込み。ツール契約がプロンプト段落だけなら、モデルアップグレードはすべて静かな破壊的変更になります。
必須フィールド、列挙、冪等キー、明示的な拒否リスト付きの版付きスキーマとしてツールを公開します。契約テストは、ユーザーセッションが不一致の代償を払う前に、モデルアダプタとツール実行器がその形で合意していることを断言します。
詩ではなく境界をテストする
ゴールデンフィクスチャには有効な呼び出し、ニアミスの不正呼び出し、追加フィールドを密輸したりネストオブジェクトを混乱させたりする敵対ペイロードを含めます。記録した本番失敗をスイートに再生し、次のプロバイダバンプが同じバグクラスを再導入できないようにします。
モデル出力契約とツール実行器契約を分けます。前者はパースと検証が危険な形を拒否することを、後者は有効な版付きペイロードで実行器が正しく動くことを検証します。混ぜるとモデルかバックエンドのどちらの回帰か隠れます。
- ツールスキーマ版を固定し、未宣言の破壊的変更でCIを落とす
- 必須フィールド、型強制ルール、未知フィールド拒否をアサートする
- マルチツール系列と部分失敗リカバリ経路を含める
- 新しいモデルルートを凍結契約フィクスチャに対してシャドウ実行する
リリースゲートでドリフトを見える化する
プロバイダSDK、JSONモードの癖、tool-choiceポリシーはドリフトします。PR CIと同じフィクスチャでステージングを打つ定期契約スイートを追加し、プロダクト指標がまだ良く見えても合格率が落ちたらアラートします。
契約合格率、失敗が多いツール、モデルルート別の引数形状ヒストグラムを追跡します。緑のダッシュボードと赤い契約スイートは、本当のツール圧下でのみ見える回帰を出荷する経路です。
パーサーではなくプロダクトとしてリカバーする
契約失敗時は不可逆ツールはfail-closed、読み取り専用支援はfail-softを好みます。不透明な500ではなく、欠落フィールド名や許可列挙など構造化された修復ヒントをモデルに渡し、リトライループを促さないようにします。
契約テストはツール呼び出しを退屈に保ちます:スキーマは意図して進化し、モデルはAPIの著者ではなく客人です。
2026年9月11日、Berktug Berke Ates が公開。