RLM(再帰言語モデル):ツールを呼ぶのではなく、モデルが自分でコードを書いて自分を呼び出す

6分半の公式デモ。仕組み、俳句トーナメント、そして「使う価値があるのはどんな時か」を示す実測データを紹介します
著者:LangChain08-08 · 9 分で読了⚑ 製品アップデート
ツール解説・小互がよみとく
1分でわかる
  • RLM とは、モデルが「自分自身を呼び出す」能力を持つこと。メインのエージェントがコードを書いてサブエージェントを生み出し、コンテキストをモデルのウィンドウから変数やファイルへ移します。
  • 公式の実測によると、64k コンテキストでは有無の差はわずか。差が顕著になるのは 128k からです。
  • 代償も明記されています。レイテンシは高く、トークンも高コスト。その分、正確性と確実性が得られます。
⚑ 本文は、LangChain が公開した公式テック解説ビデオを元に解説しています。仕組みの説明と実測データはすべてこのビデオに基づきます。引用元を明記した補足情報は、ビデオ外の公開資料を参照しています。
01

RLM(再帰言語モデル)とは

平たく言えば、RLM は AI モデルに「自分自身を呼び出す」能力を持たせる仕組みです。

この定義だけだと聞き流してしまいがちなので、従来のやり方と並べてみると違いが明確になります。

従来のやり方

エージェントに超長いファイルを与えると、その中身をすべて一度に、限られたメモリ(コンテキストウィンドウ)へ詰め込んで分析しなければなりません。

結果として、前の方を覚えていると後ろを忘れたり、要約する段階で大量の詳細が失われたりします。

RLM のやり方

モデルのオーケストレーションのロジックはコードで書かれます。メインのエージェントが指揮官となり、コードを書いて複数のサブエージェントを生み出し、役割分担させます。これが divide and conquer です。

コンテキストや中間データの大半は変数やローカルファイルに置かれ、コンテキストウィンドウに無理やり詰め込むことはありません。

具体的な違いはこうです。モデルが「本を丸ごと暗記してから答える」必要はなく、「処理の流れを書いておいて、必要なページだけをめくる」ようになります。

TRADITIONAL コンテキストウィンドウ 飽和状態 · 要約で場所を確保 要約で情報が失われる RLM メインエージェント コードを書く 自分を呼び出す 変数 ファイル 変数 サブエージェント サブエージェント サブエージェント 分担処理 · 結果を回収
同じデータでも、一方は全てウィンドウに詰め込み、もう一方は変数とファイルに分けて必要な時に取り出す。本サイトが動画内容を基に作成した図。

動画では触れられていない背景:RLM という概念自体は LangChain が提唱したものではありません。Alex Zhang 氏が2025年10月に書いたブログが発端で、後に正式な論文(arXiv:2512.24601)が出ています。LangChain はこのパラダイムを自社の Agent フレームワークに組み込み、すぐ使えるようにしたという位置づけです。

この記事で解説するのは、LangChain のオープンソースエンジニア Sydney Runkle 氏による、6分36秒の公式テック解説ビデオです。テーマは Deep Agents で RLM を使う方法です。

LangChain 公式デモ全編(6分36秒)。本サイトにて日中バイリンガル字幕を収録。以下、この動画の内容を解説します。

02

RLM が解決する課題

RLM は主に3つの問題に取り組みます。最初の2つは Agent の長年の課題です。

1
長文・大規模データで機能不全に

従来の Agent は、何万行もあるファイルを扱う際、決定的に(行を漏らさず)処理することが困難です。一度読んで理解に基づいて答える方式は、データ量が増えると信頼性が低くなり、すべての行を本当に確認したとは言えません。

2
要約による情報の劣化

コンテキストウィンドウには限りがあります。長い対話が続けば、いずれ要約して場所を確保しなければなりません。しかし要約は情報を失います(lossy)。圧縮された部分に、まさに重要な行が含まれていないとも限りません。

3
ロジック制御の柔軟性不足

コード駆動になれば、ループ、並列ファンアウト、パイプラインといった複雑なロジック構造も、モデルは簡単に組み立てられます。コードで書けるオーケストレーションは、すべてこの仕組みでも実現可能です。

オーケストレーションをコードに委ねることで、2つのものが得られます。

  • 決定的なカバレッジ。コードがすべての行を処理することを保証し、漏れを防ぎます。これは大規模データの問題を扱う際に特に重要です。
  • カスタムオーケストレーション。仕事の進め方を自由に設計できます。コードレベルのプリミティブを使うからです。
03

Deep Agents で使う方法

Deep Agents は、LangChain が公開しているオープンソースのハーネス(フレームワーク骨格)で、複雑な実タスクをこなす汎用 Agent を構築するためのものです。ここで RLM を有効にする手順は2つだけです。

1
Code Interpreter を組み込む

メインのエージェントに、軽量なコード実行環境をマウントします。ここには設計上のトレードオフがあります。この環境は十分に軽量で、モデルがコードを書いて実行できる一方、巨大なサンドボックス全体を動かすほどの重さはありません。

2
task 関数でサブエージェントをスケジュール

メインのエージェントはコードを書き、組み込みの task 関数を呼び出してサブエージェントを起動・スケジュールし、処理後はメインのエージェントが結果を集約します。task 呼び出しの前後には他のコードも書けます。呼び出し前にはデータ準備、全呼び出し後には集約処理などが可能です。

始め方はとても簡単です。create deep agent プリミティブを使い、code interpreter middleware を渡せば、code mode が有効になります。

メインエージェントが書いたプログラム
1# まずデータ準備:普通のコード
2rows = load_dataset(...)
3chunks = split(rows, n=16)
4
5# サブエージェントに処理を任せる
6results = [task(c) for c in chunks]
7
8# 全部戻ってきたら集約:これも普通のコード
9answer = aggregate(results)
└─ サブエージェントサブエージェントサブエージェント → 結果は9行目に集約

ハイライトした2行が RLM の核心です。オーケストレーションはコードであり、task が唯一の分岐点。その前後は通常のコードです。イメージ図であり、動画の文言そのままではありません。

DEMO実演:16のサブエージェントが俳句トーナメント

デモ環境は decode です。LangChain が Deep Agents フレームワークをベースに作ったターミナル用エージェントで、コマンドラインで decode と打てば起動します。

RLM をトリガーするキーワードは workflow です。デモでの指示は「workflow を実行し、朝食の食べ物に関する俳句を16個作り、トーナメント方式で最優秀作品を選ぶ」というものでした。

次に起きたことは次の通りです。メインエージェントが16のサブエージェントを自動生成し、それぞれがすぐに俳句を書きました。そして、コード(JS eval ツールを呼び出す)を書いてラウンドごとに勝ち抜き戦を実施、ベスト16から準々決勝と進んでいきます。途中、コードの誤りをモデル自身が見つけて修正し、最後に優勝作品(ベリーに関する俳句)が決まりました。

このデモ自体は複雑ではありませんが、形を示しています。まず16個に並列ファンアウトし、トーナメント構造でラウンドごとに収束させる。これが「コードプリミティブで仕事を組織化する」ことの実際の姿です。

優勝 16のサブエージェントが各1首 ラウンドごとに対戦 · コード制御
メインエージェントがコードを書き、16のサブエージェントの成果を対戦表に並べ、ラウンドごとに収束させます。本サイトが動画内容を基に作成した図。
04

性能とベンチマーク比較

デモに加えて、公式の実測データがあります。使用したのは Oolongデータセット で、モデルの長いコンテキスト推論とデータ集約能力を試すためのベンチマークです。

SETUPテスト設計

Oolong の AgNews 部分を使用しています。数千行の大きなテーブルで、各行には日付、ユーザー名、そしてラベルなしのニュース見出しが含まれています。

タスクは2段階です。まずモデルに見出しごとに分類を行わせます。選択肢は4つ、world(世界)、sports(スポーツ)、sci/tech(科学/技術)、business(ビジネス)です。次に、このデータに関する分布的な質問をします。

質問は難易度別に3段階あります。

難易度タイプ例
最も簡単カウント全見出しの中で、最も少ないラベルはどれか
中程度フィルタリング後のカウント特定のユーザー名の下に、科学/技術の見出しがいくつあるか
最も難しい時間推論2004年8月より前、スポーツの見出しは世界の見出しより多かったか

難しいのはデータ量です。数千行をモデルに一度に与え、分類・集約・推論をさせるのは、RLM か何らかのコードサポートがなければ、ほぼ不可能です。

RESULT2つのコンテキスト長で結果が大きく異なる

比較したのは、Code Interpreterなしの通常のDeep Agentと、Code Interpreterを有効にしたRLMバージョンです。

64k
コンテキスト長
通常版
RLM 版

両者の差はわずかで、ほぼ互角。この帯域では RLM を導入しても明確な利点は見えません。

128k
コンテキスト長
通常版
RLM 版

RLM 版の優位性は顕著。通常版は広範囲で回答不能に陥ります。

バーの長さは傾向を示すイメージです。動画ではグラフの傾向のみ示され、具体的なスコアは非公開でした。

さらに注目すべきは通常の Agent がどこで負けたかです。128k の帯域では、回答に「正確に答えることができません」「計算がブロックされました」といったものが多数見られました。モデルは過大な情報量に圧倒され、回答を放棄してしまったのです。一方、RLM 版はコードのロジックに従ってタスクを分解し、正しい答えを計算できました。

ここから、コンテキストがさらに長くなるか、問題が難しくなれば、RLM 版がさらに差を広げるだろうと推測できます。

TRADE-OFF代償:遅く、高コスト

代償も動画内で明示されています。RLMモードはレイテンシが明確に高く、消費トークンも増加します。その代わりに得られるのは、正確性と確実性です。

ただし、この領域には最適化の余地が残されています。講演者によれば、さらにチューニングすれば、例えば特定の問題の処理方法を説明するスキル(skills)を設計することで、トークン使用量とコストを大幅に削減できるといいます。

05

核心的な価値のまとめ

1
コンテキストのボトルネックを突破

巨大なコンテキストウィンドウに頼るのではなく、「コード+サブエージェントによるdivide and conquer」で大量データを処理します。コンテキストは変数とファイルに格納され、必要な部分だけを取り出します。

2
「確率的な推測」から「決定的な計算」へ

複雑で大規模な分類、統計、論理推論を、モデルの理解に基づく大まかな回答ではなく、プログラムが厳密に実行します。これにより、Agentは複雑で現実的なビジネスシナリオでの実用性が大幅に向上します。

「自分が導入すべきかどうか」という問いに対する最も実用的な答えが、この実測の境界線です。データ量がコンテキストを圧迫するほどでなければ、導入しても効果は見えず、レイテンシとコストの無駄になります。128k 規模になるか、タスク自体が行を漏らさないことを要求する場合にこそ、その価値が発揮されます。

✅ 導入判断チェックリスト

動画で明かされなかった情報:実験で使用したモデルは最後まで明かされておらず、これは結論を自分のシナリオに適用できるかどうかに直接影響します。レイテンシとコストは定性的な説明のみで、倍率は不明。正確性もグラフの傾向のみで具体的なスコアは非公開。task 関数のシグネチャとサブエージェントの設定方法は詳述されていません。また、デモでのモデルの自己修正が常態なのか偶発的なのかも明示されていません。

出典
How to use RLMs in Deep AgentsLangChain·公式ビデオ
本サイト注記
仕組みの説明、デモの流れ、実測データはすべて上記ビデオに基づきます。RLM の概念の出典(Alex Zhang 氏の2025年10月ブログとその後の論文 arXiv:2512.24601)は本サイトの補足であり、動画内では触れられていません。動画では、実験に使ったモデル、レイテンシとコストの具体的な倍率、正確性の具体的なスコアは非公開でした。図版はすべて、本サイトが動画内容を基に作成したものです。
↑ 本文ここまで
✓ この記事は全文無料です

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

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

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