AI-agenter · Lektion

Strömmande svar (SSE)

Strömma LLM-utdata token för token via Server-Sent Events för snabba användargränssnitt och tydlig förloppsvisning.

Lektion 3 av 413 steg

Strömmande svar (SSE) är en gratis lektion i AI-agenter på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-agenter, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-agenter innehåller totalt 4 lektioner.

Varför strömma?

Utan strömning måste Ni vänta på hela svaret innan Ni visar något. Om ett svar på 50 token tar 5 sekunder ser användaren ingenting under dessa 5 sekunder.

Med strömning visas token allt eftersom de anländer – den totala tiden är densamma, men användarupplevelsen känns omedelbar.

Server-Sent Events (SSE)

OpenAI och Anthropic strömmar över SSE – ett enkelriktat HTTP-protokoll där servern skickar händelser i formatet data: {...}\n\n.

De flesta SDK:er döljer SSE bakom ett iteratorgränssnitt.

Strömning med OpenAI

Ange stream=True och iterera över svaret:

stream = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end='', flush=True)

Samla in hela svaret

Samla deltas för att få den slutliga strängen:

buf = []
for chunk in stream:
    delta = chunk.choices[0].delta.content or ''
    buf.append(delta)
    print(delta, end='', flush=True)

full_text = ''.join(buf)
messages.append({'role': 'assistant', 'content': full_text})

Strömning med Anthropic

Samma mönster, men med ett något annorlunda API:

with client.messages.stream(
    model='claude-sonnet-4-5',
    max_tokens=1024,
    messages=messages,
) as stream:
    for text in stream.text_stream:
        print(text, end='', flush=True)

    final = stream.get_final_message()
    print('\ndone, tokens:', final.usage.output_tokens)

Strömmande verktygsanrop

Även verktygsanrop strömmas. Med OpenAI anländer funktionsnamnet och argumenten i delar:

for chunk in stream:
    delta = chunk.choices[0].delta
    if delta.tool_calls:
        for tc in delta.tool_calls:
            # tc.function.name and tc.function.arguments arrive as partial strings
            pass

Baktryck och avbrytning

Om användaren stänger sidan bör Ni avbryta strömmen för att sluta förbruka token:

try:
    for chunk in stream:
        if request_was_cancelled():
            stream.close()
            break
finally:
    stream.close()

Strömning genom en webbserver

Använd StreamingResponse med FastAPI:

from fastapi.responses import StreamingResponse

def token_generator():
    for chunk in stream:
        delta = chunk.choices[0].delta.content or ''
        yield f'data: {delta}\n\n'

return StreamingResponse(token_generator(), media_type='text/event-stream')

Buffra meningar

För text-till-tal eller segmenterad visning bör Ni buffra tills en mening är färdig:

buf = ''
for chunk in stream:
    buf += chunk.choices[0].delta.content or ''
    while '. ' in buf:
        sentence, buf = buf.split('. ', 1)
        speak(sentence + '.')

Parsa strömmad JSON

För JSON-utdata kan Ni inte parsa mitt i strömmen. Alternativen är:

  • Buffra hela utdatan och parsa den en gång
  • Använd en strömmande JSON-parser (ijson) för att skicka ut fält allt eftersom de blir färdiga

Latensmått: TTFT och TPS

  • TTFT – tid till första token (upplevd responsivitet)
  • TPS – token per sekund (genomströmning)

Strömning optimerar TTFT, inte den totala tiden. Sikta på TTFT < 500 ms för en chattupplevelse.

Varför strömma?

Vilken är den främsta fördelen med strömning?

Sammanfattning

Strömning förbättrar användarupplevelsen, men inte hastigheten. Implementera det i alla agenter som kommunicerar med människor i realtid.

Gratis att börja

Lär dig AI-agenter med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
60
Lektioner
239

Vanliga frågor

Är lektionen ”Strömmande svar (SSE)” gratis?

Ja – hela texten till ”Strömmande svar (SSE)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-agenter, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-agenter innehåller totalt 4 lektioner.

Vad lär jag mig i ”Strömmande svar (SSE)”?

Strömma LLM-utdata token för token via Server-Sent Events för snabba användargränssnitt och tydlig förloppsvisning. Ni övar på AI-agenter med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AI-agenter?

Du behöver inga förkunskaper. Utbildningen i AI-agenter på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Strömmande svar (SSE)”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AI-agenter-lektionen?

Ja. Varje AI-agenter-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Anropa OpenAI API: chat.completions
  2. Anropa Anthropic API: messages
  3. Strömmande svar (SSE)
  4. Koll på kostnader: tokenräkning och budgetar
← Tillbaka till AI-agenter