LangChainの使い方【1.x対応】create_agentで作る最小構成とバージョン確認の手順

LangChain は大規模言語モデル(LLM)を使うアプリを組み立てるためのPythonライブラリです。モデルの呼び出し、ツールの実行、会話履歴の保持といった「毎回書くことになる部分」をまとめて提供します。

確認したバージョンと、検証の範囲

2026年9月28日時点のPyPIで確認した最新版です。

パッケージ 最新版 公開日 必要なPython
langchain 1.4.2 2026-09-18 3.10以上
langchain-core 1.6.5 2026-09-24 3.10以上
langchain-openai 1.6.6 2026-09-24 3.10以上
langgraph 1.2.12 2026-09-21 3.10以上
langchain-community 0.4.2 2026-05-22 3.10以上

この記事のコードは実行していません。LangChain 1.x は Python 3.10以上が必須で、当環境のPythonは3.9.6のためです。掲載するコードはすべて公式ドキュメント(docs.langchain.com)に記載されている形で、出典のページを各節に示します。写して動かす前に、ご自身の環境で確認してください。

バージョン番号は毎週のように上がります。上の表は2026年9月28日時点のもので、読んでいる時点では変わっています。pip index versions langchain で今の最新を確認してください。

LangChain 1.0 で何が変わったか

ここを知らずに古い記事を読むと、動かないコードを写すことになります。旧版の記事が説明していた構成と、現在の構成を並べます。

やりたいこと 0.x時代の説明(旧版の記事) 現在(1.x)
エージェントを作る Agent と Tool と AgentExecutor を組み合わせる create_agent() 1つで作る
会話履歴を保つ Memory クラス(ConversationBufferMemory など)を差し込む checkpointer と thread_id で管理
処理をつなぐ Chain(LLMChain など)を組む エージェントに任せる。単純な処理はモデルを直接呼ぶ
モデルを指定する プロバイダごとのクラスを import する 文字列で "provider:model" と書ける

いちばん大きい変化は「組み立てる部品が減った」ことです。0.x時代は Chain と Memory と Agent を自分で組む必要がありましたが、1.x は create_agent() に渡すだけになりました。ネット上の解説記事の多くはまだ0.x時代の書き方です。日付とバージョンを確認してから読んでください。

インストール

公式の案内は次の形です(出典:docs.langchain.com の install ページ)。

pip install -U langchain

# 使うモデルのプロバイダごとに、別のパッケージを入れる
pip install -U langchain-openai
pip install -U langchain-anthropic

本体だけではモデルを呼べません。OpenAIを使うなら langchain-openai、Claudeを使うならlangchain-anthropic を追加します。Python 3.10以上が必要です。3.9以下の環境では入りません。

最小の使い方①|モデルを直接呼ぶ

いちばん単純な使い方です。エージェントも何も要りません。

import os
from langchain.chat_models import init_chat_model

os.environ["OPENAI_API_KEY"] = "sk-..."

model = init_chat_model("gpt-5.5")
response = model.invoke("Why do parrots talk?")

プロバイダのクラスを直接使う書き方もあります。

import os
from langchain_openai import ChatOpenAI

os.environ["OPENAI_API_KEY"] = "sk-..."

model = ChatOpenAI(model="gpt-5.5")

パラメータを渡す場合はこうです。

model = init_chat_model(
    "claude-sonnet-4-6",
    temperature=0.7,
    timeout=30,
    max_tokens=1000,
    max_retries=6,
)

モデル名は変わり続けます。上記は公式ドキュメントに載っている例のままで、そのまま動くかどうかは保証されません。使う時点で各プロバイダの提供モデルを確認してください。(出典:docs.langchain.com の models ページ)

最小の使い方②|構造化出力を受け取る

ここが LangChain を使う最大の理由のひとつです。モデルの返答を決めた形のデータとして受け取れます。自分でJSONを抽出してパースする処理を書かなくて済みます。

from pydantic import BaseModel, Field

class Movie(BaseModel):
    """A movie with details."""
    title: str = Field(description="The title of the movie")
    year: int = Field(description="The year the movie was released")

model_with_structure = model.with_structured_output(Movie)
response = model_with_structure.invoke(
    "Provide details about the movie Inception"
)

返ってくるのは Movie 型のオブジェクトです。「JSONで返して」とプロンプトに書いて、返答から { を探して、失敗したら再試行する——という定型処理を書かずに済みます。(出典:docs.langchain.com の models ページ)

最小の使い方③|ツールを使うエージェント

1.x では create_agent() だけでエージェントが作れます。ツールはただのPython関数で、型ヒントとdocstringを書けば認識されます。

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="openai:gpt-5.5",
    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)

注目してほしいのは docstring です。"""Get weather for a given city.""" が、モデルにツールの使いどころを伝える説明文になります。ここが雑だとツールが呼ばれません。docstring は人間向けのコメントではなく、動作に影響する設定です。(出典:docs.langchain.com の quickstart ページ)

モデルの指定が "openai:gpt-5.5" という文字列になっている点も1.x の特徴です。プロバイダ名とモデル名をコロンで区切ります。

最小の使い方④|会話を覚えさせる

0.x時代の Memory クラスに相当する機能は、checkpointer に置き換わりました。会話は thread_id で区別します。

from langchain.agents import create_agent
from langgraph.checkpoint.memory import InMemorySaver

agent = create_agent(
    model="openai:gpt-5.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,
)

thread_id はメールのスレッドと同じ考え方です。同じ thread_id で呼べば前のやりとりが引き継がれ、別のIDにすれば別の会話になります。利用者ごとに履歴を分けるなら、利用者IDを thread_id にします。

InMemorySaver はプロセスが終われば消えます。公式ドキュメントは本番環境では PostgresSaver のようなデータベース対応のチェックポインターを使うよう案内しています。ここを読み飛ばすと、デプロイした瞬間に会話が消えます。(出典:docs.langchain.com の short-term-memory ページ)

なお InMemorySaver は langgraph 側から import します。1.x のエージェントは LangGraph の上に載っているため、両方のパッケージが関係します。

LangChain を使うべき場面・使わなくてよい場面

率直に書きます。LangChain は必要ないことも多いです。入れると依存パッケージが増え、バージョン追従の手間も増えます。

使わなくてよい場面

  • モデルにテキストを投げて返答を受け取るだけ|各プロバイダの公式SDKを直接呼ぶほうが速く、読みやすく、壊れにくい
  • プロンプトを組み立てて1回呼ぶだけ|f-string で十分。抽象化の層を足す意味がない
  • 学習が目的|最初はSDKを直接触ったほうが、何が起きているか分かる

使う価値がある場面

  • 構造化出力が欲しい|with_structured_output() は自分で書くと面倒な部分を引き受けてくれる
  • ツールをモデルに選ばせたい|どのツールをいつ呼ぶかの制御を自分で書くのは大変
  • 会話履歴を永続化したい|checkpointer の仕組みがそのまま使える
  • モデルを差し替えて比較したい|文字列を変えるだけでプロバイダを切り替えられる
  • RAG(社内文書を検索して答えさせる)|文書の分割・ベクトル化・検索の部品が揃っている

判断の目安は「ツールを呼ぶか、会話を続けるか」です。どちらも要らないなら、LangChain を入れない選択のほうが保守が楽になります。

バージョン追従で気をつけること

LangChain はこの記事で挙げたパッケージだけで5つあり、それぞれ別に更新されます。実際に確認した公開日を見ると、1週間のうちに複数が更新されています。

  • バージョンを固定する|requirements.txt や uv.lock で止める。固定しないと、動いていたコードが翌週動かなくなる
  • langchain-community は別の系列|本体が1.4系でも community は0.4系。追従が遅れる統合がある
  • ネット記事は日付を見る|0.x時代の記事は LLMChain や ConversationBufferMemory が出てくる。これらが登場する記事は現在のバージョンでは使えない
  • 公式ドキュメントを一次情報にする|変更が速いため、解説記事よりドキュメントのほうが確実

よくある質問

Python 3.9で使えますか

使えません。LangChain 1.x は Python 3.10以上が必要です。3.9以下の環境では pip install の段階で入りません。

LangChain と LangGraph はどう違うのですか

LangGraph はエージェントの実行の流れを組み立てる部分を担っています。1.x の create_agent() は LangGraph の上に作られており、会話履歴の checkpointer も LangGraph 側から import します。単純な用途なら LangChain だけを意識すれば足ります。

0.x のコードは動きますか

動かないものがあります。LLMChain や従来の Memory クラスを使ったコードは書き換えが必要です。アップグレードする場合は、公式の移行ガイドを確認してください。

APIキーはどう管理すればよいですか

コードに直接書かないでください。公式の例では分かりやすさのため os.environ["OPENAI_API_KEY"] = "sk-..." と書かれていますが、実際は環境変数か .env ファイルから読み込み、.gitignore に入れます。キーをリポジトリに入れると、公開した瞬間に他人が使えます。

まとめ

  • LangChain は 1.x(2026年9月28日時点で langchain 1.4.2)。0.x時代の解説は使えない
  • Python 3.10以上が必須
  • エージェントは create_agent() 1つで作る。ツールはただの関数+docstring
  • 会話履歴は checkpointer と thread_id。InMemorySaver は再起動で消える
  • 構造化出力(with_structured_output)が最大の利点
  • モデルを1回呼ぶだけなら LangChain は不要。公式SDKで足りる
  • パッケージが複数あり別々に更新される。バージョンを固定する

LLMを使ったアプリ開発は、まず手元で1本動かすところからが確実です。テックジムでは東京・永田町の東京本校でゼロからはじめるPython入門講座(無料・対面・毎週開催)とゼロからはじめるClaude Code入門講座(無料・対面)を開催しています。どちらも参加費はかかりません。

あわせて読みたい

掲載したコードはすべて公式ドキュメント(docs.langchain.com)に記載されている形で、当環境では実行していません(LangChain 1.x が要求する Python 3.10 に対し当環境が3.9.6のため)。バージョン番号は2026年9月28日にPyPIで確認した値です。LangChain は更新が速く、数週間で構成が変わります。実装する前に必ず公式ドキュメントで最新の形を確認してください。