「コードが実行されたミリ秒分しか料金が発生しない」というサーバーレスの神話は、AWS Lambda上でAIエージェントを動かそうとすると崩れ去ります。実際には、最大のコスト項目はLambdaのコンピューティング料金ではなく、コールドスタートのレイテンシ、リトライループ、そしてそのループによって発生するトークン使用量です。

なぜ従来のサーバーレスのイメージがAIエージェントにおいて誤解を招くのか

多くの開発者は、Lambda関数を純粋なコンピューティング・サンドボックスとして扱います。ハンドラーを高速に保ち、メモリサイズを控えめに設定すれば、請求額は一定に保たれると考えます。これは単純なHTTPエンドポイントには有効ですが、言語モデルを呼び出し、レスポンスを評価し、場合によってはサイクル全体をリトライするようなエージェントの場合、単一のLambda呼び出しと一対一で対応することはありません。エージェントの内部ワークフローはモデル呼び出しの回数を増幅させ、追加の呼び出しが発生するたびに、コンピューティング料金をはるかに上回るトークンコストが加算される可能性があります。

コールドスタートは隠れたコストである

Lambdaコンテナが最初にプロビジョニングされる際、デプロイパッケージの展開が必要になります。対象となるエージェントは大量のPythonライブラリを読み込むため、イメージサイズが大きくなりがちです。ローカルテストでのみ使用するブラウザ自動化ライブラリなどの開発専用ツールを削除することで、イメージサイズを削減でき、結果として展開時間を短縮できます。パッケージを軽量化すれば、関数がリクエストを処理できる状態になるまでの時間が短縮され、コンテナのウォームアップ待ち時間を減らすことができます。

もう一つの手段は、初期化コードをどこに配置するかです。モジュールのインポート時にエージェントのグラフを構築するようにすれば、重い処理はリクエストごとではなく、コンテナの起動ごとに一度だけ行われるようになります。一度コンテナが温まれば(ウォームアップされれば)、その後の呼び出しではその処理を完全にスキップできます。トレードオフとしてコールドスタートはわずかに長くなりますが、コンテナが温まった後はリクエストごとのセットアップ時間がほぼゼロになるというメリットがあります。

メモリはレイテンシを調整するノブとしても機能する

Lambdaでは、割り当てるメモリ量によって関数が受け取るCPUの割合も決まります。関数に1GBのメモリを割り当てると、1つの仮想CPUコアが割り当てられます。CPU性能が向上することで、ライブラリのインポートやエージェントグラフの作成が加速され、コールドスタートとウォームアップの両方のレイテンシを縮小できます。

ループのコスト:リトライがトークン消費を増大させる

エージェントは「ワーカー・エバリュエーター(作業者・評価者)」ループに従って動作します。ワーカーがレスポンスを生成し、エバリュエーターがそれをチェックします。もしエバリュエーターがエラーを検知した場合、タスクはワーカーに送り返されます。このループは、諦めるまでに最大5回繰り返される可能性があります。つまり、単一の外部リクエストが以下を引き起こす可能性があります:

  • ワーカーモデルへの最大5回の呼び出し
  • エバリュエーターモデルへの最大5回の呼び出し
  • エージェントが実行すると判断した任意の数のツール呼び出し

AWSは実行されたミリ秒単位で課金するため、Lambdaの請求額は予測しやすいままですが、トークン費用は必要なリトライ回数によって激しく変動する可能性があります。

タイムアウトの罠:API Gateway vs. Lambda

API Gatewayは、それがフロントエンドとなるHTTPリクエストに対して29秒という厳格なタイムアウト制限を課しています。たとえ背後のLambda関数が5分間の実行ウィンドウを持つように設定されていても、5ターンのエージェントループは簡単にこの制限を超えてしまいます。API Gatewayを回避してLambda Function URLを使用すれば、29秒の天井がなくなり、関数が途中で遮断されることなくループを完了できるようになります。

開発者が予算に組み込むべき要素

教訓はシンプルです。サーバーレスAIエージェントの予算を立てるには、Lambdaの実行ミリ秒を合計するだけでは不十分です。以下の要素を考慮に入れる必要があります:

  • デプロイパッケージのサイズと、それに伴うコールドスタートのレイテンシ
  • CPU性能(およびインポート速度)を決定するメモリ設定
  • トークン使用量に直結する、ワーカー・エバリュエーター・ループにおける予想リトライ回数
  • 早期タイムアウトを避けるためのフロントエンドの選択(API GatewayかFunction URLか)

これらの変数のいずれかを無視すると、予測していたものとは似ても似つかない請求書が届くことになるでしょう。