LangChain:モデルを変えずharnessだけ調整し、Nemotron 3 UltraのスコアをOpus 4.8に迫らせる。コストは約1/10、企業がクローズドソースAPIに大金を払う必要がないことを証明

システムプロンプト、ツール説明、ミドルウェアの三箇所に手を入れる。Deep Agentsスイートは典型的に約0.80→0.84、最高0.86対Opus0.87。
著者:LangChain Blog07-09 · 9 分で読了⚑ 研究論文
🎧 ポッドキャスト版0:00 / --:--
0:00 / --:--
研究解説 · 小互解説
五行でわかる
  • LangChainはNemotron 3 Ultraの重みを固定したまま、harness(システムプロンプト、ツール説明、ミドルウェア)だけを変更。モデルも温度などの生成パラメータも変えない。
  • 手法は評価駆動のクローズドループ:評価 → 失敗トレースを読む → 行動をクラスタリング → 外殻を一箇所変更 → 再評価。まず小サンプルで絞り込み、通ったらフルセットへ。
  • プロンプトは短い単一目標の指示ブロックを使う。ミドルウェアは強制実行と、つまずくポイントでのシグナル注入を担う。
  • 核心メカニズム:同じルールでもツール説明に書くと効かず、ツールの返り値に埋め込むと効く。会話途中での注入は、システムプロンプトに常駐させるより安定する。
  • 典型的には~0.80→0.84、最高0.86対Opus 4.8最高0.87。フルセットで約$4.48対$43.48、中央値のレイテンシはどちらも約10秒/問。
⚑ 立場の明示:本稿はLangChain公式ブログの方法論的事例であり、データは同社のDeep Agents内部評価と自社trace分析によるもので、第三者による再現ではない。
1WHAT

彼らが行ったこと

LangChainがNemotron 3 Ultra向けのharnessチューニング手引書を公開した。モデルには手を触れず、その外側の足場だけを変えて、オープンソースモデルがagentタスクでどこまで引き上げられるかを見た。

一言で言えば:同じオープンソースモデルでも、体に合った外殻に取り替えれば、最高スコアはClaude Opus 4.8に迫り、フルセット評価のコストはおよそ一桁低くなる。

◆

なぜ見る価値があるか:同じ重みでも足場が違えばスコアは大きく変わり得る。彼らは以前、gpt-5.2-codexのTerminal-Bench 2.0のスコアをモデルを変えずに52.8から66.5まで引き上げた。今回は同じ発想をオープンソースモデルに適用し、Opusに近いコスト対比を示した。

AGENT = モデル + HARNESS HARNESS · 今回手を入れた部分 システム指示 ツール説明 ミドルウェア モデル本体 Nemotron 3 Ultra 重み固定 · モデル不変 · 温度 / top-pも不変
アーキテクチャ:agentは裸のモデルではない。外殻(harness)が内核(モデル)を包んでいる。LangChainが今回手を加えたのは外殻の三箇所だけ——システムプロンプト、ツール説明、ミドルウェア。内核の重みはそのまま。

生成パラメータはベンダー推奨のデフォルトのまま。本稿での向上は、temperatureを弄って「運任せ」で得たものではない。

モデルとharnessの関係を示す図
公式図:モデルが内側、harnessが外側。噛み合えば能力はタスクに注がれ、噛み合わなければ能力は足場との格闘に費やされる。画像出典:LangChain Blog
サイト内関連解説
AIの自己進化の鍵は、モデルの外側にあるharnessという外殻に隠れている
Lilian Wengによるharnessエンジニアリングの長文記事。本稿はLangChainがオープンソースモデルで実践した手引書。
2MISMATCH

外殻が合わないとき、馬力はどこへ消えるのか

オープンソースモデルはすでに実務のagentタスクをこなせる域にあり、価格は最先端APIのほんの一部だ。だがどれほど有能なモデルでも、自分向けに作られていないharnessに放り込まれれば、実力を出せなくなる。

たとえるなら

モデルはエンジンで、harnessはシャシーとギアのようなもの。どれほど良いエンジンでも、ギアと伝動が噛み合わなければ、馬力は空転とスリップに無駄遣いされる。harnessを調整するのは、ギアと伝動を変えることであり、エンジンを載せ替えることではない。

適合 · 能力はタスクへ モデル ファイル読取 · ツール呼出 · 回答提出 大半のtokenが本業に 不適合 · 能力は空転 モデル 同じ質問を繰返す · 早々に切上げ · 堂々巡り tokenが足場と格闘
同じエンジンでも、外殻が合うかどうかで馬力がタスクに向かうか空転で漏れるかが決まる。左:途切れない進捗バー。右:断続的な空転バー。

彼らがNemotron 3 Ultraを選んだのは、NVIDIAが後段学習の段階で、単発の対話だけでなく複数のagent harnessを横断して安定した挙動を出すよう鍛えていたからだ。profileなしのベースラインは約0.80——床がすでに低くないからこそ、外殻を積み増す余地がある。

3LOOP

チューニングはクローズドループで、勘に頼らない

評価シグナルがなければ、それはただの勘だ。Agentの入力空間は広く、許容される出力も多い。一箇所直すとAが直ってBが壊れることもある。だから作業はクローズドループで進め、LangSmithのトレースを真実の源とする。

1 評価 スイート実行 2 観察 trace読解 3 診断 失敗を分類 4 外殻変更 一箇所だけ 5 再評価 通過後フル実行 ループ還流 採用条件:複数回の試行に耐え · かつ他項目を犠牲にしない コストの階段 小サンプルで安く絞込み → 通過後にDeep Agentsフルセットへ 先に安く検証、フル予算はその後で
クローズドループ:評価がシグナルを与え、traceがどのステップで失敗したかを教え、行動を一つのパターンに分類したうえで外殻を一箇所変更し、絞り込みを通過してからフル予算を投じる。一度「良さそうに見えた」だけでは通用しない。
harnessチューニングのクローズドループ図
公式図:harnessチューニングに向けたagent開発ライフサイクル。画像出典:LangChain Blog
行動パターンを直す、一問一答は直さない

クラスタリングするのは失敗パターン(例えば「ファイルを半分読んだだけで答えてしまう」)であり、特定の設問の言い回しではない。ある一問のフレーズにだけスコアが乗る改修は捨てられる。

安い方から先に

候補はまず代表性のある小サンプルを通し、通過してからフルセットへ進む。絞り込みに使うサンプルは異なる行動タイプを網羅する必要があり、そうしないと絞り込みで触れなかったタスクが軒並み後退しかねない。

4PROMPTS

プロンプト:ページ全体を書き直すな、失敗に対してピンポイントで書け

システムプロンプトは最も安上がりで、同時に最も過大評価されやすい。大幅な書き直しや「もっと良いagentを作る」的な指示はしばしば薄まってしまう。有能なモデルの本当の失敗点は、たいてい言い回しの問題ではないからだ。

大幅な書き直し コンテキストに入るが · 薄まりやすい 単一目標の小ブロック 一種類の失敗行動だけ直す traceを見て書く · 検証可能
左:原則をページいっぱいに積み上げるとシグナルが薄まる。右:traceで「ツールは成功したのに結果を報告しない」のを見つけたら、その一点だけを書く。
コピー可能な例

タスクは完了したのに具体的な結果を報告しないとき、追加するのはこのブロックだけで、他は足さない:

final_answer_completeness(原文そのままコピー可)
<final_answer_completeness>
After tool calls succeed, the final answer must report the concrete result, not just that the task is done. Include the key entity, action, identifier, title, recipient, service, status, or value that answers the user's request. If the user asked multiple questions, answer each one from its matching tool output.
</final_answer_completeness>
ツールが成功したら、最終回答は具体的な結果を報告しなければならず、「タスク完了」とだけ言ってはならない。重要なエンティティ、アクション、識別子、タイトル、宛先、サービス、状態、数値は答えに書き込むこと。複数の質問には複数の回答を、それぞれ対応するツール出力から取ること。
5HERO

同じ一文でも、置く場所が違うと結果はまったく逆になる

これは全文で最も注目に値するメカニズムだ。彼らが求めていたルールはこうだ——ファイル読み取りの返り値がちょうど1ページ分いっぱいだったら、まだ続きがあるとみなして読み続ける。

この一文をread_fileのツール説明に書き込むと、モデルは1ページ目を読んだだけで切り上げてしまう。一字も変えずにツールの返り値のそばへ移すと、モデルは読み続けるようになる。

言い回しの問題ではなく · 注意の落ちどころの問題

モデルが実際に処理しているのは「今まさに目の前にあるその一段」だ。ルールがその内容から離れるほど、書かれていないも同然になる。その内容のすぐそばに貼り付けてはじめて、読み取られる。

書き方A · ルールをツール説明に システムプロンプト(遠い) ツール説明:満ページなら続けて読む ルールは遠くに ツール返り値 · 第1ページ 注意はここに集中 結果:1ページで回答 ルールがデータから遠すぎる 書き方B · ルールを返り値のそばに システムプロンプト ツール説明(通常) 満ページ · 続けて読んでください 第1ページ本文 結果:ページをめくり続ける 同じ一文 · 引っ越しただけ 問題は「何を書くか」から「モデルが今見ている場所に現れるか」へ変わる
核心メカニズム:左はルールがツールの取扱説明書に掛かっているが、走査帯は返り値の本文に落ちており、説明書はすでに注意の外にある。右は同じ文言が返り値ブロックの先頭に貼られており、走査帯がルール+データの両方をなぞる。

ミドルウェアは何をしているのか:二種類のフック

「毎回必ず起きる」必要のある行動もあり、プロンプトだけでは足りない。ミドルウェアはモデル呼び出しとツール呼び出しの前後に掛かる:

ユーザーのタスク MIDDLEWARE 強制実行 上限 · リトライ シグナル注入 本ケースの主力 モデル呼び出し ツール / 回答
強制実行:ループ上限、一回きりのリトライ。シグナル注入:脱線したその瞬間に正しい情報を目の前に差し込む。本ケースで主力なのは後者。

会話途中での注入:システムプロンプトより安定する

Nemotronは「必要になったタイミングで現れる一言」の方が、システムプロンプトに常駐するルールより素直に従う。そこでミドルウェアはこのリズムで二回注入する:

1 MIDDLEWARE 注入 まず計画してから動く。いきなりツールを呼ぶな。 2 AGENT 計画を書き出す:どのファイルを読むか、どのツールを呼ぶか… 3 MIDDLEWARE 二回目の注入 実行前に計画を見直し、漏れを確認してから動く。 4 AGENT 計画を確認 → 実行(traceで注入を受け止めた様子が見える)
タイムライン:オレンジのブロックはミドルウェアが会話にその場で差し込むメッセージ、白いブロックはモデルの応答。同じ内容をシステムプロンプトの冒頭に書いても大抵は薄まってしまう。必要なその瞬間に現れてこそ効く。
6FILTER

何を残し、何を捨てるか

試したことの大半は生き残らない。成功だけを報告するチューニングループは、たいてい過学習を起こしている。

「もっともらしく見える」改修の山 行動パターンの修正 捨てる 無効な改修 スコア稼ぎのフレーズ 採用:実条件で発動 · 特定設問の言い回しに依存しない
漏斗:良いテコは実際の作動条件に対して効く(例えばあらゆる満ページのファイル読み取り)。特定設問のフレーズにだけスコアを乗せる改修は、点数には媚びるが次のagent構築には何も学びを残さないので捨てる。
7RESULTS

チューニング後、数字はどう変わったか

総合点だけでは良くなったか悪くなったかしか分からない。彼らはagentがよくこなす作業ごとに項目別採点をした:ファイル、ツール、検索、マルチターン対話、長文脈の要約。

0.80
profileなしベースライン(典型)
0.84
harness調整後の典型スコア
0.86
Nemotron最高記録
0.87
Opus 4.8最高(典型は約0.86)
Nemotron・profileなし
~0.80
Nemotron・調整後典型
~0.84
Nemotron・最高
0.86
Opus 4.8・最高
0.87
項目別能力比較図
公式の項目別グラフ:要約は伸びしろが最大で調整後はほぼ満点に近づき、ツール使用は明らかに向上、検索とファイルはベースラインからすでに強いがさらに伸び、対話はほぼ動かない。画像出典:LangChain Blog
項目別の向上イメージ(バーの高さは相対的、正確な比率ではない) 最大 要約 ツール 検索 / ファイル 横ばい 対話 対話の横ばい = harnessが届かない → 重み層を指し示す
図の読み方:要約はもともと最も乱れていた(圧縮の指針がなかった)ため、外殻を補うと最も伸びた。対話はほぼ動かず、長期的な状態管理のような問題は足場で調整できる範囲の外にあることを示している。
要約 / 圧縮↑ 最大

profileなしのときは圧縮の指針がなく、圧縮すべきときにしなかったり、要約だけで会話に答えて退避させた履歴ファイルを読みに行かなかったりした。明示的な指針を補うとほぼ満点まで伸びた。

ツール使用↑ 明確

ツール失敗の多くは、どう説明するか、どうリトライするか、どう締めくくるかに起因していて、モデルが単に「ツールを使えない」だけではない。

検索 · ファイル↑ さらに向上

素の状態からすでに強い(後段学習の痕跡)が、外殻の微調整でさらに掘り出せる。

マルチターン対話横ばい · ほぼ不変

長期にわたってバックエンドの状態を保持するような問題はほとんど動かない。彼らはこのためにprofileを歪めてスコアを稼ぐことはしない。

$4.48
チューニング後のオープンソースモデルのフルセット概算費用
$43.48
Opus同一セットの概算費用(約10倍)
3–10×
精度とprompt キャッシュ次第
~10s
中央値レイテンシはOpusと同水準
コストと品質の対照図
公式の対照:品質が最先端の最高記録に近づいたとき、フルセットのコストはおよそ一桁低い。画像出典:LangChain Blog
8CEILING

外殻はどの層まで締めると締まらなくなるのか

harnessの調整には天井がある。境界線を見極めることは、効果を見極めることと同じくらい重要だ。

足場層 · harnessが届く範囲 プロンプト · ツール説明 · 結果 / リトライ / ループ 本番でagentが頼りない原因の大半はここに住んでいる 重み層 · フックを足しても効かない 長期的な状態 · 周りをどう変えてもびくともしない シグナル:次の一手は後段学習であり、外殻をさらに締めることではない
階層分け:プロンプト/ツール/ミドルウェアを変えるとついて良くなるものは、まだ足場層にある。周りを全部試しても動かないものは、重み層にある。本ケースの対話項目の横ばいは、まさに後者のシグナルだ。

二本目の線はharnessの内部に引かれる:何を「すべてのagentが共有するコア」に入れるべきか、何が単に「ある一つのモデルのprofile」にすぎないか。

コアharness · すべてのagentで使える 例:満ページ読み取り → 続けて読む(どのモデルでも発動) モデルprofile · このモデル専用 例:Nemotronには常駐ルールではなく会話内注入を使う
できる限り改修をコア側へ寄せる:モデルと評価問題が陳腐化した後も、コア層は働き続ける。Profileはこのエンジン専用のギアであり、宇宙の真理と誤解してはいけない。

プロジェクトの中で繰り返し問う価値がある一言:この改修は、正直に言って「コア」に少しでも寄せられるか?

When a failure doesn't respond to anything you change around the model, that's the signal it lives in the weights, and the fix is post-training, not another hook. LangChain · Tuning the harness, not the model
出典:LangChain Blog『Tuning the harness, not the model: a Nemotron 3 Ultra playbook』(2026-07-08)。データは本文中のDeep Agents内部評価とコストの数値による。関連記事:Improving Deep Agents with harness engineering;Better Harness;Tuning Deep Agents to different models。ローカル図解精製版、未デプロイ。
出典
LangChain BlogLangChain Blog·原文を見る
↑ 本文ここまで
✓ この記事は全文無料です

メンバーは全文 Markdown のコピー・保存に加え、自分の AI に購読・質問させることができます。

原文を読む ↗
📮 新着解説をメールでいち早く

役に立ちましたか?メールを登録すると、新着解説を公開と同時にお届けします。解除はいつでも。