Lesson 28 — Beginner

Streaming LLM Responses

Poora jawab ek saath aane mein seconds lagte hain — user sochta hai app hang ho gaya. Streaming isi ka ilaaj hai: model har token generate karte hi chhota chunk bhejta hai aur screen render hoti rehti hai. Is lesson mein hum stream loop, TTFT, accumulation aur interruption handling dekhenge.

⏱ 10 min• Beginner• First API Calls & Conversation State

Streaming kya hai

WHAT

Streaming mein server poora jawab pehle nahi banata — model har token ke baad chhota chunk bhej deta hai (SSE ke through). Client un chunks ko jod kar live render karta hai.

WHEN

User-facing chat, lamba generation (code, reports), voice apps — kahin bhi intezaar boring lage. Chhote classification calls mein streaming ki zarurat nahi.

WHERE

ChatGPT jaisa typing effect, CLI assistants, IDE coding tools, voice bots — lagbhag har modern AI product streaming hi use karta hai.

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Chai ki recipe 4 line mein batao."}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)   # jo aaya wahi turant dikhao
print()

stream=True hote hi response object ki jagah iterator milta hai. Har chunk mein sirf naya hissa (delta) hota hai — purana text kabhi dobara nahi aata. Tumhara kaam un hisso ko jodna aur dikhana hai.

TTFT, generation speed aur perceived latency

t=0.0s  request bheji
t=0.4s  pehla token aaya      <-- TTFT (time to first token)
t=0.5s  token 2 aaya
t=0.6s  token 3 aaya          <-- generation speed (tokens/sec)
...
t=4.2s  last token aaya       <-- total latency

User experience:
non-streaming : 0.0s ... kaali screen ... 4.2s -> EK SAATH poora jawab
streaming     : 0.4s pehla shabd, phir flow   -> LAGTA HAI turant jawab
Decision rule: 1-2 second ke chhote JSON/classification outputs mein streaming mat karo — parsing bina uske aasan hai. Lambi user-facing text mein streaming hamesha.

Accumulate karo, interruption handle karo

def stream_with_safety(model, messages):
    parts = []
    try:
        for chunk in client.chat.completions.create(
            model=model, messages=messages, stream=True, timeout=30
        ):
            delta = chunk.choices[0].delta.content
            if delta:
                parts.append(delta)
                yield delta
    except KeyboardInterrupt:            # user ne rok diya
        yield "\n[roka gaya]"
    except Exception as e:               # network drop, server error
        yield f"\n[stream toota: {type(e).__name__}]"
    finally:
        text = "".join(parts)            # jo bhi aaya tak — accumulate
        print(f"--- mila {len(parts)} chunks, {len(text)} chars ---")
Trap: finish_reason aksar aakhri chunk mein hi aata hai. Stream ke beech mein tootne par tumhe sirf "incomplete" ka pata chalega — isliye completion flag kabhi na chhodo.

SSE — raw stream kaisa dikhta hai

data: {"choices":[{"delta":{"role":"assistant"},"index":0}]}

data: {"choices":[{"delta":{"content":"Chai"},"index":0}]}

data: {"choices":[{"delta":{"content":" ki"},"index":0}]}

data: {"choices":[{"delta":{},"finish_reason":"stop","index":0}]}

data: [DONE]
Debug tip: Stream theek nahi chal raha ho toh curl ya network tab mein raw SSE lines dekho — SDK ka bug hai ya provider ka, turant pata chal jaata hai.

Exercise

Question: Pehle token tak ka time kis acronym se jaana jaata hai?

Question: Stream ke chunks ko jod kar poora text dobara banana kis process ka naam hai? (ek word)

Question: OpenAI style SSE stream ka end marker kya hota hai?

Question: Streaming ka main fayda kya hai — total latency ghatati hai ya perceived latency behtar hoti hai?

Common mistakes

Desi example: Live cricket score vs aakhri result

TV par ball-by-ball score aata hai (streaming), newspaper mein subah aakhri result chhapta hai (non-streaming). Match ka total time dono mein same — fark sirf intezaar ke ehsaas ka hai:

text
Non-streaming : 0s ..... kaali screen ..... 4s -> "Match jeet gaya"
Streaming     : 0.4s "Bharat" ... "ne" ... "match" ... "jeet gaya"

TTFT = pehla word aane tak ka intzaar
Fayda: intzaar kam lage (perceived latency), total time wahi!
Interview angle — yahan se sawaal aate hain
  • Q: TTFT aur total latency mein farq? — TTFT pehle token tak, total poore jawab tak; streaming ka ehsaas TTFT se judta hai.
  • Q: Streaming mein kaise pata chalta hai jawab poora hua? — Aakhri chunk ka finish_reason ya [DONE] marker se; beech mein toote toh partial hi milega.
  • Q: Interrupt hui stream ke saath kya karte hain? — Partial text accumulate karke clearly mark karo, log mein completed=false, user ko adhoora dikhao.
  • Q: Har chunk mein kya aata hai? — Sirf naya delta (content ka chhota hissa); role aur finish_reason alag chunks mein.
Lesson complete?

Streaming clear. Agla lesson — LangChain Fundamentals — mein dekhenge orchestration libraries raw SDK ke upar kya layer lagati hain.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course