【2026年版】LangGraphでエージェント構築入門|複雑ワークフローをGraphで表現する実践ガイド
はじめに:複雑ワークフローは LangGraph が最強
単純なツール呼び出しエージェントなら OpenAI Agents SDK で十分ですが、条件分岐・ループ・複数エージェント連携・ヒューマンインザループなど複雑ワークフローには LangGraph が最適です。
LangGraph は LangChain派生のエージェントフレームワークで、状態遷移をGraphで表現できます。
- LangGraph の基本概念(State/Node/Edge)
- Python 最小実装
- 条件分岐・ループ・HITL
- LangSmith トレース
- 本番運用のベストプラクティス
基本概念
State
エージェントの現在状態。TypedDict / Pydanticで定義。ノード間を流れる。
Node
処理単位。関数またはLLM呼び出し。Stateを受け取り、更新したStateを返す。
Edge
ノード間の接続。無条件・条件分岐の両方。
Graph
Nodeを Edge で接続したワークフロー全体。コンパイルして実行。
セットアップ
pip install langgraph langchain-openai
export OPENAI_API_KEY=sk-...最小グラフ実装
from typing import TypedDict
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
# State定義
class AgentState(TypedDict):
messages: list
answer: str
# Nodes
def classify_question(state: AgentState) -> dict:
"""質問を分類"""
llm = ChatOpenAI(model="gpt-5")
response = llm.invoke(f"この質問を 'tech' or 'business' で分類: {state['messages'][-1]}")
return {"category": response.content}
def answer_tech(state: AgentState) -> dict:
llm = ChatOpenAI(model="gpt-5")
response = llm.invoke(f"技術専門家として回答: {state['messages'][-1]}")
return {"answer": response.content}
def answer_business(state: AgentState) -> dict:
llm = ChatOpenAI(model="gpt-5")
response = llm.invoke(f"ビジネスコンサルとして回答: {state['messages'][-1]}")
return {"answer": response.content}
# Edge条件
def route_question(state: AgentState):
return "answer_tech" if state["category"] == "tech" else "answer_business"
# Graph構築
graph = StateGraph(AgentState)
graph.add_node("classify", classify_question)
graph.add_node("answer_tech", answer_tech)
graph.add_node("answer_business", answer_business)
graph.set_entry_point("classify")
graph.add_conditional_edges("classify", route_question)
graph.add_edge("answer_tech", END)
graph.add_edge("answer_business", END)
app = graph.compile()
# 実行
result = app.invoke({"messages": ["Reactの状態管理ベストプラクティスは?"]})
print(result["answer"])👉 条件分岐で技術/ビジネスの異なるエージェントに振り分けるワークフローが 50行で完成。
典型パターン
1. シーケンシャル(直列実行)
調査→分析→レポート生成の3ステップを順次実行。
2. 条件分岐
質問の種類で異なる処理ルートに分岐(上記例参照)。
3. ループ
結果が満足いくまで再試行(例:コード生成→テスト→失敗なら再生成)。
4. ヒューマンインザループ(HITL)
重要判断時に人間承認を挟む(例:金銭取引・外部送信前)。
5. マルチエージェント協調
調査Agent + 分析Agent + 執筆Agent が協調するスワーム構成。
ループ例:コード生成→テスト→修正
def generate_code(state):
# LLMでコード生成
...
def test_code(state):
# 生成コードをテスト実行
...
def should_retry(state):
if state["test_passed"]:
return END
if state["retry_count"] >= 3:
return END
return "generate_code" # 再試行
graph.add_node("generate_code", generate_code)
graph.add_node("test_code", test_code)
graph.add_edge("generate_code", "test_code")
graph.add_conditional_edges("test_code", should_retry)ヒューマンインザループ
from langgraph.checkpoint.memory import MemorySaver
def human_approval(state):
# ここで実行を一時停止、人間の判断を待つ
pass
# コンパイル時にinterrupt_before指定
app = graph.compile(
checkpointer=MemorySaver(),
interrupt_before=["human_approval"]
)
# 実行(人間承認で停止)
config = {"configurable": {"thread_id": "1"}}
result = app.invoke(input, config=config)
# 停止後、人間が承認したらresume
app.invoke(None, config=config)LangSmith トレース
- 各Nodeの実行時間・入出力を自動記録
- Graph全体のビジュアル表示
- 失敗セッションの再現実験
- プロンプト・LLMレスポンスの履歴
LangSmith API キー設定だけで有効化。無料枠月5,000トレースあり。
OpenAI Agents SDK との使い分け
- Agents SDK:シーケンシャル・Toolベース・OpenAIメイン(簡潔)
- LangGraph:複雑ワークフロー・条件分岐・ループ・マルチLLM(柔軟)
シンプルなBot → Agents SDK、本格的エージェント → LangGraph。
本番運用のベストプラクティス
- State を小さく保つ(過剰な情報保持はコスト増)
- 各Nodeの処理を単一責任に(デバッグ容易)
- Checkpointer で状態永続化(DBまたはRedis)
- LangSmithで観測必須
- Rate limiting + リトライ戦略
活用シーン例
- 複数ソース調査→統合レポート生成
- マルチステップのデータパイプライン
- 社内承認フロー付きの自動化
- カスタマーサポート(自動対応→エスカレーション)
- コード生成→テスト→修正のループ
よくある質問(FAQ)
Q. OpenAI Agents SDKで十分では?
シンプルなToolベースならOK。条件分岐・ループ・HITLが必要なら LangGraphが必須。
Q. OpenAI以外のLLMも使える?
はい、Anthropic Claude / Google Gemini / Local LLM 全部OK。マルチLLM構成も可能(Node毎に異なるLLM使用)。
Q. Graphをビジュアル確認できる?
LangSmithで可視化可能。app.get_graph().draw_mermaid_png()でローカルPNG生成も可。
Q. コストは?
LLM API コストのみ(LangGraph 本体は無料・OSS)。LangSmith観測は無料枠5,000トレース/月。
Q. 本番で安定運用できる?
LinkedIn・Uber・Elastic等で採用。Checkpointer永続化と観測があれば本番運用可能。
まとめ:複雑ワークフローは LangGraph 一択
- State / Node / Edge のシンプルな抽象で複雑ワークフロー構築
- 条件分岐・ループ・HITL が標準対応
- LangSmith で観測・デバッグ容易
- マルチLLM・マルチエージェント構成可能
シンプルなエージェントから始めて、必要に応じて複雑化。今日1つGraphを作ってみてください。
関連記事
👉 【2026年版】OpenAI Agents SDK 入門
👉 【2026年版】Vercel AI SDK vs LangChain 徹底比較
👉 【2026年版】エンジニアのためのRAG実装入門
👉 【2026年版】ベクトルDB入門
👉 【2026年版】Claude APIでSlack社内Botを作る完全ガイド