インフラ担当者なしでNext.jsアプリにAIエージェントを組み込む際のコストとセキュリティ問題の解決策
2026年6月19日
0
Computing/SoftwareRelated Video
53:42Ship 26 London - 基調講演
Vercel
Comments (0)
Log in to leave a comment
No posts yet
53:42Vercel
Log in to leave a comment
No posts yet
自律型エージェントは、目標を達成するまで思考し、ツールを呼び出す。このループ構造こそが問題だ。特定のツール呼び出しが失敗したり、システムプロンプトが無限に繰り返される動作ロック状態に陥ると、数十分で数千ドルに達するAPI課金事故が発生する。2026年のVercelプラットフォームのデータによると、コーディングエージェントが生成したコミットが全デプロイトラフィックの半分を超え、AI Gatewayを通過するトークン量は前年比で10倍に急増した。ゲートウェイレイヤーでトークンの誤用を先制的に遮断する設計が必要な理由だ。単なるIP単位の制限では、エージェント内部のセマンティックな無限ループを検知するのは難しい。Next.js Edge MiddlewareとUpstash Redisを連携させ、2つのプロンプトベクトル と の間のコサイン類似度をリアルタイムで演算するフィルタリングレイヤーを構築する必要がある。
ext{Cosine Similarity} = rac{mathbf{A} cdot mathbf{B}}{|mathbf{A}| |mathbf{B}|}無限ループ呼び出しを遮断するリアルタイムミドルウェア防衛体系は、3段階で実装する。プロジェクトルートに middleware.ts ファイルを作成し、@upstash/ratelimit を活用して、30秒以内に単一セッションあたり最大5回の実行リクエストのみを許可するスライディングウィンドウレートリミッターを定義する。次に、AI SDKの embed 関数と text-embedding-3-small モデルを呼び出して、流入するプロンプトのベクトル埋め込みをリアルタイムで抽出し、Upstash Redisに保存された直前のプロンプトベクトルとコサイン類似度を計算するロジックを作成する。計算された類似度が0.95を超えると無限ループ状態と判定してLLMバックエンドの呼び出しを即座に中断し、Redisに保存しておいた以前の成功応答データである agent:response:${sessionId} を強制返却するように条件文を構成する。このステップを完了すると、異常なリソース消費がリアルタイムで遮断され、LLM APIの運営コストを最大40%削減できる。
エージェントがWebリサーチやデータ分析など、ユーザーが生成したスクリプトを処理する際、プロンプトインジェクション攻撃にさらされる。攻撃者がサンドボックスを脱獄してホストのシェルコマンドを稼働させると、生のデータベース資格情報環境変数が流出する。悪意ある攻撃からコンピューティングレイヤーを物理的に隔離するため、軽量でミリ秒単位の即時起動性能を持つAWS FirecrackerベースのマイクロVMであるVercel Sandbox技術を導入する。新規Node.js 26ランタイムインスタンスを隔離し、vCPU 2つあたり2GBの比率で合計4GB RAMを自動リサイズするVercel Sandboxは、資格情報の窃取を防止し、手動セキュリティ監査時間を週あたり5時間以上短縮する。
隔離された安全なコード実行環境は、ホワイトリストベースのサンドボックス実行機で制御する。プロジェクトルートに sandbox.config.ts を作成し、networkPolicy プロパティを deny-all に指定して、外部脱獄を通じたプロンプトインジェクションや専用DB環境変数の社外流出を根本から遮断する。内部に伝播させる環境変数のホワイトリスト変数リストである envWhitelist には、NODE_ENV、TZ、AGENT_RUN_MODE のみ登録する。続いて sandbox-runner.ts スクリプトを作成し、外部から入力された加工されていないコードファイルである runner_entry.js を sandbox.writeFiles 構造を通じて隔離ディレクトリに記録した後、sandbox.runCommand を呼び出して、ホストの機密情報の流入が遮断された状態でランタイムを駆動する。ストリーミング方式でサンドボックスの出力ログをモニタリングする for await ループ内部に蓄積バイトサイズを追跡する条件文を挿入し、stdout と stderr の合計が50KBを超えた場合、sandbox.stop() を即時実行して仮想マシンを強制的に整理するエラーバウンダリーを構築する。このセキュリティ隔離手順を適用すると、システム麻痺DoS攻撃が防御され、リソースリークや不要なコンピューティングコストが発生しない。
Webエージェントは、完了までに数分から数時間を要するロングランニングビジネスとして動作する。ネットワーク切断やタイムアウトのような例外エラーが発生した際、既存に完了した中間探索段階のすべての成果が消え、最初からやり直すことでトークンを消費し、コストを重複支出するリスクがある。分散状態の消失問題を解決するため、Vercel Workflows SDKとフレームワークであるEveが提供する耐久性のある実行パターンを導入する。use workflow と use step コンパイラ指令を使用すると、サーバーレスコンテナの寿命が尽きても失敗前に最終成功した単一ステップのスナップショットデータが永続メモリログキューに保存されるため、重複実行なしに障害発生段階からビジネスを連続して再開できる。
障害復旧が可能な耐久性のあるチェックポインティングシステムは、Vercel Connectと連動したストレージインフラにアップサートクエリを呼び出す状態追跡インターセプターコードを埋め込んで構築する。エージェントタスクのライフサイクルを管理する主要状態構造体である DurableStateContext を定義し、現在の実行段階を Task_Start、API_Called、Data_Parsed、Task_Complete に細分化する。Vercel Connectを通じて別途の認証証明書なしにOIDC方式でバインドされたUpstash Redisストレージである connectStateStore に、各段階の成功時点ごとに現在のコンテキスト状態を即座に記録する upsertCheckpointState インターセプター関数を作成する。最後にエージェント通信再試行リクエストを処理する executeOrResumeAgent ハンドラーを実装し、データベースからセッションIDベースの最終状態を検索して、進行中だったセッションの段階が Task_Complete ではない場合、最初からタスクを再実行する代わりに最も最近保存されたスナップショット時点からワークフローを強制的に復旧するように制御フローを生成する。この状態保存ハンドラーを動作させると、サーバーレスのタイムアウトおよび障害時の最初からの再起動という非効率が排除され、エージェント作業の成功率が向上する。
本番環境を停止せず、既存のWebサービスのモノリシックAPIパスをAI SDKベースのエージェントアーキテクチャに移行するには、機能フラグ制御とリアルタイムエッジルーティング分岐が必要だ。サービス停止なしの漸進的マイグレーションは、既存の安定的に動作していた単一応答APIをそのまま維持した状態で、新しく設計されたエージェントインフラパスへカナリアデプロイを順次適用していく方式で進める。超低遅延CDNエッジ読み取りを保証するVercel Edge Config技術をミドルウェアレイヤーと結合すれば、リモートDBアクセスのオーバーヘッドなしに迅速にロールアウトフラグをリアルタイム検索し、安全にトラフィックを制御できる。
レガシーコードベースの無停止マイグレーションを達成するため、3段階の漸進的本番ロールアウト手順を実行する。既存運用中のレガシービジネスアドレスである /api/v1/generate パスは保存し、AI SDKエージェント機能が統合される専用の新規ファイルエンドポイント /api/v1/agent/generate を新設する。Next.js middleware.ts 内にVercel Edge Configの動的閾値指標である agent_canary_rate を get 関数で読み込むロジックを埋め込み、ブラウザ固有IDハッシュ値が設定閾値である10以下のグループに割り当てられる10%のユーザートラフィックのみ、NextResponse.rewrite を通じて新規エージェントシステムエンドポイントへ動的に分岐処理するカナリア環境を構築する。フロントエンドUIコンポーネント内部で、旧型の単一終了型JSON結果処理方式と、新規非同期エージェントのSSEストリーミングトークン出力を両方処理できるよう、Accept ヘッダー値に従って処理をリアルタイムで分岐するハイブリッドFetch Wrapper通信アダプタークライアントである unifiedAgentRequest を構成する。このマイグレーションフレームワークを適用すれば、既存システムの負荷および予期せぬ異常動作のリスクを10%未満のトラフィック領域内に隔離制御しながら、無停止で全体システムの改編を終えることができる。