DEV Community 日本語
フォロー
LaravelでAI APIタイムアウトを適切に処理する方法
WebコントローラーでサードパーティのAIまたはLLM APIを同期的に統合することは、アーキテクチャ上の落とし穴であり、応答が遅い場合に急速なメモリ枯渇につながります。これを軽減するためには、外部実行を分離された非同期バックグラウンドプロセスに移行する必要があります。Laravel Jobの設定は、外部APIの遅延を安全に処理するための本番環境対応のソリューションを提供します。これには、ShouldQueueを実装し、ディスパッチ、インタラクション、キューイングのためのトレイトを利用するProcessAIPipelineのようなジョブの作成が含まれます。外部APIのタイムアウトを適切に処理するために、$triesや$backoffなどの重要なリトライ設定が定義されます。コンストラクタは、プロンプトなどの必要なデータをジョブに渡します。handleメソッドは、オフスレッド処理を実行し、AIEngineServiceを呼び出して応答を生成することで、アプリケーションのコアロジックを保護します。この分離されたアプローチは、いくつかの重要なアーキテクチャ上の利点を提供します。第一に、クライアントの即時解放を保証し、コントローラーがジョブをディスパッチしてHTTP 202 Acceptedステータスを即座に返すことができます。第二に、指数関数的なバックオフ保護が組み込まれており、リトライを適切に処理することで、レート制限やダウンタイムに対応します。これにより、未処理の500エラーを防ぎ、システムの回復力を向上させます。第三に、分離された拡張性を提供し、実装を再利用可能なオープンソースのベンダーツールに簡単にラップできます。最終的に、分離されたパイプラインを構築することは、接続タイムアウトからインフラストラクチャを保護し、コアエコシステムを非常に回復力の高い状態に保ちます。著者は、9年以上の経験を持つソフトウェアエンジニア兼データサイエンティストであり、高並行Laravelシステムとオープンソースユーティリティ設計を専門としています。