deepagentsって何?その成り立ちと立ち位置を整理しました
今回は、deepagentsとは何か、について調べて説明しておきたいと思います。
deepagentsとは何か
deepagentsは、LangChain社が公開したAIエージェントによるシステムプリセットです。LangChain社が開発しているLangChainとLangGraphを使ってエージェントを組む際の一つのスタンダードになっています。オープンソースです。LangChani公式ではdeepagentsを 「エージェントハーネス(agent harness)」と呼んでいます。
https://github.com/langchain-ai/deepagents
ハーネスという言葉は曖昧性が高いので私は利用を避けていますが、私の理解では、deepagentsは、LangGraphとLangChainでエージェントシステムを作るためのベストプラクティスを提供するライブラリです。Pythonでは、FastAPIの作者がFastAPI + SQLAlchemy + PydanticのシステムのためにSQLModelを提供していますが、あの形式に似ていると思ってます。
LangChainやLangGraphとの関係
関連するライブラリとして以下があります。
- langchain-core
- langgraph
- langchain
- deepagents
langchain-coreが土台となるライブラリです。その上にlanggraphが構築されています。さらにそのlanggraphを活用していくためにlangchainパッケージが乗っています。さらにそれの特定ユースケースのベストプラクティスが deepagentsになっています。
なぜこの形になったか
次のような歴史があった、と認識しています。これはClaudeによる調査と私の記憶を突き合わせたものです。コミットログを確認するレベルの裏どりはしていませんのでご注意ください。
- 初期(2022-2023年):
- 状況
langchainという1つの巨大パッケージにすべてが入っていた。- Chain、Agent、Memory、Tool、ベクトルストア連携、各社モデル連携などなど。
- その結果、「依存が膨らみすぎる」「影響範囲がデカすぎる」などの批判を受けた
- 私の記憶
- 私の記憶では、この頃のLangChainはコミュニティのPRを非常にカジュアルに取り込んでいたように思います。
- どんどん肥大化していくコードを横目に不安も増していたように思います。
- 状況
- 分割(2023年末):
- 状況
langchainの依存が整理され、langchain-core、langchain、langchain-community、langchain-openaiなどの複数のパッケージに分割されました。- 特に、基本的な仕組みだけを
langchain-coreに切り離して、それを各種パッケージが参照する形式になりました。個別のプロジェクトでは必要なパッケージをインストールする流れになりました。
- 私の記憶
- この辺でアップデート対応をすると既存の仕組みが壊れて、依存の整理を考えるのが辛かった印象です。例えば、プロバイダー側の更新を取り込もうとするとプロバイダー用のパッケージ更新が必要となり、そのために
langchain-coreの更新が必要で、さらにそれを更新するとlangchainそのものも更新が必要になり、そうすると、インターフェースが変わり、など
- この辺でアップデート対応をすると既存の仕組みが壊れて、依存の整理を考えるのが辛かった印象です。例えば、プロバイダー側の更新を取り込もうとするとプロバイダー用のパッケージ更新が必要となり、そのために
- 状況
- LangGraphの誕生(2024年1月):
- 状況
- LangChainは、あくまでLLMの処理がChainしていく抽象表現だった。
- LangChainではエージェントのループ構造を含む状態遷移フローを表現しにくい
- そのため、
langchain-coreをベースにlanggraphが開発された。
- 私の記憶
- この辺りで私はLangChainからLlamaIndexメインに切り替えました。
- LangGraphは気になると思いつつ、チラ見していた程度
- 状況
- DeepAgents誕生(2025年夏頃):
- 状況
- LangGraphを使って、LangChain本体と別にエージェントのプリセットが作られた。
- LangChain社のCEOが週末に作った。
- 状況
- LangChain 1.0(2025年9月):
- 状況
- LangChain本体側がLangGraphを下敷きにして書き直された。
create_agentの実体がLangGraphグラフのコンストラクタになった。
- 状況
deepagentsの使い方
例えばdeepagentsを利用すると、次のように記述してエージェントを起動できます。
from deepagents import create_deep_agent
agent = create_deep_agent(
model="openai:gpt-5.5",
tools=[my_custom_tool],
system_prompt="You are a research assistant.",
)
result = agent.invoke({"messages": "Research LangGraph and write a summary"})
Code language: JavaScript (javascript)
deepagentsは、複雑かつ非決定的で長時間実行されるタスクを扱うエージェントのために用意されています。この状態で計画・コンテキスト管理・マルチエージェントオーケストレーションのための機能がプリセットされてた状態でエージェントを実行できます。永続実行・ストリーミング・human-in-the-loopなどの機能を実現するためにLangGraphランタイムを使っています。
LangChainとDeepAgents
調べていて思ったのですが、現時点では、langchain-core と langgraph の上に、LangChainとDeepAgentsが構築されています。LangChainとDeepAgentsはどちらもLangGraphの状態遷移フローをベースにしてエージェントを構築する方向性になっています。なので、扱っているレイヤーが似ています。
では何が違うか、というと次のような部分だと私は理解しています。
- LangChainは既に3年以上の歴史を持つプロダクトになっている。そして、多くの組織で使われているので、ダイナミックに責務を増やし続けるのは望ましいことではない。既存の導入組織を振り回すことになる。
- その一方で、ClaudeCodeのような複雑かつ長いタスクを実行するエージェントが主流になってきて、それをLangChain社のエコシステム上で再現したい機運もある。既存の導入組織への影響を切り離しながら、それを実現したのがDeepAgentsである。
また、LangGraphとの使い分けについて公式は次のように整理しています。
- 複雑で非決定的、かつ長時間実行されるタスクを処理する自律エージェントを作りたいときはDeep Agentsを使う。
- ステートフルで長時間動くワークフローやエージェントを低レベルで制御したいときはLangGraphを選ぶ。
- 素早く始めたいときや、チームでのエージェント構築パターンを標準化したいときはLangChainを選ぶ。
Use Deep Agents when you want to build an autonomous agent to handle complex, non-deterministic, and long running tasks.
Choose LangGraph when you want low-level control for building stateful, long-running workflows and agents.
Choose LangChain when you want a quick way to get started and to standardize how teams build agent patterns.
https://www.langchain.com/deep-agents
https://docs.langchain.com/oss/python/concepts/products
おまけ:CLIエージェントが同梱されている
Claude Codeのようにターミナルから使えるCLI版が同梱されています。1コマンドのインストールで起動できるようなので簡単に試してみたい場合は、これが試せます。