A frozen screen waiting for the AI to answer? In 2026 that's a choice, not a limitation. Streaming is one parameter away — and it transforms perceived UX.
If you've used ChatGPT, you've seen streaming in action: tokens appearing one by one. It's how you build decent AI UX — and it's simpler than it looks.
Under the hood it's Server-Sent Events (SSE): the server keeps the connection open and sends chunks. With the OpenAI SDK (compatible with most gateways), it's just stream=True:
from openai import OpenAI
client = OpenAI(base_url="https://api.example.com/v1", api_key="your-key")
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Explain SSE in 3 sentences"}],
stream=True,
)
for chunk in resp:
part = chunk.choices[0].delta.content
if part:
print(part, end="", flush=True)
Why it matters:
- Perceived speed — the first token arrives in sub-second time, no frozen screen;
- Fewer client-side read timeouts — the client stops waiting for the full response (note: proxies like Nginx can still cut long streams unless you raise
proxy_read_timeout); - Professional UX — the standard for any serious AI product.
Careful: on the server side (FastAPI/Node), forward the stream to the frontend instead of buffering everything. Handle stream end ([DONE]) and connection errors.
Want to try these models in your project? **ModelKiwi* gives you access to GPT, Claude and Gemini with PIX payment (no international credit card needed) and free credits to start: https://www.modelkiwi.com. WhatsApp: +5521999500402 — and join our channel: https://t.me/ModelkiwiOfficial.*