Deep Agents v0.5のリリース
本文の状態
日本語全文を表示中
詳細モードで約8分の本文を読めます。
同じ出来事の情報源
6媒体で確認
LangChain Blog · InfoQ · AWS Machine Learning Blog · TechCrunch AI · Simon Willison Blog · The Decoder
各社の報じ方を比較 ↓Deep Agentsチームは、非同期サブエージェントやマルチモーダルファイルシステム対応などを搭載した「deepagents」と「deepagentsjs」の新版を公開した。これにより、メインエージェントがブロックされずにバックグラウンドで遠隔エージェントに作業を委譲できるようになった。
Continue in AI NEW LAB
このニュースを、実務の判断につなげる
AI NEW LABで、試したことや先に確認したい条件を共有できます。まずはログインなしで読めます。
AI NEW LABで論点を見るSource Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
TL;DR: deepagentsとdeepagentsjsの新しいマイナーバージョンをリリースしました。非同期(非ブロッキング)サブエージェント、拡張されたマルチモーダルファイルシステムサポートなどを特徴とします。
image詳細は変更履歴をご覧ください。
非同期サブエージェント
Deep Agentsは、バックグラウンドで実行されるリモートエージェントに作業を委任できるようになりました。完了するまでメインエージェントをブロックする既存のインラインサブエージェントとは対照的に、非同期サブエージェントはタスクIDを即座に返し、リモートサーバー上で独立して実行されます。
詳細はDeep Agentsのドキュメントをご覧ください。
動機
インラインサブエージェントは、短く焦点を絞ったタスクには有効ですが、実行中はスーパーバイザーの実行ループをブロックします。数秒ではなく数分を要する作業(詳細な調査、大規模なコード分析、多段階のデータパイプラインなど)では、これがボトルネックとなります。サブエージェントが結果を返すまで、スーパーバイザーはユーザーに応答したり、他の作業を進めたりすることができません。ほとんどのエージェントとサブエージェントの寿命が短かった頃は、これはさほど問題ではありませんでした。しかし、扱えるタスクの長さが増すにつれ、ブロッキングはより深刻な問題となっていました。
非同期サブエージェントはこの制約を解消します。スーパーバイザーは複数のサブエージェントを並行して起動し、ユーザーとの対話を継続しながら、結果が得られ次第収集できます。インラインサブエージェントとは異なり、非同期サブエージェントはステートフルでもあります。つまり、対話をまたいで独自のスレッドを維持するため、スーパーバイザーはフォローアップの指示を送信したり、タスクの途中で軌道修正を行ったりできます。
これにより、異種デプロイメントへの道も開けます。軽量なオーケストレーターが、異なるハードウェア上で動作し、異なるモデルを使用し、独自のツールセットを保持する専門的なリモートエージェントに作業を委任できるようになるのです。
使用方法
subagentsパラメータが拡張され、リモートエージェントを指し示すAsyncSubAgent仕様を受け付けるようになりました:
from deepagents import AsyncSubAgent, create_deep_agent
agent = create_deep_agent(
model="anthropic:claude-sonnet-4-6",
subagents=[
AsyncSubAgent(
name="researcher",
description="Performs deep research on a topic.",
url="https://my-agent-server.dev",
graph_id="research_agent",
),
],
)AsyncSubAgent仕様は、既存のSubAgentおよびCompiledSubAgent仕様と自由に組み合わせることができます。create_deep_agentは、各仕様のタイプに基づいて適切なミドルウェアにルーティングします。
設定が完了すると、メインエージェントはバックグラウンド作業を管理するための5つのツールを利用できるようになります:
| ツール | 目的 |
|---|---|
start_async_task | リモートエージェントでタスクを起動します。即座にタスクIDを返します。 |
check_async_task | タスクのステータスをポーリングし、完了時に結果を取得します。 |
update_async_task | 実行中のタスクにフォローアップ指示を送信します。 |
cancel_async_task | 実行中のタスクをキャンセルします。 |
list_async_tasks | 現在のステータスを含む、追跡中の全タスクを一覧表示します。 |
インタラクションモデルはファイア・アンド・フォーゲットです。メインエージェントはタスクを起動し、作業を続行したりユーザーと対話したりしながら、必要に応じて結果を確認します。複数の非同期サブエージェントを同時に実行することも可能です。
サーバープロトコル
Agent Protocolを実装する任意のリモートエージェントは、非同期サブエージェントの有効なターゲットとなります。つまり、Deep Agentを任意のAgent Protocol準拠サーバーに向けることができます。これには、LangSmithでデプロイされたエージェント、サーバースタブを使用したカスタムFastAPIサービス、その他の実装などが含まれます。PythonおよびJS向けのDeep Agentsのサンプルサーバー実装を追加しました。
urlフィールドが省略された場合、Deep AgentsはASGIトランスポートを使用してサブエージェントと通信します。これにより、スーパーバイザーとサブエージェントを同じプロセス内で共同デプロイし、通信させることが可能になります。
デプロイメント設定、トレーシング、トラブルシューティング、リファレンス実装を含む完全なチュートリアルについては、非同期サブエージェントのドキュメントをご覧ください。
なぜAgent Protocolなのか
非同期サブエージェントには、デプロイ方法や場所に関わらず、あらゆるリモートエージェントが実装できる標準的なサーバープロトコルが必要です。Agent Protocolに決定する前に、他にどのような選択肢があるかを検討しました。
ACP (Agent Client Protocol) は、エディターとエージェント間の通信のために特別に構築されたプロトコルで、ツーリング分野での採用が広がりつつあります。ACPには、私たちのユースケースにおいて2つの問題があります。第一に、クライアントがプロンプトを送信して応答を待つ同期型セッションモデルを中心に設計されているため、非同期サブエージェントにうまく対応できません。第二に、現在サポートされているのはstdioトランスポートのみであり、リモートエージェントはローカルのサブプロセスとして実行する必要があります。HTTPサポートはロードマップにはありますが、まだリリースされていないため、ACPは現在のところリモートデプロイメントでは利用できません。
A2A (Agent-to-Agent Protocol) はより近い適合性を持ち、技術的にも互換性があります。完全なHTTPサポートとネイティブの非同期タスクモデルを備えています。これは強力なプロトコルであり、プッシュ/プルサブスクリプション、エージェントディスカバリー、機能ネゴシエーションなど、業界全体の広範なエージェント相互運用性の課題を解決するように設計されています。しかし、非同期サブエージェント自体がまだ進化段階にあるため、より迅速な反復を可能にするプロトコルを優先しました。A2Aのサポートは将来のリリースで追加される可能性があります。
Agent Protocolは、LangChainがLLMエージェントを提供するために策定したオープンな仕様であり、すでにLangGraph Platformの基盤となるプロトコルです。これが当てはまる理由はいくつかあります。
モデルがきれいに一致します。Agent Protocolはスレッドと実行を中心に構築されています。会話コンテキストを保持するスレッドを作成し、作業を開始する実行を起動し、結果が必要なときにその状況を確認します。これは、非同期サブエージェントの動作方法に直接対応します。また、サブエージェントが対話をまたいでステートフルであることも意味します。タスク途中で更新を送信すると、スレッドの履歴が保持されているため、リモートエージェントはコンテキストを引き継いで再開でき、ゼロから開始する必要がありません。
結果として、非同期タスクモデルに自然に適合し、マネージドとセルフホステッドの両方のデプロイメントで動作し、機能とともに進化するのに十分な機敏さを保ったプロトコルが実現します。
拡張されたマルチモーダルサポート
Deep Agentsは以前、仮想ファイルシステムから画像を読み取ることをサポートしていました。このリリースでは、マルチモーダルサポートをPDF、オーディオ、ビデオ、その他のファイルタイプに拡張します。エージェントは同じread_fileツールを使用します。APIの変更は必要ありません。ファイルタイプは拡張子から自動的に検出され、コンテンツは適切なMIMEタイプを持つネイティブコンテンツブロックとしてモデルに渡されます。詳細はDeep Agentsのドキュメントをご覧ください。
重要な点として、どのモダリティがサポートされるかは、基盤となるモデルに依存します。モデルプロファイルを通じて、プログラムでサポートされているモダリティを確認できます。各LangChainチャットモデルは、受け入れる入力タイプを宣言するプロファイルを公開しています。
最新バージョンを試す準備はできていますか?クイックスタートガイドにアクセスして、今すぐDeep Agentsを始めましょう。
原文を表示
TL;DR: We’ve released new minor versions of deepagents & deepagentsjs, featuring async (non-blocking) subagents, expanded multi-modal filesystem support, and more.
imageSee the changelog for details.
Async subagents
Deep Agents can now delegate work to remote agents that run in the background. As opposed to the existing inline subagents, which block the main agent until they complete, async subagents return a task ID immediately and execute independently on a remote server.
See the Deep Agents docs for more detail.
Motivation
Inline subagents are effective for short, focused tasks, but they block the supervisor's execution loop while they run. For work that takes minutes rather than seconds—deep research, large-scale code analysis, multi-step data pipelines—this becomes a bottleneck. The supervisor can't respond to the user or make progress on other work until the subagent returns. This was less of an issue when most agents and subagents were short-lived, but as the addressable task length has grown, blocking has become a more serious issue.
Async subagents remove this constraint. The supervisor can launch several subagents in parallel, continue a conversation with the user, and collect results as they become available. Unlike inline subagents, async subagents are also stateful: they maintain their own thread across interactions, so the supervisor can send follow-up instructions or course-correct mid-task.
This also opens the door to heterogeneous deployments, where a lightweight orchestrator delegates to specialized remote agents running on different hardware, using different models, or maintaining their own tool sets.
Usage
The subagents parameter has been widened to accept an AsyncSubAgent spec, which points to a remote agent:
from deepagents import AsyncSubAgent, create_deep_agent
agent = create_deep_agent(
model="anthropic:claude-sonnet-4-6",
subagents=[
AsyncSubAgent(
name="researcher",
description="Performs deep research on a topic.",
url="<https://my-agent-server.dev>",
graph_id="research_agent",
),
],
)
AsyncSubAgent specs can be mixed freely with the existing SubAgent and CompiledSubAgent specs—create_deep_agent routes each to the appropriate middleware based on its type.
Once configured, the main agent gains five tools for managing background work:
Tool
Purpose
start_async_task
Launch a task on a remote agent. Returns a task ID immediately.
check_async_task
Poll a task's status and retrieve its result when complete.
update_async_task
Send follow-up instructions to a running task.
cancel_async_task
Cancel a running task.
list_async_tasks
List all tracked tasks with their current statuses.
The interaction model is fire-and-forget: the main agent launches a task, continues working or talking to the user, and checks back for results when needed. Multiple async subagents can run concurrently.
Server protocol
Any remote agent that implements the Agent Protocol is a valid target for async subagents. This means you can point a Deep Agent at any Agent Protocol-compliant server, including any agent deployed with LangSmith, a custom FastAPI service using the server stubs, or any other implementation. We’ve added example server implementations for Deep Agents for Python and JS.
If the url field is omitted, Deep Agents will use ASGI transport to communicate with the sub-agent. This allows supervisor and sub-agents to be co-deployed and communicate in the same process.
For a complete walkthrough—including deployment configuration, tracing, troubleshooting, and a reference implementation—see the async subagents documentation.
Why Agent Protocol
Async subagents need a standard server protocol, one that any remote agent can implement regardless of how or where it’s deployed. Before landing on Agent Protocol, we looked at what other options were available.
ACP (Agent Client Protocol) is purpose built for editor-to-agent communication and has growing adoption in the tooling space. ACP has two problems for our use case. First, it's built around a synchronous session model where the client sends a prompt and waits for a response, which doesn't map cleanly to async subagents. Second, it currently only supports stdio transport, which means the remote agent has to run as a local subprocess. HTTP support is on the roadmap but hasn't shipped, so ACP isn't viable for remote deployments today.
A2A (Agent-to-Agent Protocol) is a closer fit and is technically compatible. It has full HTTP support and a native async task model. It’s a strong protocol and is designed to solve broad agent interoperability challenges across the industry covering things like push/pull subscriptions, agent discovery, and capability negotiation. However, since async subagents are still evolving, we prioritized a protocol that allows for faster iteration. Support for A2A may be added in a future release.
Agent Protocol is LangChain's own open specification for serving LLM agents and is already the protocol underlying LangGraph Platform. It fits well here for a few reasons.
The model lines up cleanly. Agent Protocol is built around threads and runs. You create a thread to hold conversation context, start a run to kick off work, and check on it when you need the result. That maps directly onto how async subagents work. It also means subagents are stateful across interactions. When you send a mid-task update, the remote agent picks up in context because the thread history is preserved, rather than starting from scratch.
The result is a protocol that fits the async task model naturally, works across managed and self-hosted deployments, and stays nimble enough to evolve alongside the feature.
Expanded multi-modal support
Deep Agents previously supported reading images from its virtual filesystem. This release extends multimodal support to PDFs, audio, video, and other file types. The agent uses the same read_file tool; no API change is required. File type is detected automatically from the extension, and the content is passed to the model as a native content block with the appropriate MIME type. See Deep Agents docs for details.
Importantly, which modalities are supported depends on the underlying model. You can check supported modalities programmatically via model profiles—each LangChain chat model exposes a profile that declares which input types it accepts.
Ready to try out the latest version? Head to the quickstart guide to get started with Deep Agents today.
同じ出来事を6媒体で確認
同じ出来事を扱う別媒体の記事です。見出しと公開時刻を比較できます。
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み