🟡 🤝 エージェント 公開日: · 3 分で読めます ·

LangChainがRLMエージェントを導入:再帰モデルが長いコンテキストで79%高い精度を達成

エディトリアルイラスト: LangChainのDeepAgentsとQuickJSオーケストレーターによる長いコンテキスト処理

LangChainはDeepAgentsフレームワークを通じてRecursive Language Models(RLM)を導入した。モデルがコンテキスト全体を一つのウィンドウに詰め込む代わりに、入力の断片に対して自分自身を再帰的に呼び出すアプローチだ。128kトークンのOOLONGベンチマークタスクで、RLMエージェントは標準エージェントの0.44に対し0.79を記録し、79%の改善を達成した。

🤖

この記事はAIにより一次情報源から生成されました。

LangChainはDeepAgentsエコシステム内で**Recursive Language Models(RLM)**の詳細なガイドとフレームワークを公開した。LLMエージェントの慢性的な問題の一つ、長いコンテキストでのパフォーマンス低下——いわゆる「context rot」——に対処するアプローチだ。

標準エージェントはなぜ長いコンテキストで失敗するか?

エージェントが大量の情報を蓄積すると——以前のメッセージ、ツールの結果、中間結果——それらがすべて一つのコンテキストウィンドウに収まることになる。モデルはコンテキストの初期部分にある関連する詳細を見落とし始め、指示を無視したり情報の優先順位を誤ったりする。128kトークンのタスクでは、テストにおいて標準エージェントが頻繁に完全に失敗する。

Alex ZhangとMIT CSAILの研究者が開発したRLMアプローチは、構造的な変更でこの問題を解決する。入力全体をコンテキストウィンドウに押し込む代わりに、モデルはREPL環境で入力を変数として読み込み、自分自身またはサブエージェントを——より小さく管理しやすい断片に対して——再帰的に呼び出す。

RLMオーケストレーションの仕組み

アプローチの核心は、軽量コードインタープリター(QuickJS)を通じたコードドリブンオーケストレーションだ。モデルはタスクを分解し、データのセグメントに対して再帰的な呼び出しを行うコードを書く。LangChainはこれを「dynamic subagents」——コードによってプログラム的にディスパッチされるサブエージェント——として実装している。

このアーキテクチャの主な利点は決定論的なカバレッジだ。コード内のループはすべての要素が処理されることを保証し、モデル自身が何を読むかを判断するアプローチとは異なる。パイプラインはタスクの要件に応じて分岐、並列化、または順次実行が可能だ。さらに、オーケストレーターとサブエージェント層で異なるモデルを混在させることで、高価なモデルを複雑なステップに、安価なモデルをルーティンに使うというコスト最適化が精密にできる。

ベンチマーク結果

LangChainはAgNewsデータセットのニュースを4カテゴリに分類するOOLONGベンチマークタスクを、異なるコンテキスト長でテストした。

コンテキスト長REPLなしREPLあり(RLM)
64kトークン0.580.67
128kトークン0.440.79

128kトークンでは、RLMエージェントが標準エージェントの0.44に対し0.79を達成——相対的に79%の改善だ。そのコンテキスト長では、標準エージェントが多くのケースで完全に失敗した。RLMエージェントは再帰的アプローチに固有のレイテンシが高まるにもかかわらず、高い精度を維持した。

インストールとコードサンプル

RLMサポート付きのDeepAgentsフレームワークのセットアップは1コマンドで行える。

pip install -U "deepagents[quickjs]"

エージェントの基本的な初期化:

from deepagents import create_deep_agent
from langchain_quickjs import CodeInterpreterMiddleware

agent = create_deep_agent(
    model="openai:gpt-5.5",
    middleware=[CodeInterpreterMiddleware()],
)

RLMオーケストレーションはプロンプトに「workflow」というキーワードを含めることで有効になり、エージェントにダイナミックなサブエージェントディスパッチを使用するよう指示する。フレームワークはレイヤー間でのモデル混在をサポートしており、ユーザーはオーケストレーターとサブエージェントに異なるLLMを指定できる。

このアプローチは既存のLangChainエコシステムツールと互換性があり、インフラの変更は不要だ——パッケージのアップグレードとエージェント初期化時のミドルウェアレイヤーの追加だけでよい。

よくある質問

Recursive Language Models(RLM)とは何で、なぜ有用か?
RLMはREPL環境で入力を変数として読み込み、より小さな断片に対して自分自身またはサブエージェントを再帰的に呼び出すモデルだ。一つのウィンドウにコンテキストが蓄積されすぎることでパフォーマンスが低下する「context rot」を避けることが目的だ。
RLMエージェントのインストールと有効化はどうするか?
`pip install -U 「deepagents[quickjs]」`でインストールし、`create_deep_agent`関数でエージェントを作成する際に`CodeInterpreterMiddleware`を渡すことでRLMオーケストレーションが有効になる。
コードドリブンオーケストレーションは標準のLLMエージェントと比べてどんな利点があるか?
コードはループを通じてすべての要素を決定論的にカバーすることを保証する。モデル自身が何を処理するか判断するアプローチとは異なる。パイプラインはタスクの要件に応じて分岐、並列化、または順次実行が可能で、オーケストレーターとサブエージェント層で異なるモデルを混在させることでコストを最適化できる。