LangGraphの障害耐性設計——RetryPolicy・TimeoutPolicy・error_handlerが本番エージェントに必要な理由

AI開発・生成AI活用公開日:2026年6月8日
徐 聖博
徐 聖博

株式会社シンシア 代表取締役社長

Share

シンシアへのご相談

自社のAI活用・開発体制について相談する

AIをどこまで内製するか、どの業務から着手するか、体制をどう組むか。開発会社・SIer・事業会社の開発部門の方からのご相談を無料で承っています。同じ問題を自社でも解いている立場としてお話しします。

AI活用の進め方を相談する

まだ検討段階の方は 質問だけでもOK(電話番号は任意)

LangGraphの障害耐性設計——RetryPolicy・TimeoutPolicy・error_handlerが本番エージェントに必要な理由

LangGraphが障害耐性のための3つのプリミティブ(RetryPolicy・TimeoutPolicy・error_handler)を正式にサポートした。エージェントを「デモが動く」から「本番で壊れない」に引き上げるための、地味だが本質的なアップデートだと私は見ている。

出典: Fault Tolerance in LangGraph: Retries, Timeouts, and Error Handlers

要点 (事実のみ)

  • LangGraphはStateGraphの各ノードに対し、RetryPolicyTimeoutPolicyerror_handlerの3つをadd_nodeで直接アタッチできる設計になった
  • RetryPolicyは指数バックオフ・ジッター付きで、デフォルトではConnectionErrorや5xxレスポンスのみをリトライ対象とし、ValueErrorTypeErrorなどプログラミングバグは対象外
  • TimeoutPolicyは「ハードな壁時計上限(run_timeout)」と「進捗ベースのアイドル上限(idle_timeout)」の2種類をサポート。ストリーミング中はidle_timeoutがリセットされる
  • error_handlerはリトライ枯渇後にのみ発火し、失敗コンテキスト(NodeError)を受け取って補償ロジックを実行できる。エラーハンドラーにさらにエラーハンドラーを設定することはできない
  • 記事ではフライト予約(座席予約→決済→発券)を例に、SAGAパターンをset_node_defaultserror_handlerで実装するコードを紹介している

徐 聖博の見解

エージェントの信頼性という問題を、私はIndeedでの推薦システム運用やシンシアでの受託開発を通じて繰り返し経験してきた。「ハッピーパスは書けた、でも本番に出したら外部APIの5xxとタイムアウトで詰まった」というのは、どのプロジェクトでも必ず一度は通る道だ。

今回のLangGraphの設計で評価したい点は2つある。

第一に、ボイラープレートの削除先が正しい場所にあること。リトライのwrapperを各ノード内に書くのではなく、ワークフローエンジン側に移したことで、「誰がリトライ責任を持つか」の構造的な曖昧さが消える。retryロジックがノードのビジネスロジックに混入しないため、ノード自体がテストしやすい。

第二に、error_handlerの原子性の設計が実用的だと感じた。「元のノードが失敗したらチェックポイントにERROR書き込みをコミットし、ハンドラータスクを同一ステップで再スケジューリングする」という仕様は、ホストプロセスがクラッシュしても補償ロジックが再開される保証を与える。SAGAパターンを分散システムで素直に実装しようとすると、まさにここ(部分コミットとリカバリーの一貫性)が最も厄介な部分で、それをランタイム側が保証してくれるのは開発コストとして大きい。

一方で冷静に見ると、これらのプリミティブは「正しく設定されれば機能する」ものであり、設定の責任は依然として開発者にある。リトライ対象の例外クラス選定、idle_timeoutの閾値、補償ロジックの冪等性の担保——これらを間違えると、ランタイムが親切であるがゆえに「静かに誤った方向へ補償し続ける」事故が起きる。特にSAGAパターンの補償ノードは、各ステップが冪等であることを前提に成り立つ設計だが、その冪等性の担保はアプリケーション側の責任のままだ。

Xincereで企業向けAIエージェントのPoC・初期導入を支援している立場から言えば、発注側がこの記事に注目すべき含意は「エラーハンドリングの設計工数をフロントに積む必要がある」という点だ。プロトタイプのデモコストと、本番のエラーハンドリングコストは同等かそれ以上になることが多い。ベンダーや開発会社にエージェントを依頼する際は、リトライ・タイムアウト・補償ロジックの設計方針を要件定義の段階で明示的に議論することを強く勧める。

(編集レンズ: 実装・運用視点 / 発注側・中小企業・開発実務への含意)

Share

シンシアへのご相談

自社のAI活用・開発体制について相談する

AIをどこまで内製するか、どの業務から着手するか、体制をどう組むか。開発会社・SIer・事業会社の開発部門の方からのご相談を無料で承っています。同じ問題を自社でも解いている立場としてお話しします。

AI活用の進め方を相談する

まだ検討段階の方は 質問だけでもOK(電話番号は任意)

徐 聖博のプロフィール写真

この記事の書き手に直接相談する

徐 聖博株式会社シンシア 代表取締役社長

記事の内容について、より具体的に自社のケースで聞きたいことがあれば、徐 聖博を指名してご相談いただけます。営業担当ではなく、 実際に手を動かしている本人が回答します。

シンシアの開発事例

株式会社Atsumell様|サービスを止めずにデータ基盤を刷新したBPマッチングプラットフォームの開発事例

**約11ヶ月・のべ4名のリレーで、機能開発を止めることなく基盤の刷新を完了しました。** 参画時期の重なりは最大2〜3名で、メンバーは1ヶ月の短期集中から5ヶ月の継続稼働までさまざまです。それでも積み上げが効いたのは、**先に入ったメンバーが構造を残していたから**でした。2025年7月に導入された Repository 層の上で、半年後に別のメンバーが移行作業を進めています。認可条件はコード上の仕様コメントとして、スナップショット方式はアーキテクチャドキュメントとして残り、いずれも「引き継いだ人が読んで分かる」形になっています。 この期間に手掛けた業務機能は、協力会社のラベル分類機能、パートナー企業管理画面、CSV による一括招待とデータ出力、案件辞退フロー、ステータス変更通知メールなど多岐にわたります。基盤刷新と機能開発は、どちらかを止めて行ったものではありません。 > 大規模な基盤刷新は「一度止めて作り直す」以外にも方法があります。呼び出し側を壊さない層を挟み、テーブル単位で少しずつ移し、移行と改善を混ぜない。この3つを守れば、リリースを止めずに土台は入れ替えられます。事業を止められないプロダクトほど、この進め方の価値が出ます。 ### この事例からの示唆 **稼働中のサービスでも基盤は入れ替えられる。** 前提は、呼び出し側の契約(戻り値の形)を保つ中間層を挟むこと、移行単位をテーブルや画面まで小さく割ること、そして移行と機能改善を同じコミットに混ぜないことの3点です。この3つが崩れると、不具合が出たときに原因が移行なのか改善なのか切り分けられなくなり、結果として一度止めるしかなくなります。 **メンバーが入れ替わる前提の体制では、成果物より「残る構造」が価値になる。** 短期参画のエンジニアを増やしても積み上がらないプロジェクトは、設計判断が個人の記憶に閉じていることが原因であるケースが多いです。この事例では、認可条件をコード上の仕様コメントとして、データ設計をアーキテクチャドキュメントとして残す運用を徹底しました。開発体制の失敗パターンについては[システム開発の失敗から立て直す方法](https://blog.xincere.jp/articles/system-development-failure-patterns)でも整理しています。 **要件が固まりきらない領域ほど、データ設計で制約を表現する。** 「協力会社が人材情報を編集したら応募内容が変わってしまう」といった問題は、運用ルールやUIの注意書きでは再発します。スキーマとトリガーで表現すれば、アプリ側の実装漏れがあっても壊れません。要件を仕様に落とす工程そのものについては[要件定義の進め方](https://blog.xincere.jp/articles/requirements-definition-process)を参照してください。 ### よくある質問 **Q. 稼働中のサービスを止めずに基盤刷新はできますか。** A. できます。この事例では約11ヶ月にわたり、機能リリースを継続しながらデータアクセス基盤の移行と主キー変更まで実施しました。ただし「一斉に切り替える」やり方では現実的に困難で、呼び出し側を壊さない中間層を用意して段階移行する設計が前提になります。 **Q. 途中でメンバーが入れ替わる体制でも品質は保てますか。** A. 設計判断がドキュメントとコードに残っていれば保てます。この事例では参画時期の重なりが最大2〜3名、1ヶ月だけの参画者もいる体制で、前任の導入した層の上に後任が半年後の移行作業を積み上げています。 **Q. どのくらいの規模・期間の支援ですか。** A. 約11ヶ月、のべ4名(同時稼働は最大2〜3名)です。プロジェクトの規模や費用感の考え方は[システム開発とは](https://blog.xincere.jp/articles/what-is-system-development)で解説しています。 ### 関連する支援領域 - [システム刷新の進め方|検討・計画から移行までの方法](https://blog.xincere.jp/articles/core-system-renewal-guide) — 稼働中システムを止めずに刷新する判断基準 - [業務システム開発の要件定義とは?進め方・手順を7ステップで解説](https://blog.xincere.jp/articles/business-system-development-requirements-definition-steps) — 要件を仕様に落とす工程 - [システム開発の失敗から立て直す方法](https://blog.xincere.jp/articles/system-development-failure-patterns) — 体制・引き継ぎで詰まったときの選択肢 同じように「稼働を止められないプロダクトの基盤を作り替えたい」という課題をお持ちでしたら、[開発のご相談](https://blog.xincere.jp/contacts)からお問い合わせください。現状のコードとデータ構造を確認したうえで、段階移行の設計からご一緒します。

株式会社Atsumellの事例を読む →

この記事が役に立ったら、Google で優先表示を

Google 検索の「優先するソース」に blog.xincere.jp を追加すると、シンシアの新着記事がトップニュースなどで見つけやすくなります。

Google で優先ソースに追加

著者について

徐 聖博のプロフィール写真
徐 聖博
株式会社シンシア 代表取締役社長

株式会社シンシア(Xincere, Inc.)代表取締役。中国生まれ・3歳から日本で育ち、日本語・中国語・英語を操るトリリンガル。大学院でコンピュータサイエンス(進化型ニューラルネットワーク)を研究し、GREE・メドレー・カウンティア・Indeed Japan などで検索エンジン開発やスタートアップの立ち上げ・グロースを経験。2020年に「人の価値をテクノロジーで最大化する」という想いでシンシアを創業した。エンジニア歴15年以上、代表でありながらほぼ毎日コードを書く現役エンジニアとして、基幹システム開発からAIエージェント活用まで顧客の事業成長に並走している。創業に込めた思いはnoteの創業ストーリーに綴っている。

人気記事

    お問い合わせ

    システム開発やAI推進についてのご相談はこちらから

    無料相談を予約する