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)
斎藤 功平

Avatar for Kohei Saito

Kohei Saito

June 17, 2025
Tweet

More Decks by Kohei Saito

Other Decks in Programming

Transcript

  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