Streaming
Streaming cho phép agent gửi phản hồi từng token khi LLM tạo. Người dùng thấy văn bản xuất hiện thời gian thực thay vì chờ phản hồi đầy đủ.
API StreamSession
Bắt đầu stream với agent.stream():
interface StreamSession { delta(chunk: string): Promise<void>; // Gửi một chunk done(finalPayload: SendPayload): Promise<void>; // Hoàn thành stream abort(): void; // Hủy stream}Sử Dụng Cơ Bản
const session = agent.stream(conversationId);// SDK gửi frame stream.start với idempotency key
for await (const chunk of llmStream) { await session.delta(chunk); // Mỗi delta được mã hóa độc lập và gửi}
await session.done({ type: "text", content: fullText,});// SDK gửi stream.done với payload mã hóa đầy đủ để lưu trữVới 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, });});Hủy Stream
Hủy stream nếu người dùng gửi tin nhắn mới hoặc xảy ra lỗi:
session.abort();// SDK gửi frame stream.abort; client loại bỏ nội dung chưa hoàn thànhMã Hóa
Mỗi frame delta được mã hóa độc lập. Mỗi chunk là payload mã hóa khép kín. Frame done cuối cùng chứa tin nhắn mã hóa hoàn chỉnh để máy chủ lưu trữ.
Giới Hạn
| Ràng buộc | Giá trị |
|---|---|
| Thời gian stream tối đa | 5 phút |
| Timeout phát hiện mồ côi | 30 giây (không có delta) |
| Nhóm lớn (201-500 thành viên) | Streaming bị vô hiệu hóa |
Nếu máy chủ phát hiện timeout stream, nó gửi frame stream.error. SDK hủy phiên và phát lỗi qua onEvent. Agent quyết định có bắt đầu lại hay không.
Bước Tiếp Theo
- Artifact — Gửi tương tác có cấu trúc
- Gửi Tin Nhắn — Loại tin nhắn không streaming
- Sự Kiện WebSocket — Tham chiếu frame sự kiện stream