LangChainの最新ストリーミングプリミティブは、エージェントアプリケーションの構築方法を根本的に変革し、単純なトークンストリームから構造化イベントに基づく新しいアーキテクチャへと進化させます。現代のエージェントはテキストだけでなく、ツール呼び出し、サブエージェントアクティビティ、状態変更、人間による承認、マルチモーダルコンテンツを生成するため、1回のモデル呼び出しと1つのトークンストリームに依存する従来のAPIでは対応できません。最新のDeep Agents、LangChain、LangGraphストリーミングは、アプリケーションイベントを中心に設計されており、各イベントにはタイプがタグ付けされ、エージェントツリー内の発生元が示されます。アプリケーションはメッセージ、ツール呼び出し、サブエージェントステータスなどのプロジェクションを反復処理し、同じモデルがローカル実行、リモートスレッド、React/Vue/Svelte/Angular SDKをサポートします。さらに、実行可能なPythonおよびTypeScriptの例を含むストリーミングクックブックも公開されています。
新しいストリーミングプリミティブは4つのコアアイデアに基づいています。型付きイベント(生のチャンクではなく、作業の種類とエージェントツリー内の位置を示す)、プロジェクション(アプリケーションはレンダリングするビューを反復処理し、ランタイムがアセンブリ、順序付け、再接続を処理)、スコープ付きサブスクリプション(クライアントはレンダリングするチャネルとエージェントツリーの部分のみを要求するため、サブエージェントインスペクターがすべてのサブエージェントのトークンを取得する必要がない)、同じモデルをランタイム間で使用(ローカルグラフ実行、リモートスレッド、React/Vue/Svelte/Angularコンポーネントが同じプロトコルを使用し、下部にプロジェクション、上部にフックを配置)。
型付きイベントプロトコルは、不透明なストリームタプルではなく構造化イベントを提供します。チャネルはストリーミングされる関心事(メッセージ、グラフ状態、ツール実行ライフサイクル、ラン/サブグラフ/サブエージェントライフサイクル、チェックポイント、カスタムアプリケーション定義プロジェクション)を記述します。名前空間はイベントがエージェントツリー内のどこで発生したかを記述し、ルートグラフ、ネストされたサブグラフ、Deep Agentsサブエージェントが同一のチャネルタイプを発行しても識別性を失いません。この分離が重要な設計上の決定です。チャネルは再利用可能な関心事であり、名前空間はイベントを生成したラン部分を識別します。
プロジェクションはアプリケーション開発者が実際に望むAPIです。ほとんどのアプリケーションコードは生のプロトコルイベントを反復処理するのではなく、レンダリングしたいものを要求すべきです。astream_eventsメソッドを介して、ランオブジェクトは型付きプロジェクションを公開し、メッセージは型付きコンテンツブロック(テキスト、推論、ツール呼び出し引数、使用量データ)として到着します。これは最新のモデル出力にとって重要であり、推論は最終回答テキストとは異なる方法でレンダリングされ、ツール呼び出し引数は構造化データとして組み立てられる必要があります。
サブエージェントとサブグラフに関して、LangGraphは開発者がエージェントをグラフノード(ネストされたサブグラフを含む)として構造化することを可能にし、Deep Agentsはエージェントがサブエージェントに作業を委任する高レベル委任モデルを追加します。新しいプリミティブはサブグラフ(任意のネストグラフ実行)とサブエージェント(Deep Agentsタスク呼び出しによる委任)を区別します。どちらも軽量ハンドルとして到着し、ID、位置、ステータスを読み取ることができ、詳細なストリームはUIで要求された場合のみ転送されます。これにより、UIはエージェントの複雑さに応じてスケーリングされ、ダッシュボードは実行中のサブエージェントのリストを無料で表示し、選択されたサブエージェントに対してのみメッセージとツールストリームを開くことができます。
カスタムチャネルにより、アプリケーションは引用、進捗イベント、構造化計画、UI記述、メディアハンドルなどのドメイン固有プロジェクションを定義でき、ストリーミングトランスフォーマーがプロトコルイベントをフィルタリングし、派生アイテムを名前付きチャネルにプッシュします。フロントエンドでは拡張セレクターを介してサブスクライブします。クックブックには、エージェントがcustom:a2uiチャネルを介して宣言的UIメッセージを発行する生成UIの例が含まれており、Reactアプリがその拡張にサブスクライブしてライブインターフェースをレンダリングします。
マルチモーダルストリーミングはこのモデルの自然な拡張です。プロトコルはプレーン文字列ではなくコンテンツブロックを中心に設計されており、テキスト、推論、ツールアクティビティ、画像、オーディオ、ビデオ、カスタムデータがすべて同じストリーミングアーキテクチャ(型付きブロック、名前付きチャネル、名前空間、プロジェクション)に適合します。
新しいフレームワークSDK(@langchain/react、@langchain/vue、@langchain/svelte、@langchain/angular)は、各フレームワークのイディオムで同じストリーミング概念を公開します。コアメンタルモデルは共有されています。1つのルートフック(AngularのuseStreamまたはinjectStream)、セットアップ不要で利用可能なトップレベルプロジェクション(メッセージ、値、ツール呼び出し、割り込み)、スコープ付きサブスクリプションのためのコンポーネントレベルセレクター(useMessages、useToolCallsなど)。これにより、長時間実行エージェント、複雑なマルチエージェントUI、フロントエンド再接続などの本番シナリオが容易かつ堅牢になります。