Streaming
Streaming дозволяє агенту надсилати відповіді токен за токеном у міру генерації LLM. Користувачі бачать текст у реальному часі замість очікування повної відповіді.
StreamSession API
Розпочніть потік за допомогою agent.stream():
interface StreamSession { delta(chunk: string): Promise<void>; // Надіслати фрагмент done(finalPayload: SendPayload): Promise<void>; // Завершити потік abort(): void; // Скасувати потік}Базове використання
const session = agent.stream(conversationId);// SDK надсилає кадр stream.start з ключем ідемпотентності
for await (const chunk of llmStream) { await session.delta(chunk); // Кожен delta незалежно шифрується та надсилається}
await session.done({ type: "text", content: fullText,});// SDK надсилає stream.done з повним зашифрованим payload для збереженняЗ 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, });});Скасування потоку
Скасуйте потік, якщо користувач надсилає нове повідомлення або виникає помилка:
session.abort();// SDK надсилає кадр stream.abort; клієнт відкидає частковий контентШифрування
Кожен кадр delta шифрується незалежно. Це означає, що кожен фрагмент — це самодостатній зашифрований payload. Фінальний кадр done містить повне зашифроване повідомлення для збереження на сервері.
Обмеження
| Обмеження | Значення |
|---|---|
| Максимальна тривалість потоку | 5 хвилин |
| Тайм-аут виявлення сиріт | 30 секунд (без delta) |
| Великі групи (201-500 учасників) | Streaming вимкнено |
Якщо сервер виявляє тайм-аут потоку, він надсилає кадр stream.error. SDK перериває сесію та передає помилку через onEvent. Агент вирішує, чи починати заново.
Наступні кроки
- Artifacts — Надсилання структурованих взаємодій
- Надсилання повідомлень — Непотокові типи повідомлень
- WebSocket Events — Довідник кадрів потокових подій