تخطَّ إلى المحتوى

البث

البث يتيح لوكيلك إرسال الردود رمزاً برمز أثناء إنشاء LLM لها. يرى المستخدمون النص يظهر في الوقت الحقيقي بدلاً من انتظار الرد الكامل.

واجهة StreamSession

ابدأ بثاً بـ 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
}

الاستخدام الأساسي

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

مع 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 sends a stream.abort frame; the client discards partial content

التشفير

كل إطار delta مشفّر بشكل مستقل. هذا يعني أن كل جزء هو حمولة مشفرة قائمة بذاتها. إطار done النهائي يحمل الرسالة المشفرة الكاملة للتخزين من جانب الخادم.

الحدود

القيدالقيمة
مدة البث القصوى5 دقائق
مهلة كشف اليتيم30 ثانية (بدون delta)
المجموعات الكبيرة (201-500 عضو)البث معطّل

إذا اكتشف الخادم مهلة بث، يرسل إطار stream.error. يُلغي SDK الجلسة ويُصدر الخطأ عبر onEvent. الوكيل يقرر ما إذا كان سيعيد البدء.

الخطوات التالية