Streaming
Streaming laat je agent reacties token-voor-token versturen terwijl het LLM ze genereert. Gebruikers zien tekst in realtime verschijnen in plaats van te wachten op de volledige reactie.
StreamSession API
Start een stream met agent.stream():
interface StreamSession { delta(chunk: string): Promise<void>; // Send a chunk done(finalPayload: SendPayload): Promise<void>; // Complete the stream abort(): void; // Cancel the stream}Basisgebruik
const session = agent.stream(conversationId);// SDK sends a stream.start frame with an idempotency key
for await (const chunk of llmStream) { await session.delta(chunk); // Each delta is independently encrypted and sent}
await session.done({ type: "text", content: fullText,});// SDK sends stream.done with the full encrypted payload for persistenceMet OpenAI
agent.onMessage(async (msg) => { const session = agent.stream(msg.conversation_id);
const stream = await openai.chat.completions.create({ model: "gpt-4o", messages: [{ role: "user", content: msg.content }], stream: true, });
let fullText = "";
for await (const chunk of stream) { const delta = chunk.choices[0]?.delta?.content ?? ""; if (delta) { fullText += delta; await session.delta(delta); } }
await session.done({ type: "text", content: fullText, });});Een stream afbreken
Annuleer een stream als de gebruiker een nieuw bericht stuurt of er een fout optreedt:
session.abort();// SDK sends a stream.abort frame; the client discards partial contentVersleuteling
Elk delta-frame wordt onafhankelijk versleuteld. Dit betekent dat elke chunk een op zichzelf staande versleutelde payload is. Het uiteindelijke done-frame bevat het volledige versleutelde bericht voor server-side persistentie.
Limieten
| Beperking | Waarde |
|---|---|
| Maximale streamduur | 5 minuten |
| Detectie-timeout voor orphans | 30 seconden (geen delta) |
| Grote groepen (201-500 leden) | Streaming uitgeschakeld |
Als de server een stream-timeout detecteert, stuurt hij een stream.error-frame. De SDK breekt de sessie af en geeft de fout door via onEvent. De agent besluit of deze opnieuw start.
Volgende stappen
- Artifacts — Verstuur gestructureerde interacties
- Berichten versturen — Niet-streaming berichttypen
- WebSocket-gebeurtenissen — Referentie voor stream-gebeurtenisframes