AI・信頼性・評価
AIエージェントのハーネスとは?同じモデルで成績が変わる仕組み
シリーズAIエージェント入門全4回
- 第1回AIエージェントとは?LLMとの違い・仕組み・落とし穴
- 第2回AIエージェントのハーネスとは?同じモデルで成績が変わる仕組み
- 第3回コンテキストエンジニアリングとは?プロンプトとの違いと圧縮の判断
- 第4回AIエージェントはなぜ長い作業で失敗する?成功率の掛け算と評価方法
- ハーネス
- AIエージェント
- SWE-agent
- Aider
- SWE-bench Lite
- HumanEval
- HotPotQA
- DSPy
- LATS
- Agent-Computer Interface
- ベンチマーク
- LLM
- コンテキスト
- オーケストレーション
- メモリ
- 編集フォーマット
- ベースライン
- 構文検査
- ホールドアウト
- 過適合
- unified diff
- GPT-4 Turbo
- Llama-3-70B
- 変動費
- プリンストン大学
目次
LLM(large language model、大規模言語モデル)は、文章を受け取り、その続きの文章を返すモデルである。AIエージェントとは「LLMをループとツールで包んだもの」である。ここでのループは、LLMの返答に従ってツール(検索やコードの実行など)を動かし、その結果をまたLLMに渡す、という往復の繰り返しを指す。LLMを包んでいる側、つまりツールの渡し方、記憶の持たせ方、失敗したときのやり直し方を、ハーネスと呼ぶ。
エージェントの話題になると、つい「どのモデルが賢いか」の比較になる。だがツールを何本渡すか、一度にどれだけの情報を見せるか、いつ止めるかといった決めごとは、同じモデルを使うエージェントどうしでも大きく違いうる。成績だけを外から見る読み手には、その差がモデルから来たのか、ハーネスから来たのかが見分けにくい。
本稿は、モデルを固定して外側だけを変えた二つの研究と、コード編集ツールの作者による実測を例に取る。
モデルを変えずにハーネスだけを替えると、エージェントの成績はどれだけ変わるのか。
ハーネス、つまりLLMを包むツール・記憶・やり直し方などの外側の作りを替えるだけで、エージェントの成績は変わる。SWE-agent は同じ GPT-4 Turbo のままコマンドを作り直し、実在の GitHub issue 300件で直せた割合を11.0%から18.0%へ上げた。
外側の作りしだいで費用も動く。同じ GPT-4 を使う HumanEval の比較では、単純な作りが作り込んだ手法の LATS(Language Agent Tree Search)を精度で上回り、費用は LATS の50分の1未満だった。
ただし作り込んだハーネスは特定の課題や環境だけに合う作りになりやすく、強さの源であると同時にもろさの源にもなる。
同じモデルに、ハーネスだけを替えて同じ修正をさせる
※ この節の例は、説明のために作った架空のものです。
モデルを替えなくても、ファイルの見せ方と、書き込む前の検査を替えるだけで、直せるバグの数は変わる。同じモデルに、長いファイルの中のバグを10件直させるとする。一度目は、ファイル全体を一度に渡し、モデルが返した編集をそのまま書き込む。二度目は、ファイルを数十行ずつ区切って見せ、編集のたびに構文(括弧の対応などの書き方の決まり)を検査して、壊れた編集は書き込まずにやり直させる。
一度目は、長いファイルの途中で目当ての箇所を見失ったり、括弧を一つ落とした編集がそのまま残ってテストが全部落ちたりして、10件中3件しか直らない。二度目は、壊れた編集が書き込まれる前に弾かれるので、5件直る。
二度目のやり直しを一件だけたどる。税込価格を計算する行を直す要求に、モデルが return round(price * 1.1 という閉じ括弧の足りない編集を返す。ハーネスは書き込む前に構文を検査し、閉じ括弧が無いというエラーを、ファイルを変えないままモデルに返す。モデルはそのエラーを読んで return round(price * 1.1) に直し、ハーネスは検査を通ったこの編集を書き込んでテストを走らせる。
この二つの作りから、次の三つが言える。
- モデルを固定しても、一度に見せる量と、書き込む前の検査を替えると、直る件数が変わる(10件中3件から5件)。
- 検査は正しい編集を作らない。失敗をモデルに知らせて、直す機会を作る。そのため二度目は、弾いた編集の数だけモデルを多く呼ぶ。外側の作りは、直る件数と同時に費用も決める。
- 二度目の作りは、このモデルがこの課題で起こす失敗(箇所の見失いと括弧の落とし)に合わせてある。モデルか課題が替わって失敗の種類が変われば、同じ作りが効くとは限らない。
ハーネスとは、具体的に何か
ハーネス(harness:留め具・装具)は、LLMの周りを固めるソフトウェア一式である1。Anthropic も自社の Claude Agent SDK を、コーディングのほか、ツールで情報を集め、計画し、実行する作業に向く汎用の「エージェントハーネス」と呼び、圧縮などのコンテキストの管理の機能を持つと書いている2。主な部品は:
- ツール:何を使えるか、どう呼び出すか(検索・コード実行・ファイル操作…)。
- 記憶(メモリ):直近のやりとり(短期)と、過去の経験や知識(長期)をどう保持し、必要なときに取り出すか。
- コンテキストの管理:LLMが一度に読める量には限りがある。その限られた枠に、いま必要な情報だけをどう載せるか。
- オーケストレーション(ループの制御):考える→動く→観察するの回し方、失敗したときのやり直し、いつ止めるか。
- 指示(プロンプト/規律):何を目指し、何をしてはいけないか、どう振る舞うか。
- 検証:行動の結果が本当に正しいかを、どう確かめるか。
モデルは外から買って使うものだ。ハーネスにも既製品はあり、この記事があとで挙げる SWE-agent も Aider も、誰でも使える形で公開されている。それでも、自分の道具立て、自分のリポジトリ、自分の作業でよく起きる失敗に合わせてハーネスのどこをどう直すかは、使う側が決める。同じモデルを使う人どうしでも、この直し方が違えば成績は変わりうる。
インターフェースを替えるだけで、同じモデルの解決率が上がる
モデルを変えずにインターフェースだけを作り直して成績を上げたのが、プリンストン大学の研究グループが公開した実在のエージェント SWE-agent だ3。彼らはモデルと計算機のインターフェース(Agent-Computer Interface)だけを作り直した。人間向けのシェルやIDE(integrated development environment、統合開発環境)の代わりに、LLMの弱点に合わせて次の三つのツールを用意した。
- 一度に100行だけ見せるファイル閲覧
- 編集のたびに構文検査を走らせ、壊れた編集は破棄してやり直させる編集コマンド
- 検索結果を要約して返し、ヒットが50件を超えたら一覧を出さず条件を絞り直させる検索
評価に使った SWE-bench Lite は、実在のPythonリポジトリのGitHub issue 300件を修正させ、付属のテストが全部通ったかで採点するベンチマークだ。インターフェースを入れ替えただけで、同じ GPT-4 Turbo のまま解決率が11.0%から18.0%へ上がった(pass@1、つまり各 issue に1回だけ解かせたときの解決率で、相対+64%)。これは2024年時点の gpt-4-1106-preview での測定で、SWE-bench Lite の水準はその後動いている。
論文は、設計の判断を一つずつ外して、それぞれの効果も測っている。ファイル閲覧で一度に見せる行数を100行から30行に減らすと、解決率は3.7ポイント下がった。ファイル全体を一度に見せると5.3ポイント下がり、見せる量は少なすぎても多すぎても成績を下げた。構文検査を外すと3.0ポイント下がった。検索を人間風の「1件ずつ辿る検索」に替えると、検索ツールを持たせない場合より悪くなった。インターフェースという“外側”は、設計を1つずつ変えて成績の差を測れる性能の変数なのだ。
同じ種類の実測は SWE-agent の外にもある。ターミナルで使うAIのペアプログラミングツール Aider の作者は、LLMにコード編集を返させる書式(編集フォーマット)を実測し、2023年末の gpt-4-turbo では書式の選び方で成功率が20%から61%へ動いたと公開している4。この値は、手抜きのコードを書かせやすいよう作った89問のリファクタリング課題での成功率で、コード編集一般の成功率ではない。実在のハーネスを作る人たちは、ハーネスを「測る対象」として扱っている。
したがって、「エージェントが進歩した」と言われるものには、モデル本体の進歩だけでなく、ハーネスの設計や改良によるものが混じっている。裏を返せば、手元のモデルのままでも、ハーネスを良くすれば成績を伸ばせる。
作り込んだ手法が、単純な作りより高く付き、精度でも劣ることがある
ハーネスの作りは、かかる費用も変える。SWE-agent の論文は、SWE-bench Lite で、issue を手がかりに検索で選んだファイルを渡して一度でパッチを書かせる方式(RAG、retrieval-augmented generation)と比べ、SWE-agent は費用が8〜13倍かかる代わりに解決率が6.7倍になったと書いている3。
SWE-agent とは別の、同じプリンストン大学の研究グループ(“AI Agents That Matter”)は、エージェント評価の落とし穴を指摘する中で、複雑に作り込んだエージェントと同等以上の精度を、ごく単純な手法(ベースライン)が出すことがあると報告している。比較した3つの手法のうち LATS(Language Agent Tree Search)に対しては、50分の1未満のコストで同等以上の精度を出す5。ほかの2つ、Reflexion と LDB(Large Language Model Debugger)との費用差は「50%を超える」にとどまる。
比較の条件は論文が明記している。ベンチマークはプログラミング課題の HumanEval(LDB 版、164問すべてに例示テストが付く)、モデルは2024年4月時点の GPT-4、コストは各手法を5回走らせた総額の平均だ。実数では、作り込んだ LATS が精度 88.0・134.50ドルなのに対し、単純なベースラインは精度 93.2・2.45ドル(約55分の1)で、精度もベースラインが上回る。
ただし、この倍率をエージェント一般へ広げてよいかは別の問題である。論文は、推論の時点で計算を重ねて答えを出す手法を System 2 的な手法と呼び、「System 2 的な手法は、HumanEval より難しいプログラミング課題では有用かもしれない」と留保して、その難しい課題の例に SWE-bench を挙げている。掲載版はその留保の直前で、System 2 的な振る舞いを強化学習で仕込んだ o1 が、再試行と内省を付けた gpt-4o を、推論にかかる計算量を含めても上回ると付記している。
論文が求めるのは「精度だけを見て費用を見ない評価をやめよ」であって、設計を諦めよではない。精度と費用を同時に最適化すればより良い設計が得られる、というのが論文が自ら挙げる貢献の一つだ5。
その実測が、複数の文書をたどる質問応答の課題 HotPotQA での最適化である。モデルを固定したままパイプライン側の設定を最適化するだけで、DSPy(LLMを呼ぶ処理をプログラムとして組むためのライブラリ)の既定実装に比べて、実行のたびにかかる費用(変動費)が GPT-3.5 で53%、Llama-3-70B で41%下がった。精度(正解の文書をすべて検索できたかの割合)は同等に保たれている。最適化そのものにかかる固定費を含めた総額でも、1,350件を超えて使えば既定実装より安くなる。
ハーネスは、強さの源であり、もろさの源でもある
作り込んだハーネスは、特定の課題や環境に合わせた作りになりやすく、そこがもろさにもなる。少し違うタスク、少し違う環境になると、ハーネスが前提にしていた条件が成り立たなくなり、成績が落ちうる。ホールドアウトとは、開発中には使わず、評価のためだけに取っておく課題を指す。“AI Agents That Matter” は、ホールドアウトが不十分な評価では、エージェントがベンチマークに近道で過適合して、もろくなると指摘している5。ここでの過適合は、そのベンチマークでだけ通じるやり方に合わせ込むことである。
モデルが替わると、ハーネスの部品そのものが要らなくなることもある。SWE-agent のチームは1年後、モデルの能力が上がったので、100行の閲覧や構文検査つきの編集のような専用ツールの多くは有用なエージェントを作るのに要らなくなったと書き、bash 以外のツールを持たない最小のエージェントを公開している6。
出典6件
-
Lilian Weng「LLM Powered Autonomous Agents」Lil’Log, 2023. https://lilianweng.github.io/posts/2023-06-23-agent/ — LLM+計画・記憶・ツールでエージェントを捉える解説。本稿の6項目のうちツール・記憶・コンテキストの管理は同記事のツールと記憶の節に、残りは計画の下位テーマを実務の観点で切り出したもの。 ↩
-
Anthropic「Effective harnesses for long-running agents」Anthropic Engineering, 2025. https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents — Claude Agent SDK を汎用のエージェントハーネスと呼び、圧縮などのコンテキストの管理の機能を持つと書く。 ↩
-
J. Yang ほか「SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering」NeurIPS, 2024. https://arxiv.org/abs/2405.15793 — モデルを固定しインターフェースだけを作り直すと、SWE-bench Liteの解決率が11.0%から18.0%へ上がる。 ↩ ↩2
-
Paul Gauthier「Aider」aider.chat, 2023. https://aider.chat/2023/12/21/unified-diffs.html — 手抜きコードを誘発する89問のリファクタリング課題で、gpt-4-turboの成功率がSEARCH/REPLACE形式の20%からunified diff形式の61%へ。 ↩
-
S. Kapoor ほか「AI Agents That Matter」Transactions on Machine Learning Research, 2025. https://arxiv.org/abs/2407.01502 — HumanEvalで単純なベースラインがLATSを精度で上回り費用は50分の1未満、HotPotQAではモデル固定の最適化で変動費が下がる。過適合も指摘。 ↩ ↩2 ↩3
-
SWE-agent チーム「mini-swe-agent」GitHub, 2025. https://github.com/SWE-agent/mini-swe-agent — SWE-agent・SWE-bench の著者らによる bash だけのエージェント。モデルの能力向上で専用ツールの多くは不要になったと書く。 ↩
この記事はAIを使用して執筆されました。内容には誤りが含まれる可能性があります。事実や数字の出典は脚注から確かめられます。