LangChain 1.0が2025年10月に正式リリースされました。
今回のアップデートは「単なるメジャーアップデート」ではなく、LangGraph統合によるアーキテクチャの再定義と、エージェント設計の完全リニューアルを特徴としています。
この記事では、
- 旧バージョンとの違い
- 新API
create_agentの使い方 - Middleware・Structured Outputのしくみ
- Content Blocksによる観測可能性強化
をコード付きで解説します。
1. LangChain 1.0の全体像
新構成(Namespace再編)
LangChain v1ではモジュール構成が整理されました:
| モジュール | 機能 | 備考 |
|---|---|---|
langchain.agents |
create_agent, AgentState
|
標準エージェント構築API |
langchain.messages |
content_blocks など |
新メッセージ形式 |
langchain.tools |
@tool, BaseTool
|
ツール登録を統一 |
langchain.chat_models |
統一的モデル初期化 | init_chat_model() |
langchain-classic |
旧Chain機能 | 段階的互換性維持 |
これにより、旧来のRAGやChainベースの構築もlangchain-classicを通じて継続利用できます。
2. create_agent:新しい基本構文
LangChain 1.0の核となるAPIは create_agent() です。
従来のinitialize_agent()を置き換え、LangGraphを内部的に利用して状態管理・ループ実行・エラー再送をネイティブにサポートします。
from langchain.agents import create_agent
agent = create_agent(
model="anthropic:claude-sonnet-4-5",
tools=[search_web, send_email],
system_prompt="あなたは研究支援に特化したAIアシスタントです。"
)
result = agent.invoke({
"messages": [{"role": "user", "content": "LangChain 1.0の特徴を紹介して"}]
})
print(result["output"])
LangGraphによる「ステップ実行」や「中断・再開」も、ユーザコードで特別対応が不要です。
3. Middleware:実行フローの横断制御
新しく追加されたMiddleware機構は、リクエスト前後の横断的制御レイヤーです。
これにより「監査ログ」「要約」「情報マスキング」といった機能を簡単に注入可能です。
from langchain.agents.middleware import PIIMiddleware, SummarizationMiddleware
agent = create_agent(
model="openai:gpt-4o-mini",
tools=[read_email, send_email],
middleware=[
PIIMiddleware(patterns=["email", "電話番号"]),
SummarizationMiddleware(max_tokens_before_summary=300)
]
)
複雑な業務アプリでも、ガバナンスを担保した形でLangChainを運用できます。
4. Structured Output:型安全な応答構築
従来の「文字列→JSONパース」処理に代わり、LangChain 1.0ではPydanticモデルへの直接マッピングが可能になりました。
from pydantic import BaseModel
from langchain.agents import create_agent
from langchain.agents.structured_output import ToolStrategy
class Weather(BaseModel):
temperature: int
condition: str
def weather_tool(city: str):
return f"{city}は晴れ、25℃です"
agent = create_agent(
model="openai:gpt-4o-mini",
tools=[weather_tool],
response_format=ToolStrategy(Weather)
)
result = agent.invoke({"messages": [{"role": "user", "content": "東京の天気は?"}]})
print(result["structured_response"])
出力結果:
Weather(temperature=25, condition='晴れ')
この設計で出力の安定性・LLMコスト最適化・テスト容易性が大幅に向上します。
5. Content Blocks:マルチLLM時代の共通形式
LangChain 1.0では、OpenAI・Anthropic・Geminiなど各社の異なる出力構造を統一的に扱えるcontent_blocksが導入されています。
from langchain_anthropic import ChatAnthropic
model = ChatAnthropic(model="claude-sonnet-4-5")
res = model.invoke("フランスの首都は?")
for block in res.content_blocks:
if block["type"] == "reasoning":
print("推論:", block["reasoning"])
elif block["type"] == "text":
print("回答:", block["text"])
これにより、生成・推論・ツール呼び出しの可視化が容易になり、エンタープライズ開発での「監査・分析」が現実的になりました。
6. 実例:RAG × LangChain 1.0 (シンプル構成)
Qiita上でも複数の事例が報告されており、v1.0でも既存RAGをほぼ変更なしで動作可能です。[1]
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Chroma
from langchain.embeddings import init_embeddings
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search_docs(query: str) -> str:
return vector_store.similarity_search(query, k=3)
vector_store = Chroma.from_documents(
TextLoader("./data/documents").load(),
embedding=init_embeddings("openai:text-embedding-3-small")
)
agent = create_agent(
model="openai:gpt-4o-mini",
tools=[search_docs]
)
agent.invoke({"messages": [{"role": "user", "content": "LangGraphとは何か?"}]})
実際、このコードでLangGraphを透過的に利用した耐久エージェント実行が可能です。
7. LangGraphとの統合:Durable Agentの実現
LangChain 1.0の裏側ではLangGraphが状態管理・再実行・永続化を担当します。
これにより、AutoGPTや長期チャットボットの開発が正式サポートされました。
LangGraphは「オーケストレーション層(低レベル)」、LangChainは「構築層(高レベル)」として明確に役割分担されています。
まとめ:LangChain 1.0は“実践フェーズ”へ
| 観点 | 旧バージョン | 1.0以降 |
|---|---|---|
| 開発対象 | チェーン/RAG中心 | エージェント中心 |
| 内部実装 | 単一実行 | LangGraphによる耐久実行 |
| 出力形式 | テキスト中心 | Structured Output + Content Blocks |
| 安全性 | 手動制御 | Middlewareで自動対応 |
LangChain 1.0は「プロトタイピング用フレームワーク」から「耐久エージェント基盤」へと進化しました。
AIアプリを本番運用するうえで、LangGraph × LangChainの組み合わせが今後の標準構成になると考えられます。