Neon Functionsは、無制限の持続時間を持つストリーミング接続をサポートするようになりました。これにより、AIエージェントは、ほとんどのサーバーレス・ワークロードを停止させてしまうタイムアウト制限に抵触することなく、数秒、数分、あるいはそれ以上の間、ライブチャネルを開き続けることができます。この変更は、チャット形式のアシスタントやツールを使用するボットを構築するすべての人にとって重要です。なぜなら、ストリームが途切れると会話が停滞し、ユーザーエクスペリエンスを損なうからです。

なぜサーバーレスとAIエージェントは相性が悪かったのか

ほとんどのサーバーレスプラットフォームは、迅速に実行して終了する「投げっぱなし」のタスク向けに構築されています。リソースの予測可能性を維持するために、無料ティアでは多くの場合10秒、有料プランでは60秒といった厳格な実行時間制限が設けられています。しかし、AIエージェントは、思考し、外部ツールを呼び出し、トークンが生成されるたびにそれを出力するというプロセスに時間を費やします。その「思考」フェーズはしばしば数十秒に及び、モデルが出力を生成し続ける限り、トークンのストリームは継続します。プラットフォームのタイマーが切れると、接続が閉じられ、クライアント側ではストリームが切断された状態になります。

Neonの回答:デフォルトで長時間持続するストリーミング

Neon Functionsはこの常識を覆します。関数呼び出しは無期限に開いたままにすることができ、特別な設定なしにWebSocketsまたはServer-Sent Events (SSE)を介してデータを配信できます。プラットフォームは長いストリームを通常の要求として扱うため、開発者はストリームを生成するロジックを書くだけで、あとはNeonに任せることができます。

最近のテストでは、2つのエンドポイントがその動作を実証しました:

  • Heartbeat endpoint – 関数が90秒間にわたり、1秒に1回の「tick」を出力しました。一般的なサーバーレスのティアであれば、10秒または60秒後にリクエストが終了していたはずですが、Neonは関数が自律的に終了するまで接続を維持しました。
  • Token-relay endpoint – 関数がAIモデルから生成されたトークンを、生成されるたびに即座にクライアントへストリーミングしました。ユーザーはテキストの塊全体を待つのではなく、回答が単語ごとに表示されるのを確認できました。

どちらの例も、クライアントからのリクエストは一度だけで済み、ポーリングやキープアライブのトリックは必要ありませんでした。

恩恵を受けるのは誰か、そして注意すべき点は何か

対話型アシスタント、ツールを使用するエージェント、または逐次的な結果をプッシュする必要があるあらゆるサービスを構築しているチームにとって、タイムアウトがなくなることは即座のメリットとなります。その結果、コードはよりシンプルになり、レイテンシは低減し、よりスムーズなユーザーエクスペリエンスが実現します。

一方で、以下のトレードオフには注意が必要です:

  • リクエスト限定モデル – Neon Functionsは、アクティブなリクエストに紐付いたストリームを処理します。リクエストの終了後も継続する必要があるバックグラウンドジョブには、依然としてInngestなどの別個のスケジューラやワークフローエンジンが必要です。
  • コールドスタート – アイドル状態の関数はゼロまでスケールダウンするため、次のリクエストでコールドスタートの遅延が発生する可能性があります。アクティブなストリームはスケールダウンを防ぎますが、非アクティブ状態の後の最初のリクエストでは、依然として起動コストがかかります。

今後の展望

結論として、Neon Functionsは、これまでAI開発者に回避策を強いてきたタイムアウトの壁を取り払います。エージェントが思考し、話すのに必要な限りリクエストを開いたままにできるようにすることで、NeonはストリーミングAIエージェントのデプロイを、他のサーバーレス関数と同じくらい簡単にします。