Pythonでストリーミング応答を実装する
FastMetal
チャット UI のように応答を少しずつ表示したいときは、ストリーミングを使います。FastMetal は OpenAI 互換なので、stream=True を付けるだけで実装できます。
ストリーミングとは
通常のリクエストは「全部生成し終えてから」応答が返ります。ストリーミングでは、生成され次第トークンを逐次受け取れるため、体感速度が上がり、長い応答でも待たせません。
Python の実装例
from openai import OpenAI
client = OpenAI(
base_url="https://api.fastmetal.ai/v1",
api_key="sk-...", # FastMetal の API キー
)
stream = client.chat.completions.create(
model="anthropic-claude-haiku-4-5",
messages=[{"role": "user", "content": "短い物語を書いて"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
print()
ポイント
stream=Trueを付けるだけでストリーミングになります- 各
chunkのchoices[0].delta.contentに差分テキストが入ります Noneの差分(先頭や終端)に注意し、if delta:でガードしますflush=Trueを付けると、逐次表示がスムーズです
次のステップ
Web アプリなら、この逐次出力を Server-Sent Events(SSE)でフロントに流すと、チャット UI のような体験になります。対応モデルはモデルカタログ、詳しい仕様はドキュメントをご覧ください。