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-corelangchainlangchain-communitylangchain-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-corelanggraph の上に、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コマンドのインストールで起動できるようなので簡単に試してみたい場合は、これが試せます。

類似投稿