← inaro.devAI駆動開発 学習ツール

ストリーミング

なぜ学ぶか: ChatGPTやClaudeの「文字がタラタラ流れてくる」あの体験。あれはストリーミングという仕組みです。全文を待たずに、生成されたそばから届けます。実際の処理は同じでも『待たされ感』が激減する — AI機能の体感品質を大きく左右する、UXの要です。

ストリーミング=生成しながら少しずつ届ける

応答全体の完成を待たず、生成されるたびに順次送ります。ユーザーは最初の文字をすぐ見られます。

なぜ効くのか=体感速度

総生成時間は同じでも『何も出ない待ち時間』が消えます。特に長い応答で差が大きく、UXへの投資対効果が高いです。

長い応答では実質必須

長時間かかるリクエストは、ストリーミングにしないと通信がタイムアウトする恐れがあります。長文生成では事実上の必須です。

サーバー中継の原則は変わらない

ストリーミングでもRoute Handler経由。ブラウザにキーを出さないまま、サーバーからブラウザへストリームを橋渡しします。

コード例

import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();

// ストリーミング: 生成されたそばからテキストを受け取る
const stream = client.messages.stream({
  model: "claude-opus-4-8",
  max_tokens: 1024,
  messages: [{ role: "user", content: "短い詩を書いて。" }],
});

// 差分(デルタ)が届くたびに表示 → 文字が流れてくる体験
stream.on("text", (delta) => {
  process.stdout.write(delta);
});

// 完成品がまとめて欲しいときはこれ
const final = await stream.finalMessage();
console.log("\n完了。使用トークン:", final.usage.output_tokens);

stream.on("text", ...)で届いた差分をそのまま出すと「タラタラ流れる」UIになります。総時間は同じでも、待たされ感が消えるのがストリーミングの価値です。

ステップ 1 / 2

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。