Ga naar inhoud

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 persistence

Met 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 content

Versleuteling

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

BeperkingWaarde
Maximale streamduur5 minuten
Detectie-timeout voor orphans30 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