Streaming(ストリーミング)
「ストリーミング(Streaming)」はAIの出力を最後まで待たず、生成されたそばから順次表示する配信方式のこと。ChatGPTで文字がパラパラ出てくる仕組み、メリット、API での有効化方法までまるっと超訳します。
ざっくり言うと
裏側では「文章が全部できあがってから一括で返す」のではなく、「生成しながら、できた部分から少しずつ送る」という配り方をしています。体感速度を大きく改善するための、いまや AI チャットの定番テクニックです。
イメージ
正確には
OpenAI の API ドキュメントでは、ストリーミングは 「Server-Sent Events (SSE)」 という仕組みを使い、レスポンスが完成する前から トークン単位の途中結果(deltas) をサーバーから順次送る方式として説明されています。リクエスト時に stream: true を指定すると有効になります。
Anthropic(Claude)の API でも同様に、stream: true を付けることでメッセージを チャンクごとにストリーミング配信 できます。公式ドキュメントでは、長いレスポンスや対話的な UI を構築する場合に推奨される方式とされています。
Google の Gemini API も generateContentStream 系のメソッドを提供しており、段階的にレスポンスを返すことで体感応答時間を短縮できると案内されています。
一括取得 vs ストリーミング(対比表)
| 観点 | 一括取得(非ストリーミング) | ストリーミング |
|---|---|---|
| 返り方 | 全文完成後にまとめて1回返す | 生成した先頭から少しずつ返し続ける |
| 最初の文字が見える時間 | 全文生成後(数秒〜数十秒) | ほぼ即座(数百ミリ秒〜) |
| 体感速度 | 「待たされる」 | 「読みながら待てる」 |
| 途中中断 | 基本的に最後まで生成してから受信 | 途中で止められる(無駄なトークンを節約) |
| 実装の手間 | シンプル(普通のHTTPレスポンス) | やや複雑(SSE / イベント処理が必要) |
| 主な用途 | バッチ処理、要約結果の保存 | チャットUI、ライブ表示 |
Vercel AI SDK での扱い
Web アプリに AI チャットを組み込むときによく使われる Vercel AI SDK では、streamText という関数が用意されていて、バックエンドから AI のトークンを順次フロントエンドへ流す処理を数行で書けるようになっています。Next.js などのフレームワークと相性が良く、いま AI チャット UI を作るときの定番の選択肢の1つです。
使う場面
一方で、短い分類結果や「はい / いいえ」だけを返す処理では、Streaming のメリットはあまりありません。表示の仕組みが少し複雑になるぶん、必要な場面に絞って使うほうが扱いやすいです。
| 場面 | Streaming の相性 |
|---|---|
| チャットで長文回答を見せる | 良い |
| 生成中の文章をユーザーに読ませる | 良い |
| JSON をまとめて後続処理に渡す | 注意が必要 |
| 分類ラベルを1つ返す | あまり必要ない |
よくある勘違い
また、途中で表示された文章はまだ最終版ではありません。後ろに続く文章で意味が補われたり、言い回しが変わったりすることがあります。ユーザーに保存・コピーさせる画面では、生成完了後の状態を明確にしておくと親切です。
関連用語との関係
- 推論(Inference): ストリーミングは「推論結果の渡し方」のオプション。推論そのものを速くする話ではありません。
- レイテンシー(Latency): 全文完成までの時間は変わらなくても、最初の1文字が見えるまでの時間(TTFT: Time To First Token)を大幅に短縮できます。
- API: 多くの AI 提供社では、API リクエスト時に
stream: trueというオプションを付けるだけで有効化できます。
注意点
やってみよう
API を自分で叩いてみたい人は、各社ドキュメントで stream: true を有効にするサンプルコードを読むと、裏側の仕組みがかなり身近になります。AI チャット UI を作るなら、ストリーミングは使い心地を大きく左右する定番機能の一つだと思ってもらって大丈夫です。
参考ソース
UPDATES
新着用語をLINEでお届け
新しい用語記事やAIの最新ニュース、仕事に役立つヒントをお届けします!
リンク先は、運営元の Nanoha AI Labo 公式LINEです。
