LangChainとLangGraph 1.0リリース概要
(blog.langchain.com)LangChainとLangGraphの最初の主要な安定版である1.0リリースを発表します。LangChainはAIエージェントを迅速に開発するための高水準の抽象化を提供し、LangGraphはグラフベースのランタイムとして、カスタマイズ可能なプロダクション級エージェントを支援します。このリリースは安定性を重視しており、2.0バージョンまでは変更がない予定です。統合ドキュメントサイト(https://docs.langchain.com/)は新たにデザインされ、Uber、LinkedIn、Klarnaなどの大企業で実際に利用されています。月間9,000万ダウンロードを記録中です。
主な発表事項
LangChain 1.0とLangGraph 1.0は、コミュニティのフィードバックを反映した安定版としてリリースされました。LangChainはエージェントループを洗練させ、ミドルウェアによってカスタマイズ性を強化し、モデル統合を現代的なコンテンツ型に合わせてアップグレードしました。LangGraphは、長時間実行されるエージェントの永続性、可観測性、人間による介入制御のための耐久性あるランタイムを提供します。PythonとJavaScriptの両方をサポートし、後方互換性を保証します。
LangChain 1.0: 新機能と改善点
LangChain 1.0は、重い抽象化とパッケージ範囲の問題を解決し、エージェント開発を簡素化します。主な焦点はcreate_agent抽象化、標準コンテンツブロック、パッケージ簡素化です。
create_agent 抽象化
モデル提供者に関係なくエージェントを素早く構築できる中核機能であり、LangGraphを基盤として安定した実行を保証します。標準的なエージェントループは次のとおりです:
- 設定: モデル選択、ツール提供、プロンプト定義。
- 実行ループ:
- モデルにリクエスト送信。
- モデル応答: ツール呼び出し時は実行後に会話へ追加し、最終回答時は結果を返す。
- 1段階を繰り返す。
例コード:
from langchain.agents import create_agent
weather_agent = create_agent(
model="openai:gpt-5",
tools=[get_weather],
system_prompt="Help the user by fetching the weather in their city.",
)
result = agent.invoke({"role": "user", "what's the weather in SF?"})
ミドルウェア: エージェントループのさまざまな地点(モデル呼び出し前後、ツール実行など)にフックを追加してカスタマイズできます。組み込みミドルウェア:
- Human-in-the-loop: ツール呼び出し時に、ユーザー承認・編集・拒否のために中断し、外部システムへのアクセスや取引などのセンシティブな相互作用に有用。
- 要約(Summarization): メッセージ履歴を圧縮してコンテキスト制限を回避し、最近のメッセージを保持。
- PII Redaction: メールアドレス、電話番号などの機密データを識別してマスキングし、プライバシー遵守を支援。
カスタムミドルウェアもサポートします。
構造化出力の生成: エージェントループに統合されており、レイテンシとコストを削減します。Pydanticモデルなどで出力を制御できます。例:
from langchain.agents import create_agent
from langchain.agents.structured_output import ToolStrategy
from pydantic import BaseModel
class WeatherReport(BaseModel):
temperature: float
condition: str
agent = create_agent(
"openai:gpt-4o-mini",
tools=[weather_tool],
response_format=ToolStrategy(WeatherReport),
prompt="Help the user by fetching the weather in their city.",
)
従来のcreate_react_agentはLangGraphのlanggraph.prebuiltで非推奨になりました。
標準コンテンツブロック
langchain-core 1.0で昇格した機能で、モデル出力に対するプロバイダー中立の仕様を提供します。メッセージの.content_blocks属性を通じて、推論トレース、引用、ツール呼び出しなどのコンテンツ型を一貫して処理します。OpenAI、Anthropicなどの間で容易にモデルを切り替えられ、ストリーミング/UI/メモリストアとも互換性があります。
パッケージの簡素化
中核となる抽象化だけを維持し、レガシー機能はlangchain-classicへ移行しました。Python 3.9のサポートを終了し(3.10+が必要)、インストールはuv pip install --upgrade langchainおよびlangchain-classicです。移行ガイド: https://docs.langchain.com/oss/python/releases/langchain-v1.
LangGraph 1.0: 新機能と改善点
LangGraph 1.0は、高度にカスタマイズ可能なエージェント向けの低水準フレームワークであり、プロダクション環境における長時間実行システムに適しています。グラフベースの実行モデルを使用します。
コア機能
- 耐久性のある状態(Durable State): エージェント実行状態を自動的に永続化し、サーバー再起動時にも再開可能。
- 組み込み永続化: データベースコードなしでワークフローを保存・再開し、複数日にわたるプロセスやバックグラウンド作業を支援。
- Human-in-the-loopパターン: 実行を中断した後に人間がレビュー・修正・承認できるAPIを提供し、高リスクなシナリオに適する。
langgraph.prebuiltモジュールはlangchain.agentsへ移動しました。インストール: uv pip install --upgrade langgraph。移行時の互換性は維持されます。
概念説明: 状態保持エージェント、マルチエージェントワークフロー、LangChain統合
状態保持エージェント(Stateful Agents)
対話をまたいで持続的な状態を保持します。LangGraphのランタイムにより、会話履歴、ツール結果、ワークフロー進行状況を保存できます。LangChain 1.0では要約ミドルウェアによってコンテキスト制限を管理します。複数セッションにまたがるワークフロー(例: 数日にわたる承認プロセス)に有用です。
マルチエージェントワークフロー(Multi-Agent Workflows)
LangGraphのグラフモデルでマルチエージェントシステムを構成できます。決定論的ノード(固定ロジック)とエージェントコンポーネント(LLMベースの判断)を混在させられます。Human-in-the-loopによる監督も可能です。LangChainエージェントをグラフノードとして埋め込んで拡張できます。ビジネス自動化(データ検索、分析、承認)に適しています。
LangChainとの統合
LangChainは高水準の抽象化としてLangGraphランタイム上に構築されており、エージェントを耐久性あるものにします。グラフとして合成可能で、より複雑なシステムへ発展させられます。ベンダーロックインを回避できます。エンジニアリング詳細の動画: https://youtu.be/r5Z_gYZb4Ns.
利用事例
- LangChain 1.0: 天気クエリやツールベースのアシスタントのような標準パターンを素早くプロトタイピング。ミドルウェアでプライバシー保護チャットボットや人間承認付き取引エージェントを実装。
- LangGraph 1.0: 長期自動化(複数日にわたる承認)、センシティブなワークフローの人間監督、ハイブリッドシステム(エージェント + 決定論的ロジック)。UberやKlarnaのエンタープライズプロセス。
- 併用: LangChainから始めてLangGraphへ拡張し、マルチエージェントによるビジネス自動化を実現。
ドキュメントとリソース
統合ドキュメントサイト(https://docs.langchain.com/)には、直感的なナビゲーション、ガイド、チュートリアル、APIリファレンスが含まれます。コミュニティフィードバック: LangChainフォーラム(https://forum.langchain.com/)。ニュースレターも購読できます。
3件のコメント
お、1.0が出たんですね
1.0からはAPIが少し安定するようになるのでしょうか…。
またすぐに2.0が出て、migration guideを漁る羽目にならないといいですね。
LangChain自体の機能に不満はありませんが、後方互換性を壊されるのはいつも不安ですし、面倒でもあります
まあ……AI系は最初から組み直したほうが楽だったりするので、それはそういうものかと思うんですが、LLMが最新の文法をちゃんと分かっていないのがいちばん不満ですね(笑)(MCPみたいなものを使えばある程度は解決しますが)