確認日:2026年9月24日。LangChain の公式ドキュメント(docs.langchain.com)、公式ブログ、PyPI、GitHub で確認し、検索(Retrieval)のサンプルは筆者の Mac(Python 3.12、langchain 1.4.2)で実行しました。この記事は2025年1月に公開した「【初心者向け】LangChainの基本を徹底解説」を、LangChain 1.x に合わせて全面的に書き直したものです。
はじめに:LangChain は「エージェントを作る土台」になった
LangChain(ラングチェーン)は、ChatGPT や Claude のような大規模言語モデル(LLM)を使ったアプリを作るための、Python と JavaScript の部品集(フレームワーク)です。
2025年10月にバージョン 1.0 が出て、考え方が大きく変わりました。以前は「Chain(処理のつながり)を組み立てる道具」でしたが、今は「AI エージェント(自分で道具を選んで作業を進める AI)を作る土台」として整理されています。
この記事では、これから LangChain を学ぶ方に向けて、次のことを順番に説明します。
- LangChain とは何か、1.0 で何が変わったか
- LangGraph・Deep Agents・LangSmith との関係
- インストール方法と、約15行で動く最小のエージェント
- 会話の記憶・ミドルウェア・MCP など、次に覚えたい機能
- RAG(検索して答える仕組み)での位置づけと、小さなサンプル
- LangChain を使うべき場面と、使わなくてよい場面
先に結論:旧記事で紹介した
LLMChainやRetrievalQA、langchain.memoryなどは、1.x のlangchainパッケージにはもうありません(別パッケージlangchain-classicに移りました)。今から始めるならcreate_agentから覚えるのが近道です。
LangChain とは:モデル+ハーネスでエージェントを作る
公式ドキュメントは、LangChain を「Agent = Model + Harness(エージェント=モデル+ハーネス)」という式で説明しています。
- モデル:Claude や GPT、Gemini などの LLM そのもの
- ハーネス:モデルの周りを囲む仕組み。指示文(プロンプト)、使える道具(ツール)、動きを調整する部品(ミドルウェア)など
LangChain は、このハーネスを作るための関数 create_agent を中心に作られています。必要な部品だけを足していく、という設計です。ハーネスという考え方そのものは AI エージェントの「ハーネス」を実際に作るときの留意点 でも解説しています。
基本情報(2026年9月24日時点)
| 項目 | 内容 |
|---|---|
| 開発元 | LangChain 社(オープンソース) |
| ライセンス | MIT(商用利用も可能) |
| 対応言語 | Python と JavaScript/TypeScript(この記事は Python 版) |
| 最新版 | langchain 1.4.2(2026年9月公開) |
| 必要な Python | 3.10 以上 |
| 対応するモデル | OpenAI、Anthropic、Google、AWS、Azure、Ollama など多数 |
一番の利点は、モデルの会社が変わっても同じ書き方で使えることです。たとえば Claude から GPT に切り替えるとき、書き換えるのはモデル名の1行だけで済みます。
1.0 で何が変わったのか
LangChain は2022年10月に最初の版が公開され、0.1(2024年1月)、0.2(2024年5月)、0.3(2024年9月)と改良されてきました。そして2025年10月、LangGraph と同時に 1.0 になりました。公式ブログは「2.0 までは互換性を壊す変更をしない」と約束しています(公式ブログ:LangChain and LangGraph 1.0)。
1.0 の主な変更点
| 変更点 | 内容 |
|---|---|
create_agent | エージェントを作る標準の方法。LangGraph の create_react_agent の後継 |
| ミドルウェア | エージェントの各ステップの前後に処理を差し込める仕組み。要約・承認・個人情報の伏せ字など |
| 標準コンテンツブロック | content_blocks で、推論の過程や引用などを、モデルの会社に関係なく同じ形で取り出せる |
| パッケージの整理 | 古い Chain や Retriever などは langchain-classic に移動 |
| Python 3.9 の終了 | すべてのパッケージが Python 3.10 以上に |
その後も機能追加が続いていて、2026年9月公開の 1.4.0 では、MCP(AI に外部の道具をつなぐ共通の規格)を扱う langchain.mcp が追加されました(ベータ版)。
旧記事の用語は今どうなったか
旧記事では LangChain の基本要素として Chain・Memory・Retrieval・Agent・Tool の5つを紹介しました。1.x での対応は次のとおりです。
| 旧記事の用語 | 1.x での考え方 |
|---|---|
| Chain(チェーン) | 中心ではなくなった。旧来の Chain は langchain-classic へ。処理の流れを細かく決めたいときは LangGraph を使う |
| Memory(メモリ) | create_agent に checkpointer を渡すと、会話の履歴を覚えられる |
| Retrieval(リトリーバル) | 今も重要。検索を「道具」としてエージェントに渡す使い方が増えた |
| Agent(エージェント) | create_agent 1つで作れるようになった |
| Tool(ツール) | ふつうの Python 関数を渡すだけで道具になる。@tool で説明を付けることもできる |
なお、旧記事のサンプルコードは OpenAI のライブラリを直接呼び出していて、実は LangChain を使っていませんでした。この記事では、すべて LangChain の公式ドキュメントに沿ったコードに置き換えています。
LangChain・LangGraph・Deep Agents・LangSmith の関係
LangChain 社は、名前の似た製品をいくつも出しています。初心者がいちばん迷うところなので、先に整理しておきましょう。
| 名前 | 役割 | たとえると | 料金 |
|---|---|---|---|
| LangChain | エージェントを作るフレームワーク。モデルや道具を共通の書き方で扱える | 組み立てキット | 無料(MIT) |
| LangGraph | 処理の流れを細かく制御する土台(ランタイム)。途中保存・再開、人の承認などを担う | 家の基礎と配線 | 無料(MIT) |
| Deep Agents | 計画・ファイル操作・サブエージェントなどが最初から入ったエージェント | 家具付きの家 | 無料(MIT) |
| LangSmith | 動きの記録(トレース)・評価・デプロイのためのサービス | 点検と記録の窓口 | 無料枠あり・有料プランあり |
積み重なり方は、LangGraph の上に LangChain があり、LangChain のエージェントの上に Deep Agents がある、という関係です。実際、create_agent が返すのは LangGraph のグラフ(CompiledStateGraph)で、「モデルを呼ぶ」「道具を使う」という2つの処理のあいだを行き来する形になっています(筆者の環境で確認)。LangSmith は、この3つのどれで作ったエージェントにも使える別サービスです。
どれから始めればいい?
公式ドキュメント(Runtimes, frameworks, and harnesses)の説明をまとめると、次のようになります。
| こんなとき | 選ぶもの |
|---|---|
| まずはエージェントを手早く作りたい。チームの書き方をそろえたい | LangChain(create_agent) |
| 長い作業を途中で止めて再開したい。決まった手順と AI の判断を組み合わせたい | LangGraph |
| 調べ物や資料作りのような、長くて複雑な作業を任せたい | Deep Agents(create_deep_agent) |
| 動きを記録して、失敗の原因を調べたり品質を測ったりしたい | LangSmith(上のどれとも併用できる) |
公式の概要ページは「機能が一通りそろったエージェントがほしいなら Deep Agents から」と勧めています。一方で、中身を理解しながら学ぶなら、部品の少ない create_agent から始めるほうが分かりやすいでしょう。LangGraph は LangChain がなくても使えますが、公式ドキュメントも、最初は LangChain のエージェントから始めることを勧めています。
インストール方法
ここでは Claude(Anthropic)を使う例で説明します。手順は次のとおりです。
- Python 3.10 以上を用意する(公式のクイックスタートは 3.11 以上を前提にしています)
- 作業用のフォルダで仮想環境を作る
- LangChain と、使うモデル会社用の追加パッケージを入れる
- API キーを環境変数に設定する
python3 -m venv .venv
source .venv/bin/activate
pip install -U langchain "langchain[anthropic]"
export ANTHROPIC_API_KEY="取得したAPIキー"
langchain[anthropic] と書くと、Anthropic 用の連携パッケージ langchain-anthropic も一緒に入ります。OpenAI を使うなら langchain-openai、Gemini なら langchain-google-genai のように、モデル会社ごとに別のパッケージになっています。なお、langchain を入れると LangGraph も自動で入ります。
高速なパッケージ管理ツール uv を使う場合は、uv add langchain で入れられます。API キーは Claude Console で作成できます。
最小の実行例:道具を使うエージェントを作る
公式ドキュメントのクイックスタートにある例です。「天気を調べる道具」を持ったエージェントを作り、サンフランシスコの天気を聞きます。
from langchain.agents import create_agent
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
agent = create_agent(
model="claude-sonnet-4-6",
tools=[get_weather],
system_prompt="You are a helpful assistant",
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]}
)
print(result["messages"][-1].content_blocks)
コードの読み方
| 部分 | 意味 |
|---|---|
get_weather | エージェントに渡す道具。ふつうの Python 関数で、説明文(docstring)がモデルへの説明書になる |
model | 使うモデル。claude-sonnet-4-6 のように名前を書くだけで、Anthropic のモデルだと判断される |
tools | エージェントが使ってよい道具の一覧 |
system_prompt | エージェントの役割を決める指示文 |
agent.invoke(...) | メッセージを渡して実行する |
content_blocks | 最後の返事を、モデルの会社に関係なく同じ形で取り出す |
中で何が起きているか
- モデルが質問を読み、「天気を調べる道具を使うべきだ」と判断する
- LangChain が
get_weather("San Francisco")を実行する - 道具の結果をモデルに返す
- モデルがもう道具は要らないと判断したら、最終的な答えを返して終わる
この「モデルを呼ぶ → 道具を使う → またモデルを呼ぶ」の繰り返しが、エージェントの基本の動きです。道具の関数を自分の業務用のもの(社内データベースの検索など)に置き換えれば、実用的なエージェントになります。
モデルを変えるには
model の文字列を変えるだけです。公式ドキュメントでは、OpenAI なら "openai:gpt-5.5"、Gemini なら "google_genai:gemini-2.5-flash-lite" のように「会社名:モデル名」で書く例が載っています。
モデル名についての注意:公式クイックスタートの Claude の例は
claude-sonnet-4-6です。Anthropic の公式モデル一覧では、2026年9月24日時点で Claude Sonnet 4.6 は「旧モデル(引き続き利用可)」の扱いで、最新の Sonnet はclaude-sonnet-5です。同じ LangChain の公式ドキュメントでも、ページによってはanthropic:claude-sonnet-5が使われています。筆者の環境には API キーを設定していないため、Claude を実際に呼び出すところまでは試していません(エージェントが組み立てられることは確認しました)。
次に覚えたい3つの機能
1. 会話を覚える(短期記憶)
create_agent に checkpointer(会話の状態を保存する係)を渡し、実行時に thread_id(会話の番号)を指定すると、同じ会話の中で前の発言を覚えてくれます。公式ドキュメントの例です。
from langchain.agents import create_agent
from langgraph.checkpoint.memory import InMemorySaver
def get_user_info() -> str:
"""Look up information about the current user."""
return "No user profile on file."
agent = create_agent(
model="anthropic:claude-sonnet-5",
tools=[get_user_info],
checkpointer=InMemorySaver(),
)
thread_config = {"configurable": {"thread_id": "1"}}
response = agent.invoke(
{"messages": [{"role": "user", "content": "Hi! My name is Bob."}]},
thread_config,
)["messages"][-1].content
print(response)
response = agent.invoke(
{"messages": [{"role": "user", "content": "What's my name?"}]},
thread_config,
)["messages"][-1].content
print(response)
2回目の質問で「Bob」と答えられるのは、同じ thread_id の履歴が保存されているからです。InMemorySaver はメモリ上に保存するだけなので、プログラムを終了すると消えます。公式ドキュメントも、本番ではデータベースに保存する checkpointer を使うよう案内しています(Short-term memory)。
2. ミドルウェアで動きを調整する
ミドルウェアは、エージェントの各ステップの前後に処理を差し込む仕組みで、1.0 の目玉機能です。よく使うものは最初から用意されています。
| ミドルウェア | できること |
|---|---|
SummarizationMiddleware | 会話が長くなったら、古い部分を要約して短くする |
HumanInTheLoopMiddleware | メール送信など、特定の道具を使う前に人の承認を求める |
PIIMiddleware | メールアドレスなどの個人情報を、モデルに送る前に伏せ字にする |
ModelCallLimitMiddleware | モデルを呼び出す回数に上限を付ける |
ModelFallbackMiddleware | モデルが失敗したとき、別のモデルに切り替える |
使い方は、create_agent(..., middleware=[...]) のように並べて渡すだけです。一覧は Built-in middleware にあります。
3. MCP で外部の道具をつなぐ
MCP(Model Context Protocol)は、AI に外部のサービスや道具をつなぐための共通の規格です。LangChain 1.4.0 からは langchain.mcp の MCPAdapter で、MCP サーバーの道具をそのままエージェントに渡せます。まだベータ版なので、使い方が変わる可能性があります。
pip install "langchain[mcp]"
MCP そのものの考え方は MCP で Claude に「外の道具」をつなぐ実践ガイド で解説しています。
RAG での LangChain の位置づけ
RAG(ラグ、検索拡張生成)は、質問に関係する資料を先に探して AI に渡し、それをもとに答えてもらう仕組みです。旧記事でも Retrieval として紹介しましたが、LangChain でも今も重要な使い方の1つです。RAG の考え方そのものは RAG 入門 で詳しく解説しています。
LangChain が用意している部品
| 部品 | 役割 |
|---|---|
| Document loaders | PDF・Google ドライブ・Slack・Notion などから文書を読み込む |
| Text splitters | 長い文書を検索しやすい大きさ(チャンク)に分ける |
| Embedding models | 文章を、意味を表す数値の並び(ベクトル)に変換する |
| Vector stores | ベクトルを保存して、意味の近いものを検索する |
| Retrievers | 質問を受け取り、関係する文書を返す窓口 |
どの部品も差し替えられるのが LangChain の強みです。たとえば、試作ではメモリ上の InMemoryVectorStore を使い、本番では Chroma や PostgreSQL などに切り替える、といったことが少ない書き換えでできます。
2つの作り方
公式ドキュメント(Retrieval。現在は Deep Agents の章に置かれています)は、RAG の作り方を大きく2つに分けています。
| 作り方 | 流れ | 向いている用途 |
|---|---|---|
| 2-Step RAG | 必ず先に検索してから、答えを作る。動きが予測しやすく速い | よくある質問への回答、マニュアルの Q&A |
| Agentic RAG | エージェントが「いつ・何を検索するか」を自分で決める。柔軟だが時間は読みにくい | 複数の道具を使う調べ物 |
公式ドキュメントには、両方の特徴を組み合わせて検証の手順を加えた「Hybrid」という形も載っています。また、すでに社内のデータベースや検索システムがあるなら作り直す必要はなく、それを道具としてエージェントに渡せばよいとも書かれています。
小さなサンプル:社内ルールを検索して答えるエージェント
公式チュートリアル(Build a semantic search engine)の部品を組み合わせた、Agentic RAG の最小例です。ベクトル化には、無料で手元で動く多言語対応の公開モデル multilingual-e5-small を使います。
pip install -U langchain "langchain[anthropic]" langchain-huggingface sentence-transformers
from langchain.agents import create_agent
from langchain.tools import tool
from langchain_core.documents import Document
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_huggingface import HuggingFaceEmbeddings
# 1. 社内ルール(例)を Document にする
docs = [
Document(page_content="経費精算は、使った月の翌月10日までに申請してください。", metadata={"source": "経費精算ルール"}),
Document(page_content="リモートワークは週3日まで。事前に上長の承認が必要です。", metadata={"source": "リモートワーク規程"}),
Document(page_content="貸与PCに私物のUSBメモリを差し込むことは禁止です。", metadata={"source": "PC貸与ルール"}),
]
# 2. ベクトル化して、メモリ上のベクトルストアに入れる
embeddings = HuggingFaceEmbeddings(model_name="intfloat/multilingual-e5-small")
vector_store = InMemoryVectorStore(embeddings)
vector_store.add_documents(documents=docs)
# 3. 検索を「道具(ツール)」にする
@tool
def search_rules(query: str) -> str:
"""社内ルールを検索して、関係する文章を返す。"""
results = vector_store.similarity_search(query, k=2)
return "\n".join(f"[{d.metadata['source']}] {d.page_content}" for d in results)
# 4. 道具を持ったエージェントを作る
agent = create_agent(
model="claude-sonnet-4-6",
tools=[search_rules],
system_prompt="社内ルールの質問には search_rules で調べ、出典名を添えて日本語で答えてください。",
)
if __name__ == "__main__":
result = agent.invoke(
{"messages": [{"role": "user", "content": "在宅勤務は週に何日までできますか?"}]}
)
print(result["messages"][-1].content_blocks)
検索部分(search_rules)だけを筆者の Mac で実行したところ、3つの質問すべてで正しい規程が1位になりました。
| 質問 | 1位に出た文書 |
|---|---|
| 在宅勤務は週に何日までできますか? | リモートワーク規程 |
| 経費の申請期限は? | 経費精算ルール |
| USBメモリを使ってもいい? | PC貸与ルール |
「在宅勤務」という言葉は資料にありませんが、意味が近い「リモートワーク」の文書が見つかっています。これがベクトル検索の強みです。最後の agent.invoke() で Claude を呼び出す部分は、API キーがないため実行していません。
RAG の精度を測る方法は RAGAS × FastAPI × Next.js × Docker で学ぶ Web アプリ開発入門 で、評価の道具 RAGAS を動かしながら紹介しています。
LangSmith で動きを確かめる
エージェントは、モデルが何を考え、どの道具をどの順で使ったかが外から見えにくいのが難点です。LangSmith を使うと、1回の実行の中身(トレース)を画面で確認できます。LangChain で作ったアプリなら、環境変数を2つ設定するだけで記録が始まります。
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="LangSmithのAPIキー"
API キーは smith.langchain.com でアカウントを作って発行します(クレジットカードは不要と案内されています)。LangSmith は LangChain 以外のフレームワークや、OpenAI・Anthropic の SDK を直接使ったアプリにも対応しています。
LangSmith の料金(2026年9月24日時点)
| プラン | 料金 | 主な内容 |
|---|---|---|
| Developer | 0ドル | 1人まで。月5,000件の基本トレースまで無料、超えたら従量課金 |
| Plus | 1人あたり月39ドル | 人数の上限なし。月10,000件の基本トレースまで含む |
| Enterprise | 個別見積もり | 自社環境での運用などに対応 |
出典:LangChain 公式の料金ページ。料金は変わることがあるので、使う前に公式ページを確認してください。LangChain・LangGraph・Deep Agents 自体はオープンソースなので無料で使えます(モデルの API 利用料は別にかかります)。
LangChain を使うべき場面・使わなくてよい場面
LangChain は便利ですが、どんな場合にも必要なわけではありません。目安は次のとおりです。
| 状況 | おすすめ |
|---|---|
| モデルに1回質問して答えを受け取るだけ | モデル会社の SDK を直接使えば十分 |
| 複数の会社のモデルを切り替えたい・比べたい | LangChain が便利 |
| 道具を使うエージェントを手早く作りたい | LangChain(create_agent) |
| 社内資料を検索して答える仕組みを自分で組みたい | LangChain の RAG 部品が役立つ |
| 承認待ちで止めて後から再開するなど、流れを細かく制御したい | LangGraph |
| 長く複雑な作業を丸ごと任せたい | Deep Agents |
| 1社のモデルに絞り、その会社の機能をすべて使いたい | その会社の SDK(Claude Agent SDK など)も有力 |
使うとよい理由
- モデルの会社を変えても、書き換えが少なくて済む
- ベクトルストアや文書の読み込みなど、よく使う部品がそろっている
- 1.0 以降は、2.0 まで互換性を壊さないと約束されている
- LangSmith と組み合わせると、動きの確認や評価がしやすい
注意したい点
- 覚える用語が増える。単純な用途では、かえって遠回りになることがある
- 更新が速い(パッチ版は週に数回出ることもある)。本番ではバージョンを固定しておく
- ネット上の古い記事のコードは、1.x では動かないことが多い
- エージェントに道具を持たせる以上、権限や承認の設計は自分で考える必要がある
公式ドキュメントも、LangChain・LangGraph・Deep Agents と同じ役割の選択肢として、OpenAI Agents SDK、Google ADK、LlamaIndex、Claude Agent SDK などを挙げています。エージェントを1つにするか、複数に分けるかの考え方は シングル・サブ・マルチエージェントの違い も参考にしてください。
古いコードを見つけたら:移行の注意点
LangChain は2023〜2024年に多くの解説記事が書かれたため、検索すると古い書き方がたくさん出てきます。1.x で動かすときは、次の点に注意してください。
| 古い書き方 | 1.x での対応 |
|---|---|
from langchain.chains import ... | langchain-classic を入れて from langchain_classic.chains import ... に |
from langchain.retrievers import ... | from langchain_classic.retrievers import ... に |
from langchain.memory import ... | create_agent の checkpointer を使う |
langgraph.prebuilt.create_react_agent | langchain.agents.create_agent に置き換え |
| Python 3.9 | 3.10 以上に上げる |
筆者の環境(langchain 1.4.2)でも、from langchain.chains import RetrievalQA と from langchain.memory import ConversationBufferMemory は、どちらも「モジュールが見つからない」というエラーになりました。
旧バージョンの 0.3 は、公式のリリースポリシーで2026年12月までセキュリティ修正などの保守が続くとされています。0.3 で作ったアプリがある場合は、それまでに 公式の移行ガイド を見ながら 1.x へ移るのがおすすめです。
まとめ
- LangChain は、LLM を使ったエージェントを作るためのオープンソースのフレームワークです。2026年9月時点の最新版は 1.4.2 です。
- 1.0(2025年10月)から、
create_agentとミドルウェアが中心になりました。旧来の Chain などはlangchain-classicに移っています。 - LangGraph は土台(流れの制御)、Deep Agents は機能入りのエージェント、LangSmith は記録と評価のサービスです。
- インストールは
pip install -U langchain "langchain[anthropic]"。約15行でエージェントが動きます。 - RAG では、文書の読み込みからベクトル検索までの部品を差し替えながら使えます。検索を道具としてエージェントに渡す形も一般的です。
- 1回質問するだけならモデル会社の SDK で十分です。モデルの切り替えや、道具・検索を組み合わせるときに LangChain が役立ちます。

