小型モデルは、独自のルールを定めることで、大型モデルに勝つことができるのでしょうか?
Google DeepMind
2026年3月5日
言語モデル(LLM)は、プログラミングや数学において驚くほど優れた能力を発揮しますが、ゲームエージェントとして機能する場合、しばしば不正な手を犯します。最近のKaggleのチェスコンペティションでは、Gemini 2.5 Flashの敗北の78%は、戦略の悪さではなく、ルール違反が原因でした。通常、人々は「ハーネス」と呼ばれる、手を検証するラッパーコードを手作業で記述します。AutoHarnessは、Gemini 2.5 Flashが、わずかな回数の反復的なコード改善ラウンドを使用して、自身のハーネスを自動的に記述できることを示しています。こうして得られたハーネスは、145のTextArenaゲームにおいてすべての不正な手を防ぎ、より小型のFlashモデルが、より大型のGemini 2.5 Proよりも優れたパフォーマンスを発揮しつつ、よりコスト効率の高い動作を実現します。
AutoHarnessは、全145のTextArenaゲーム(1人用・2人用の両方)において、合法手率100%を達成しました。各ゲームにつき1,000回のテストロールアウトで検証済みです。
Gemini 2.5 Flash + Harness が、はるかに大型の Gemini 2.5 Pro に対して、16試合中9勝(2人対戦ゲーム)(全体勝率 56.3% vs. Pro の 38.2%)。
Harness-as-Policyは、テスト時にLLMを使用せず、純粋なPythonポリシーを生成します。16種類の1人用ゲームで平均報酬0.870を達成し、ほぼゼロの計算コストでGPT-5.2-High(0.844)を上回っています。
LLMは、プログラミングや数学の問題解決において目覚ましい能力を示しています。しかし、エージェントとしての計画立案や推論の性能は脆弱な場合があります。最近のKaggle GameArenaチェス競技において、Gemini 2.5 Flashの敗北の78%は悪い戦略によるものではなく、単純な不正な手—チェスのルールで厳しく禁止されている手—によるものでした。
従来の解決策としては、無効な手をフィルタリングするための「ハーネス」コードを手書きする方法や、ゲームの軌跡でモデルをファインチューニングする方法などがあります。しかし、手動作成のハーネスは脆弱で手間がかかります。新しいゲームごとに新たな作業が必要になるからです。また、大規模モデルのファインチューニングは費用がかかり、他のタスクの性能を低下させる可能性があります。AutoHarnessは異なるアプローチを採用します:LLM自身のコード生成能力を活用して、ハーネスを自動的に作成・改善します。
エージェントは、LLMと、モデルとタスクの間の「接着剤」として機能するハーネスの組み合わせです。AutoHarnessでは、LLMが自身のハーネスをコーディングすることでエージェントを完成させます。 ハーネスには2つの主要な機能があります。propose_action(obs)は候補となる手を生成し、is_legal_action(obs, action)はその手の合法性を検証します。これにより、モデルはリジェクションサンプラーとして機能し、合法な手が見つかるまで候補を提案し続けます。
def propose_action(obs):
# Returns the agent's next move
...
def is_legal_action(obs, action):
# Returns True if the action is legal
...
propose_action(obs)は提案分布として機能し、候補となる手を生成します。is_legal_action(obs, action)は受け入れ基準として機能し、手がゲームのルールを満たしているかどうかを確認します。手が拒否された場合、LLMに再プロンプトを送り、合法な手が見つかるまで候補を提案させます。AutoHarnessは、ハーネス生成を、Thompsonサンプリングによって制御されるプログラム空間上の探索問題として定式化します。LLMは、環境実行からのフィードバックに基づいてコードの改良を提案する変異演算子として機能します。ツリー探索は、探索(異なるロジック構造を試す)と活用(部分的に動作するハーネスを改良する)のバランスをとります。
AutoHarnessは、複数のコード仮説をツリー構造で保持し、Thompson samplingを用いて、次にどのノードを改善するかを選択します。各ノードのヒューリスティック値は、そのコードバージョンが達成した平均的な合法的な移動の精度です。コードにバグがある場合(is_legal_action()がTrueを返すにもかかわらず、実際にはその移動が合法でない場合)、propose_action()とis_legal_action()の両方が改善されます。一方、is_legal_action()がFalseを返す場合(合法でない移動を正しく検出した場合)、propose_action()のみが修正されます。
propose と is_legal を分離するのか?propose_action(obs) — 生成: 候補となる手を生成します。これは、合法的な盤面をすべて列挙するような単純なものから、ヒューリスティックなポリシーのような複雑なものまで様々です。is_legal_action(obs, action) — 検証: 手がゲームのルールで許可されている場合にのみ True を返します。is_legal_action が実際には不正な手に対して True を返す場合(誤検知)、チェッカーはルールを知らないため、両方の関数が間違っている可能性が高いため、両方を修正します。is_legal_action が正しく False を返す場合、不正な手を生成したのはプロポージャーのみであるため、propose_action のみを修正します。
AutoHarnessは、軽量なアクションフィルタリングから完全なコードのみのポリシーまで、3つの動作モードをサポートしています。
| モード | テスト時にLLMを使用? | ハーネスの役割 |
|---|---|---|
| アクションフィルター | はい — 許可されたセットから選択 | 許可された動作のみを列挙 |
| アクションバリファイア | はい — 提案し、再試行 | 提案された各動作を検証 |
| ポリシー | いいえ | 直接、アクションを出力 |
propose_action()は、合法な手のセットを生成します。LLMはその後、連鎖思考推論を用いて最適な手をランク付けして選択します。
LLMが手を提案します。is_legal_action()がその手の合法性を検証します。無効な場合、LLMは「不正な手」という警告メッセージとともに再プロンプトされます。これが本論文で評価する主要なアプローチです。
最も極端なケースでは、コードが直接的に次のアクションを選択します。テスト時にLLMへの呼び出しは不要です。純粋なPythonで、推論コストがほぼゼロで、最も高い平均パフォーマンスを実現します。
学習では、1イテレーションあたり10個の並列環境を使用し、最大1,000ステップ実行します。不正な手が発生した場合またはコード実行が失敗した場合、ロールアウトを終了します。Criticは最大5回分の失敗ステップをまとめてRefinerに渡し、改善されたコードを生成します。Thompsonサンプリングにおけるヒューリスティックの重みは1.0に設定されています。学習は、合法手の成功率が1.0に達するか、タイムアウトした場合に終了します。すべての学習にGemini-2.5-Flashを使用しています。
平均して、学習は14.5回のツリー探索イテレーションで終了します。32ゲームのうち19ゲームは10回未満のイテレーションで終了します。最も多くのLLM呼び出しを必要とするゲームは、GermanWhist-v0(43ステップ)、Cryptarithm-v0(45ステップ)、Chess-v0(64ステップ)、Othello-v0(62ステップ)です。AutoHarnessは全145ゲームで合法手成功率100%を達成しており、付録の表1に示されています。
Breakthrough-v0-small`(簡略化されたバリアント)は、136ステップを必要とした。これは、フルバージョンのチェスよりも多い。 "Small"は、ルールが単純であることを意味するわけではない。このバリアントの変更されたキャプチャーメカニズムによって、予期せぬ特殊なケースが発生した。評価は、TextArenaの16種類の1人プレイ(1P)ゲームと16種類の2人プレイ(2P)ゲームに焦点を当てています。比較対象となるエージェントは、Gemini-2.5-Flash、Gemini-2.5-Pro、およびGemini-2.5-Flash+Harness(我々の手法)です。すべての実験で、同じ最適化されたプロンプトが使用されます。1Pゲームについては、20試合を実行し、平均報酬を評価指標として使用します。2Pゲームについては、40試合を実行し(各プレイヤーの試合数を均等に)、勝率/引き分け率/敗北率を評価指標として使用します。
AutoHarnessにより、小型のGemini-2.5-Flashがより大型のGemini-2.5-Proに対して16試合中9勝(全体勝率56.3% vs. Proの38.2%)を達成できるようになりました。ハーネスなしのGemini-2.5-Flashに対しては、勝率が64.8%(16試合中12勝)に上昇します。
本手法は16ゲーム中8ゲームでGemini-2.5-Proを上回り、5ゲームで同値でした。平均報酬はAutoHarness 0.745、Gemini-2.5-Pro 0.707、Gemini-2.5-Flash 0.673でした。特にCryptarithm-v0、RushHour-v0、PegJump-v0、FifteenPuzzle-v0で顕著な改善が見られました。
極端なケースとして、AutoHarnessはポリシー全体をコードとして学習することができます。これにより、テスト時にLLMを全く使用する必要がなくなります。ポリシーのコードは、基本的なPython関数と標準ライブラリ(例:numpy)を使用しており、ゲームプレイ中にLLMを呼び出す必要はありません。これは、16種類のシングルプレイヤーゲームで評価されます(2人プレイのゲームには、戦略的な対戦相手のモデリングが必要であり、これを純粋なコードとして表現するのは非常に困難です)。
学習においては、ヒューリスティック値にタスク報酬を組み込んでいます。不正な手が実行された場合は \(H = 0\) とし、それ以外の場合は \(H = 0.5 + 0.5r\) とします。ここで \(r \in [0, 1]\) は、軌跡の終端で得られる環境報酬です。学習にはGemini-2.5-Flashを使用し、最大256イテレーション実行します。平均して89.4イテレーションで学習が完了し、ヒューリスティック値は0.939に達します。
| Agent | Avg. Reward | Test Cost |
|---|---|---|
| Gemini-2.5-Flash | 0.673 | — |
| Gemini-2.5-Pro | 0.707 | — |
| Gemini-2.5-Flash+Harness (Ours) | 0.745 | ~$0 |
| GPT-5.2 | 0.635 | ~$640 |
| GPT-5.2-High | 0.844 | ~$640 |
| Harness-as-Policy (Ours) | 0.870 | ~$0 |
表1:全145のTextArenaゲーム。ハーネスの学習に必要なLLM呼び出し回数と、結果として得られた合法手精度を示しています。*印のゲームはエンドツーエンドのエージェント評価に使用されます。
| Index | Game | # Players | # Learning Steps | Legal Action Rate |
|---|---|---|---|---|
| 0 | 2048-v0 * | 1 | 27 | 1.0 |
| 1 | 2048-v0-easy | 1 | 4 | 1.0 |
| 2 | 2048-v0-extreme | 1 | 44 | 1.0 |
| 3 | 2048-v0-hard | 1 | 47 | 1.0 |
| 4 | 2048-v0-mega-easy | 1 | 31 | 1.0 |
| 5 | 2048-v0-super-easy | 1 | 6 | 1.0 |
| 6 | 2048-v0-ultra-easy | 1 | 2 | 1.0 |
| 7 | 2048-v0-very-easy | 1 | 57 | 1.0 |
| 8 | 2048-v0-very-hard | 1 | 7 | 1.0 |
| 9 | Alquerque-v0 * | 2 | 4 | 1.0 |
| 10 | Bandit-v0 * | 1 | 2 | 1.0 |
| 11 | Bandit-v0-hard | 1 | 1 | 1.0 |
| 12 | Battleship-v0 | 2 | 4 | 1.0 |
| 13 | Battleship-v0-extreme | 2 | 32 | 1.0 |
| 14 | Battleship-v0-large | 2 | 9 | 1.0 |
| 15 | Battleship-v0-standard | 2 | 6 | 1.0 |
| 16 | Blackjack-v0 * | 1 | 2 | 1.0 |
| 17 | Blackjack-v0-long | 1 | 1 | 1.0 |
| 18 | Breakthrough-v0 * | 2 | 2 | 1.0 |
| 19 | Breakthrough-v0-blind | 2 | 20 | 1.0 |
| 20 | Breakthrough-v0-large | 2 | 9 | 1.0 |
| 21 | Breakthrough-v0-long | 2 | 7 | 1.0 |
| 22 | Breakthrough-v0-small | 2 | 136 | 1.0 |
| 23 | Breakthrough-v0-tiny | 2 | 5 | 1.0 |
| 24 | Briscola-v0 | 2 | 2 | 1.0 |
| 25 | Checkers-v0 * | 2 | 7 | 1.0 |
| 26 | Checkers-v0-long | 2 | 3 | 1.0 |
| 27 | Chess-v0 * | 2 | 64 | 1.0 |
| 28 | Chess-v0-blind | 2 | 19 | 1.0 |
| 29 | Chess-v0-long | 2 | 16 | 1.0 |
| 30 | Chopsticks-v0 * | 2 | 15 | 1.0 |
| 31 | Chopsticks-v0-long | 2 | 7 | 1.0 |
| 32 | Chopsticks-v0-medium | 2 | 15 | 1.0 |
| 33 | ColonelBlotto-v0 | 2 | 1 | 1.0 |
| 34 | ColonelBlotto-v0-extreme | 2 | 1 | 1.0 |
| 35 | ColonelBlotto-v0-large | 2 | 1 | 1.0 |
| 36 | ColonelBlotto-v0-small | 2 | 1 | 1.0 |
| 37 | ConnectFour-v0 | 2 | 10 | 1.0 |
| 38 | ConnectFour-v0-blind | 2 | 2 | 1.0 |
| 39 | ConnectFour-v0-large | 2 | 1 | 1.0 |
| 40 | Crusade-v0 * | 2 | 4 | 1.0 |
| 41 | Cryptarithm-v0 * | 1 | 45 | 1.0 |
| 42 | FifteenPuzzle-v0 * | 1 | 3 | 1.0 |
| 43 | FrozenLake-v0 * | 1 | 19 | 1.0 |
| 44 | FrozenLake-v0-hardcore | 1 | 4 | 1.0 |
| 45 | FrozenLake-v0-random | 1 | 22 | 1.0 |
| 46 | GameOfPureStrategy-v0 | 2 | 3 | 1.0 |
| 47 | GermanWhist-v0 * | 2 | 43 | 1.0 |
| 48 | Golf-v0 * | 2 | 8 | 1.0 |
| 49 | Golf-v0-medium | 2 | 9 | 1.0 |
| 50 | GuessTheNumber-v0 * | 1 | 2 | 1.0 |
| 51 | GuessTheNumber-v0-hardcore | 1 | 2 | 1.0 |
| 52 | HighSociety-v0 | 2 | 3 | 1.0 |
| 53 | IndianPoker-v0 | 2 | 11 | 1.0 |
| 54 | IndianPoker-v0-extreme | 2 | 2 | 1.0 |
| 55 | IndianPoker-v0-long | 2 | 26 | 1.0 |
| 56 | IndianPoker-v0-medium | 2 | 7 | 1.0 |
| 57 | IndianPoker-v0-short | 2 | 2 | 1.0 |
| 58 | IteratedMatchingPennies-v0 | 2 | 1 | 1.0 |
| 59 | IteratedRockPaperScissors-v0 | 2 | 1 | 1.0 |
| 60 | IteratedTwoThirdsAverage-v0 | 2 | 1 | 1.0 |
| 61 | KuhnPoker-v0 | 2 | 5 | 1.0 |
| 62 | KuhnPoker-v0-extreme | 2 | 3 | 1.0 |
| 63 | KuhnPoker-v0-long | 2 | 2 | 1.0 |
| 64 | KuhnPoker-v0-medium | 2 | 2 | 1.0 |
| 65 | KuhnPoker-v0-short | 2 | 3 | 1.0 |
| 66 | LiarsDice-v0 * | 2 | 4 | 1.0 |
| 67 | LiarsDice-v0-large | 2 | 6 | 1.0 |
| 68 | LiarsDice-v0-small | 2 | 5 | 1.0 |
| 69 | LightsOut-v0 * | 1 | 1 | 1.0 |
| 70 | LinesOfAction-v0 * | 2 | 23 | 1.0 |
| 71 | Mastermind-v0 * | 1 | 2 | 1.0 |
| 72 | Mastermind-v0-extreme | 1 | 1 | 1.0 |
| 73 | Mastermind-v0-hard | 1 | 2 | 1.0 |
| 74 | MemoryGame-v0 | 2 | 3 | 1.0 |
| 75 | MemoryGame-v0-hard | 2 | 2 | 1.0 |
| 76 | MemoryGame-v0-medium | 2 | 2 | 1.0 |
| 77 | Minesweeper-v0 * | 1 | 11 | 1.0 |
| 78 | Minesweeper-v0-hard | 1 | 6 | 1.0 |
| 79 | Minesweeper-v0-medium | 1 | 10 | 1.0 |
| 80 | Minesweeper-v0-small | 1 | 2 | 1.0 |
| 81 | NewRecruit-v0 * | 2 | 2 | 1.0 |
| 82 | Nim-v0 | 2 | 1 | 1.0 |
| 83 | Nim-v0-large | 2 | 2 | 1.0 |
| 84 | Nim-v0-medium | 2 | 2 | 1.0 |
| 85 | Othello-v0 * | 2 | 62 | 1.0 |
| 86 | Othello-v0-big | 2 | 2 | 1.0 |
| 87 | Othello-v0-hard | 2 | 30 | 1.0 |
| 88 | Othello-v0-huge | 2 | 12 | 1.0 |
| 89 | Othello-v0-small | 2 | 5 | 1.0 |
| 90 | Othello-v0-tiny | 2 | 13 | 1.0 |
| 91 | PegJump-v0 * | 1 | 1 | 1.0 |
| 92 | PigDice-v0 | 2 | 1 | 1.0 |
| 93 | PigDice-v0-100 | 2 | 1 | 1.0 |
| 94 | PigDice-v0-150 | 2 | 1 | 1.0 |
| 95 | PigDice-v0-200 | 2 | 1 | 1.0 |
| 96 | PigDice-v0-250 | 2 | 1 | 1.0 |
| 97 | PigDice-v0-300 | 2 | 1 | 1.0 |
| 98 | PigDice-v0-350 | 2 | 1 | 1.0 |
| 99 | PigDice-v0-400 | 2 | 1 | 1.0 |
| 100 | PigDice-v0-450 | 2 | 1 | 1.0 |
| 101 | PigDice-v0-50 | 2 | 1 | 1.0 |
| 102 | PigDice-v0-500 | 2 | 1 | 1.0 |
| 103 | PigDice-v0-long | 2 | 1 | 1.0 |
| 104 | PigDice-v0-short | 2 | 1 | 1.0 |
| 105 | Poker-v0 | 2 | 17 | 1.0 |
| 106 | Poker-v0-extreme | 2 | 7 | 1.0 |
| 107 | Poker-v0-long | 2 | 5 | 1.0 |
| 108 | Poker-v0-small | 2 | 29 | 1.0 |
| 109 | QuantumTicTacToe-v0 | 2 | 12 | 1.0 |
| 110 | ReverseTicTacToe-v0 | 2 | 3 | 1.0 |
| 111 | RushHour-v0 * | 1 | 3 | 1.0 |
| 112 | SantoriniBaseFixed-v0 | 2 | 30 | 1.0 |
| 113 | Secretary-v0 * | 1 | 1 | 1.0 |
| 114 | Secretary-v0-long | 1 | 1 | 1.0 |
| 115 | SimpleTak-v0 | 2 | 4 | 1.0 |
| 116 | SimpleTak-v0-extreme | 2 | 8 | 1.0 |
| 117 | SimpleTak-v0-large | 2 | 12 | 1.0 |
| 118 | SimpleTak-v0-medium | 2 | 5 | 1.0 |
| 119 | Snake-v0 | 2 | 1 | 1.0 |
| 120 | Snake-v0-large | 2 | 1 | 1.0 |
| 121 | Snake-v0-standard | 2 | 1 | 1.0 |
| 122 | Sokoban-v0 * | 1 | 5 | 1.0 |
| 123 | Sokoban-v0-medium | 1 | 1 | 1.0 |
| 124 | SpiteAndMalice-v0 * | 2 | 33 | 1.0 |
| 125 | Stratego-v0 * | 2 | 23 | 1.0 |
| 126 | Sudoku-v0 * | 1 | 5 | 1.0 |
| 127 | Sudoku-v0-easy | 1 | 5 | 1.0 |
| 128 | Sudoku-v0-hard | 1 | 9 | 1.0 |
| 129 | Sudoku-v0-medium | 1 | 4 | 1.0 |
| 130 | Sudoku-v0-very-easy | 1 | 4 | 1.0 |
| 131 | Surround-v0 | 2 | 1 | 1.0 |
| 132 | Surround-v0-large | 2 | 1 | 1.0 |
| 133 | Surround-v0-standard | 2 | 1 | 1.0 |
| 134 | Tak-v0 * | 2 | 21 | 1.0 |
| 135 | Tak-v0-hard | 2 | 53 | 1.0 |
| 136 | Tak-v0-medium | 2 | 6 | 1.0 |
| 137 | TicTacToe-v0 | 2 | 4 | 1.0 |
| 138 | TowerOfHanoi-v0 * | 1 | 7 | 1.0 |
| 139 | TowerOfHanoi-v0-extreme | 1 | 44 | 1.0 |
| 140 | TowerOfHanoi-v0-hard | 1 | 7 | 1.0 |
| 141 | TowerOfHanoi-v0-hardcore | 1 | 2 | 1.0 |
| 142 | TowerOfHanoi-v0-medium | 1 | 7 | 1.0 |
| 143 | UltimateTicTacToe-v0 * | 2 | 13 | 1.0 |
| 144 | WildTicTacToe-v0 | 2 | 10 | 1.0 |
* エンドツーエンド評価に使用されたゲームです。全145ゲームで合法手率(Legal Action Rate)= 1.0を達成しました。
| Game | Gemini-2.5-Flash | Gemini-2.5-Pro | Flash+Harness (Ours) | GPT-5.2 | GPT-5.2-High | Harness-as-Policy (Ours) |
|---|---|---|---|---|---|---|
| 2048-v0 | 0.215 | 0.378 | 0.308 | 0.212 | 0.745 | 0.912 |
| Bandit-v0 | 0.398 | 0.201 | 0.208 | 0.350 | 1.000 | 0.459 |
| Blackjack-v0 | 0.410 | 0.330 | 0.480 | 0.460 | 0.480 | 0.410 |
| Cryptarithm-v0 | 1.000 | 0.950 | 1.000 | 0.600 | 1.000 | 1.000 |
| FifteenPuzzle-v0 | 0.107 | 0.103 | 0.162 | 0.035 | 0.183 | 0.597 |
| FrozenLake-v0 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 |
| GuessTheNumber-v0 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 |
| LightsOut-v0 | 0.730 | 0.802 | 0.840 | 0.691 | 1.000 | 1.000 |
| Mastermind-v0 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 |
| Minesweeper-v0 | 0.637 | 0.586 | 0.686 | 0.593 | 1.000 | 0.940 |
| PegJump-v0 | 0.325 | 0.682 | 0.782 | 0.221 | 0.429 | 1.000 |
| RushHour-v0 | 0.688 | 0.887 | 1.000 | 1.000 | 1.000 | 1.000 |
| Secretary-v0 | 0.550 | 0.700 | 0.650 | 0.600 | 0.800 | 0.750 |
| Sokoban-v0 | 0.700 | 0.700 | 0.800 | 0.600 | 0.867 | 0.850 |
| Sudoku-v0 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 |
| TowerOfHanoi-v0 | 1.000 | 1.000 | 1.000 | 0.800 | 1.000 | 1.000 |
| Game | Gemini-2.5-Flash | Gemini-2.5-Pro | Flash+Harness (Ours) | GPT-5.2 | GPT-5.2-High | Harness-as-Policy (Ours) |
|---|---|---|---|---|---|---|
| 2048-v0 | 96.57% | 98.36% | 99.86% | 96.05% | 99.94% | 100.00% |
| Bandit-v0 | 99.76% | 96.39% | 99.77% | 100.00% | 100.00% | 100.00% |
| Blackjack-v0 | 99.38% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
| Cryptarithm-v0 | 96.97% | 98.70% | 100.00% | 88.44% | 100.00% | 100.00% |
| FifteenPuzzle-v0 | 84.70% | 88.14% | 96.59% | 87.18% | 100.00% | 100.00% |
| FrozenLake-v0 | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
| GuessTheNumber-v0 | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
| LightsOut-v0 | 100.00% | 100.00% | 99.76% | 100.00% | 100.00% | 100.00% |
| Mastermind-v0 | 100.00% | 100.00% | 100.00% | 98.57% | 100.00% | 100.00% |
| Minesweeper-v0 | 88.69% | 81.20% | 100.00% | 81.10% | 100.00% | 100.00% |
| PegJump-v0 | 67.97% | 83.10% | 98.25% | 60.17% | 77.78% | 100.00% |
| RushHour-v0 | 82.17% | 95.36% | 97.24% | 94.51% | 100.00% | 100.00% |
| Secretary-v0 | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
| Sokoban-v0 | 91.89% | 97.11% | 98.48% | 95.88% | 100.00% | 100.00% |
| Sudoku-v0 | 96.77% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
| TowerOfHanoi-v0 | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
私たちは、コードハーネスを自動合成するという新しいアプローチでLLMエージェントの性能向上を実現しました。Thompsonサンプリングと環境フィードバックによって制御された少数の反復改善ラウンドを用いることで、Gemini-2.5-Flashはどのゲーム環境に対しても、手動の調整なしに堅牢なハーネスを生成できます。
全145種類のTextArenaゲームで合法手率100%を達成
小型のFlashモデルが大型のProモデルを凌駕—2P対戦ゲームで勝率56.3%
Harness-as-Policyは報酬0.870を達成し、ほぼゼロの推論コストでGPT-5.2-Highを上回る