Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java on Azure で LangGraph!

Java on Azure で LangGraph!

Java on Azure Day 2025 資料
2025年6月17日
日本マイクロソフト株式会社
Cloud Solution Architect Asia HQ (Digital Native)
斎藤 功平

Kohei Saito

June 17, 2025

Transcript

30 slides
  1. LangChain vs LangGraph – Prototype fast, run robust 項目 LangChain

    基本概念 Chain / Agent による 直列ワークフロー 主な用途 PoC・MVP・ワンショット RAG ワークフロー 1-2往復の「検索→生成」など直列処理向き 状態管理 原則ステートレス。必要なら自前でメモリ連結 耐障害性 try/catch や再実行をアプリ側で実装 Spring連携 langchain4j-spring スタータで導入可能 参考: LangChain vs. LangGraph: A Comparative Analysis | by Tahir | Medium LangGraph Stateful Graph による有向グラフ / ループ / 状態遷移 本番スケール・マルチエージェント orchestration 分岐・ループ・複数エージェントなど複雑フロー向き AgentState / Reducerをフレームワークが共有・永続化 Super-step単位で一括コミット。失敗時はロールバック LangChain4j/Spring AI をノード内部で再利用可能
  2. 無向グラフと有向グラフ  無向グラフ G = (V, E)  頂点 (Vertex)

    の集合 V  頂点の対を表す枝 (Edge) の集合 E  有向グラフ G = (V, E)  頂点 (Vertex) の集合 V  頂点の順序対を表す枝 (Edge) の集合 E 0 1 4 3 2 0 1 4 3 2
  3. LangGraph で作るカスタマーサポートエージェント ノード(Node) 役割 ① UserMsg ユーザー入力受付 messages += ユーザー発話

    ② Classifier 意図判定 (LLM) 意図 = "FAQ" / "Order" / "Escalate" ③ FAQ Retriever RAG 検索 docs = 関連 Q&A ④ OrderAPI 外部 API 呼び出し orderStatus = ... ⑤ Resolver 応答生成 (LLM) messages += ボット応答 ⑥ HumanEscalation オペレーター転送 escalated = true
  4. 状態 (AgentState) - 共有メモリ+耐障害性 ◼LLM を用いたエージェントが長い対話・並列タスクを安全にこなすには、共有状 態とロールバック機構が不可欠 ◼Shared State ➢

    ノード間のキー・バリューストア ◼Partial Update & Reducer ➢ 差分マージで競合解決 ◼Checkpoint ➢ Super-step ごとにスナップショット保存 AgentState (langgraph4j::parent 1.6.0-beta3 API)
  5. カスタマーサポートエージェントでのSuper-step毎のチェックポイント ◼Super-step ➢ グラフ内で「同じラウンド」に実行されたノード群をまとめる境界 ➢ すべてのノード完了 → State を確定 ➢

    その瞬間に チェックポイント (CP) を自動保存 ◼嬉しいこと ➢ 復旧 例えば FAQ API が落ちても CP#2 から再開し、既済ノードを再実行しない ➢ デバッグ CP#2 の intent を確認して判定ミスを即追跡 ➢ 拡張 ➢ 新ツールを #3 に並列追加しても CP 境界はそのまま。
  6. LangGraph における高スループット×一貫性の仕組み ◼並列実行 ➢ 同じ Super-step 内で起動条件を満たしたノードを同時に走らせ、外部待ち時間を隠蔽。 ◼一括コミット ➢ 全ノード成功時にだけ

    Partial State をまとめてマージし、AgentState を確定。 ◼障害復旧 ◼ どれか 1 つでも失敗すればロールバックして「半端な状態」を残さない。
  7. 耐障害性 – チェックポイントの深堀り ◼チェックポイント ➢ グラフの実行状態を保存・復元し、会話の履歴や中間状態を永続化する仕組み ◼種類 ➢ MemorySaver メモリ内にチェックポイントを保存(開発・テスト用)

    ➢ DatabaseCheckpointSaver データベースにチェックポイントを保存(本番環境用) ➢ FileCheckpointSaver ファイルシステムにチェックポイントを保存 ➢ RedisCheckpointSaver Redisにチェックポイントを保存(分散環境用) How to add persistence ("memory") to your graph - LangGraph4j
  8. 実際にワークフローを設計する際の考慮ポイント ①ノード粒度 ②State設計 ③Super-step/ 並列化 ④永続化 ⑤観測性・テスト ⑥最終チェック 外部I/O時間 副作用

    (DB Write等) 同一Stateキー 更新 既存Chain 利用 キーは最小に Reducer明示 競合なし設計 並列 ノード実行 一括コミット Fan out Fan in タイムアウトは 短く MemorySaver (開発) SqliteSaver (CI) Jdbc / RedisSaver (本番) LangSmith State Node 単体テスト In-memory グラフテスト 統合テスト 遅い I/O / 副 作用はノード分 離済み State スキーマ に全キー Reducer宣言 Super-step 内で同キー 競合なし テストパイプラ インを CIに組込
  9. LangGraph4j とは  LLM を用いた状態保持型マルチエージェントアプリケーションを構築するための Java ライブラリ  Python 版の

    LangGraph にインスパイアされており、LangChain4j や Spring AI といった Java 向け LLM フレームワークとシームレスに連携できるよう設計され ている  langgraph4j/langgraph4j: LangGraph for Java. A library for building stateful, multi-actor applications with LLMs, built for work jointly with Langchain4j and Spring AI

More Decks by Kohei Saito

Other Decks in Programming