İçeriğe geç

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ành

Mã 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ộcGiá trị
Thời gian stream tối đa5 phút
Timeout phát hiện mồ côi30 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