0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【LangGraph】もう落ちない!Klarna・Replit採用の本番環境向けAIエージェントフレームワーク

Posted at

この記事は ゆっくりテックウォッチ Advent Calendar 2025 の 22 日目の記事です。

個人開発の「ゆっくり動画スタジオ」でGitHub人気リポジトリの解説動画を自動生成しており、その分析データをもとに本記事も生成しています。

TL;DR

  • Klarna、Replit、Elastic等の大手企業が本番環境で採用
  • 障害から自動復旧し、中断箇所から再開する耐障害実行機能
  • 人間の判断を途中で挟める人間ループ統合機能

このリポジトリについて

リポジトリカード

長時間実行AIエージェント構築のための低レベルオーケストレーションフレームワーク

LangGraphは、Klarna、Replit、Elasticなどの企業が採用する、ステートフルで複雑なエージェントシステムを構築するためのPythonフレームワークです。耐障害性、人間のループ組み込み、包括的なメモリ機能を提供し、本番環境での長時間実行ワークフローに最適化されています。

項目 内容
リポジトリ langchain-ai/langgraph
スター数 :star: 22,371
言語 Python
ライセンス MIT License
作成日 2023-08-09

なぜ今注目されているのか

AIエージェントが本番環境で落ちたことありませんか?

LLMベースのエージェントは、長時間実行時に障害やメモリ不足で停止してしまうことがあります。プロトタイプは動くのに、本番環境で安定稼働しない…。そんな悩みを持つエンジニアは多いはずです。

LangGraphは、耐障害性と人間ループを備えた本番環境向けエージェントフレームワークです。ゲームのセーブポイントのように、途中で落ちても最後のチェックポイントから自動的に再開できます。

スター推移

スター推移グラフ

2023年8月に公開されてから、2024年1月に700スターを獲得。LangChainエコシステムの成長とともに着実にスターを増やし、2025年12月現在では2万2千スターを超えています。

とくに2024年後半からの成長が顕著で、月平均約400スターのペースで増加しています。本番環境でのAIエージェント需要の高まりを反映しています。

主な機能・特徴

リポジトリフィーチャーカード

1. Klarna等の大手企業が本番環境で採用

LangGraphは実験的なフレームワークではありません。以下の大手企業が本番環境で採用しています:

  • Klarna: 決済サービスのAIアシスタント
  • Replit: AIコーディングアシスタント
  • Elastic: 検索・分析プラットフォームのAI機能

これらの企業が採用していることは、LangGraphの信頼性と本番環境での実績を証明しています。

2. 障害から自動復旧する耐障害実行機能(Durable Execution)

LangGraphの最大の特徴は、チェックポイント機能による耐障害実行です:

  • エージェントが障害から自動復旧
  • 中断箇所から正確に再開
  • PostgreSQL、SQLite、Redisにチェックポイントを保存可能

「ゲームのセーブポイント」と同じように、途中で落ちても最後のセーブポイントから再開できます。

from langgraph.graph import StateGraph
from langgraph.checkpoint.postgres import PostgresSaver

# チェックポイントをPostgreSQLに保存
checkpointer = PostgresSaver.from_conn_string("postgresql://...")
graph = StateGraph(State).compile(checkpointer=checkpointer)

3. 人間の判断を途中で挟める人間ループ統合機能

高リスクな操作(返金処理、契約変更など)では、人間の承認を挟みたいケースがあります。LangGraphは**人間ループ(Human-in-the-Loop)**機能を標準サポート:

  • 実行中の任意のポイントで人間の判断を挟める
  • エージェントの状態を検査・修正可能
  • 承認待ち状態でワークフローを一時停止
# 人間の承認を待つノードを定義
def human_approval_node(state):
    # 状態を返して承認待ちに
    return {"status": "pending_approval", "data": state["data"]}

4. 短期と長期の両方のメモリを持つステートフル設計

LangGraphは包括的なメモリ機能を提供します:

  • 短期メモリ: 実行中の推論に使用(ワーキングメモリ)
  • 長期メモリ: セッション間で永続化(ユーザー情報など)

これにより、従来のステートレスなAPIと違い、「会話の履歴を覚えている」真にステートフルなエージェントを実現できます。

技術スタック

PythonとLangChainベースの低レベルエージェント構築インフラです。

分類 技術
主要技術 Python 3.10+, LangChain
フレームワーク/ライブラリ langchain-core, langgraph-checkpoint, pydantic
インフラ PostgreSQL, SQLite, Redis(チェックポイント保存)
AIモデル 任意のLLM(OpenAI、Anthropic、ローカルモデル等)
連携サービス LangSmith(デバッグ・評価), LangGraph Studio(ビジュアルプロトタイピング)

ユースケース

ユースケース1: スタートアップのCTO

背景: 50人規模のSaaS企業でCTOを務めるBさんは、カスタマーサポートの問い合わせ対応を自動化したいと考えていました。

課題: LangChainで作ったチャットボットが、複雑な問い合わせで途中で停止してしまう。プロトタイプは動くが本番環境で不安定。

解決策: LangGraphの耐障害実行と人間ループ機能を導入。StateGraphで問い合わせフローを設計し、チェックポイントをPostgreSQLに保存。重要な判断は人間ループで承認。

結果: 障害時も自動復旧し、顧客満足度が30%向上。エスカレーション処理も人間ループでスムーズになりました。

ユースケース2: データエンジニア

背景: 金融機関で複雑なデータパイプラインを管理するCさんは、レポート生成ワークフローを自動化したいと考えていました。

課題: 従来のスクリプトは外部API障害時に全体をやり直す必要があり、時間がかかる。

解決策: LangGraphのチェックポイント機能で、失敗したステップから再開可能に。複数のAPIコールをノードとして定義し、各ステップでチェックポイントを保存。

結果: リトライ時間が90%削減され、1日5時間の作業が30分に短縮しました。

競合との比較

LangChain create_agentとの違い

観点 LangGraph LangChain create_agent
抽象度 低レベル(細かい制御可能) 高レベル(簡単だが柔軟性低い)
耐障害性 チェックポイント機能で自動復旧 基本的な機能のみ
学習曲線 中級者向け、ドキュメント充実 初心者向け、すぐに使える
本番環境対応 スケーラブル、企業採用実績 プロトタイプ向け

LangGraphを選ぶべきタイミング: 本番環境での長時間実行ワークフローや、複雑なエージェントシステムを構築する場合

AutoGPTとの違い

観点 LangGraph AutoGPT
制御性 人間ループで制御可能 完全自律実行
ユースケース 企業システム、カスタマーサポート 研究・実験的タスク
カスタマイズ性 StateGraphで柔軟に設計 プリセット機能中心

LangGraphを選ぶべきタイミング: エージェントの動作を細かく制御し、本番環境で安定稼働させたい場合

始め方

インストールは1行で完了します:

pip install -U langgraph

簡単なワークフローの例:

from langgraph.graph import START, StateGraph
from typing_extensions import TypedDict


class State(TypedDict):
    text: str


def node_a(state: State) -> dict:
    return {"text": state["text"] + "a"}


def node_b(state: State) -> dict:
    return {"text": state["text"] + "b"}


graph = StateGraph(State)
graph.add_node("node_a", node_a)
graph.add_node("node_b", node_b)
graph.add_edge(START, "node_a")
graph.add_edge("node_a", "node_b")

print(graph.compile().invoke({"text": ""}))
# {'text': 'ab'}

詳細は公式ドキュメントを参照してください。無料のLangChain Academyでも学習できます。

まとめ

  • Klarna、Replit、Elastic等の大手企業が本番環境で採用
  • 耐障害実行: 障害から自動復旧し、中断箇所から再開
  • 人間ループ: 任意のポイントで人間の判断を挟める
  • ステートフル設計: 短期と長期の両方のメモリをサポート
  • LangChainエコシステムとの統合でさらに強力

概要欄のリンクから公式ドキュメントをチェック!


動画でも解説しています

YouTubeチャンネル「ゆっくりテックウォッチ」では、GitHub の注目リポジトリをゆっくり解説しています。

この記事で紹介した LangGraph の解説動画も公開していますので、ぜひご覧ください!

チャンネル登録よろしくお願いします!


関連リンク


この記事は AI によって自動生成されました。内容に誤りがある可能性があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?