Anthropic Claude モデルのツール呼び出しスキーマにおけるリグレッション

Anthropic Claude モデルのツール呼び出しスキーマにおけるリグレッション

SOTA モデルはツールスキーマ遵守でリグレッションしている

Anthropic の新しい最先端(SOTA)モデル、特に Opus 4.8Sonnet 5 は、ネストされた配列内に存在しないフィールドを作り出すことで、形式が崩れたツール呼び出しを生成しやすくなっています。古いモデルは提供されたスキーマに従っていましたが、これらの新しいバージョンは頻繁にツール引数に「スロップ」‑ 作り出したキー‑ を追加し、主要なペイロードが正しくても外部ハーネスが呼び出しを拒否してしまいます。

この挙動は、モデルが一般的な推論能力を高めるにつれて、柔軟性が低下したり、ポストトレーニング段階で遭遇した特定の未文書化ツール形状に対してバイアスが強くなる可能性があることを示唆しています。

ツール呼び出し失敗のメカニズム

LLM のツール呼び出しはネイティブ関数ではなく、インバンドシグナリングを用いたテキストとして生成されます。モデルはシリアライズされた文字列(しばしば XML や JSON に似た形式)を生成し、クライアント API がそれを関数呼び出しとして解釈します。たとえばファイル編集ツールの場合、モデルは次のような JSON 配列を出力することが期待されます:

{
 "path": "some/file.py",
 "edits": [
 {
 "oldText": "text to replace",
 "newText": "replacement text"
 }
 ]
}

Opus 4.8 と Sonnet 5 で失敗するケースでは、モデルは正しい oldTextnewText を生成しますが、requireUniquetypeidkindmatchCasein_file といった架空のキーを付加します。これらの幻覚は、生成の最もエントロピーが高いポイント、すなわち長いエスケープ文字列を閉じた直後に、オブジェクトを閉じる(})か別のフィールドを追加する(, "...")かを決める瞬間に頻繁に起こります。

根本原因: 「スロップハーネス」仮説

このリグレッションは、寛容な環境(クローズドソースの Claude Code ハーネス)で実施された強化学習(RL)の副産物である可能性が高いです。

寛容なクライアントの役割

Claude Code の内部クライアントは非常に回復力が高いように設計されています。以下の戦略で不正な出力を処理します:

  • パラメータエイリアシング: 同一パラメータに対して複数の名前(例: old_strold_string)を受け入れます。
  • サイレントフィルタリング: スキーマに存在しない予期せぬキーを自動的に除去します。
  • Unicode 修復: 壊れた \uXXXX シーケンスや単独サロゲートを修正します。
  • リトライループ: リークしたマークアップを捕捉し、モデルに再試行を促すステートマシンを使用します。

RL によるバイアス

ハーネスがエラーを黙って修正する環境で RL によりモデルが訓練されると、ツール呼び出しがスキーマに完全に準拠していなくてもタスク完了に対して報酬が与えられます。結果として、エイリアスを作り出したり余計なフィールドを追加したりしないようにする勾配が働かず、時間とともに Claude Code が使用する特定のフラットスキーマへの強い事前分布が形成され、Pi ハーネスで使用されるような代替のネストスキーマが「分布外」に見えるようになります。

緩和策

スキーマリグレッションを軽減するための技術的アプローチはいくつかあります:

1. Strict モードと制約付きデコーディング

Anthropic API の strict モードを有効にすると、これらの失敗が解消されるようです。これはサーバ側の推論スタックが 文法制約付きデコーディング を使用し、JSON スキーマに違反するトークンをマスクするためと考えられます。ただし、ツール定義に対する複雑性制限があり、API リクエストが失敗することがあります。

2. エラー駆動型修正

一部の開発者は、モデルに対して詳細なエラーメッセージを返すことで成功を収めています。ツール呼び出しが失敗した正確な理由と構文修正方法を説明すれば、エージェントは次のターンで通常そのミスを修正し、コンテキストウィンドウの残りの間は正しく動作し続けます。

3. クライアント側「自己修復」

Claude Code のアプローチに似て、ユーザーは編集ツールを拡張し、作り出されたフィールドを黙って無視したり、エイリアスを正しいスキーマにマッピングしたりするパッチを組み込んで、往復リトライ回数を減らすことができます。

AI エージェント開発への示唆

この現象は、ツールスキーマが中立的な抽象契約ではなく、モデルのポストトレーニング分布に影響されることを示しています。

  • ハーネス依存性: エージェントの「知性」はますますモデルとハーネスの合計となります。プロプライエタリで寛容なエコロジーで訓練されたモデルは、厳格でオープンソースな環境では苦戦する可能性があります。
  • クローズドハーネスの堀: クローズドソースのハーネスと顧客プロンプト上の RL ファインチューニングが技術的な堀を作ります。最先端モデルが自社のプロプライエタリハーネスでしか最高性能を発揮できない場合、サードパーティ開発者はそれらの癖を模倣するか、品質トレードオフを伴う厳格な制約付きデコーディングに依存せざるを得ません。

SUMMARY:

新しい Claude モデル(Opus 4.8 と Sonnet 5 を含む)は、ツール呼び出しで存在しないフィールドを作り出すリグレッションを示しています。これは、Claude Code のような寛容なプロプライエタリハーネス上での強化学習が原因である可能性が高いです。

TITLE:

Anthropic Claude モデルのツール呼び出しスキーマにおけるリグレッション

Sources