ストリーミング出力とは
ストリーミング出力(Streaming Output)とは、LLMがテキストを生成する際に、全体の生成完了を待たずに、生成されたトークンを逐次的にリアルタイムで返却する方式です。ユーザーは応答がタイピングのように一文字ずつ表示されるのを確認でき、体感的な待ち時間が大幅に短縮されます。ChatGPTやClaudeなど主要なAIサービスで広く採用されています。
| ひとことで言うと | 回答を最後まで待たず、生成された端から順に画面へ流す表示方式。 |
|---|---|
| どこで使う | チャットUI、長文生成、体感速度を上げたい画面。 |
| 注意点 | 途中で止める処理やエラー時の扱いを、アプリ側で作り込む必要がある。 |
ストリーミングの技術的仕組み
ストリーミング出力は、Server-Sent Events(SSE)やWebSocketを使って実装されます。APIレベルでは、リクエスト時にstream=trueパラメータを指定すると、サーバーはトークンが生成されるたびにイベントを送信します。クライアント側はこれらのイベントを順次受信し、UIにリアルタイムで表示します。通常のHTTPレスポンスとは異なり、コネクションを維持したまま断続的にデータを送信する仕組みです。
1リクエストstreamを有効にして送信
▶
21語を生成モデルが次の語を決める
▶
3すぐ送るできた分だけ画面へ
▶
4完了通知終端で接続を閉じる
↺ 2〜3をくり返すので、待たされている感じが減る
ストリーミングの利点と考慮点
ストリーミング出力の最大の利点はユーザー体験の向上です。長い応答でも最初のトークンが表示されるまでの時間(TTFT: Time To First Token)が短く、ユーザーは応答が生成されている過程をリアルタイムで確認できます。一方で、ストリーミングでは応答全体が確定する前にユーザーに表示されるため、途中で内容を修正できないこと、エラーハンドリングが複雑になること、Function Callingとの組み合わせに工夫が必要であることなどの注意点があります。