نظرة عامة
يوفر CrewAI عقد بث قائمًا على الإطارات للأنظمة التي تحتاج إلى أكثر من أجزاء نصية بسيطة. يصدر العقد كائناتStreamFrame مرتبة لأحداث دورة حياة Flow، وتوكنات LLM المباشرة، ونشاط الأدوات، ورسائل المحادثة، والأحداث المخصصة.
استخدم هذه الواجهة عندما تبني واجهة مستخدم، أو جسر خدمة، أو تطبيق طرفية، أو وقت تشغيل نشر يحتاج إلى تدفق ثابت من الأحداث المهيكلة أثناء تشغيل Flow أو دورة محادثة أو استدعاء LLM مباشر.
StreamFrame
لكل إطار نفس الغلاف:channel هو أسرع طريقة لتوجيه الإطارات في المستهلكين:
| القناة | تحتوي على |
|---|---|
llm | توكنات وأجزاء التفكير من أحداث بث LLM |
flow | دورة حياة Flow، وتنفيذ الدوال، والتوجيه، وأحداث الإيقاف/الاستئناف |
tools | أحداث استخدام الأدوات |
messages | أحداث سجل المحادثة |
lifecycle | أحداث دورة حياة وقت التشغيل التي لا تخص قناة أخرى |
custom | أحداث لا تُطابق قناة مدمجة |
frame.type على نوع الحدث المصدر، حتى يتمكن المستهلكون من التعامل مع أحداث محددة داخل القناة.
بث Flow
عيّنstream=True على Flow لجعل kickoff() يعيد جلسة stream:
stream.result. يؤدي الوصول إلى النتيجة مبكرًا إلى رفع RuntimeError حتى لا يتعامل المستهلكون بالخطأ مع تشغيل جزئي على أنه مكتمل.
يمكنك أيضًا استدعاء flow.stream_events(...) مباشرة عندما تريد البث لاستدعاء واحد بدون تعيين stream=True على مثيل Flow.
التصفية حسب القناة
يوفرStreamSession إسقاطات حسب القناة تحافظ على ترتيب الإطارات العالمي داخل القناة المحددة:
| الإسقاط | الإطارات |
|---|---|
stream.events | كل الإطارات |
stream.llm | إطارات LLM |
stream.messages | إطارات رسائل المحادثة |
stream.flow | إطارات Flow |
stream.tools | إطارات الأدوات |
stream.interleave([...]) | مجموعة مختارة من القنوات |
stream.interleave(["flow", "llm", "messages"]) عندما يريد المستهلك بعض القنوات فقط لكنه ما زال يحتاج إلى ترتيبها النسبي.
البث غير المتزامن
استخدمastream() للمستهلكين غير المتزامنين:
بث استدعاء LLM مباشر
ما زالllm.call(...) يعيد النتيجة النهائية المجمعة. استخدم llm.stream_events(...) عندما تريد التكرار على الأجزاء فور وصولها مع الحفاظ على حمولة الحدث المهيكلة:
llm.stream_events(...) البث مؤقتًا للاستدعاء المغلف ثم يستعيد إعداد stream السابق في LLM بعد ذلك. تستمر تكاملات المزودين في إصدار أحداث بث LLM الأساسية؛ يوفر هذا المساعد واجهة مكرر مشتركة فوق تلك الأحداث لكل مزودي LLM.
دورات المحادثة
يمكن للتدفقات المحادثية بث دورة مستخدم واحدة باستخدامstream_turn():
stream_turn()، يفعّل مسار الإجابة المحادثية المدمج بث توكنات LLM لذلك الدور ثم يستعيد إعداد stream السابق في LLM بعد ذلك. يجب على معالجات المسارات المخصصة التي تنشئ Agents أو مثيلات LLM خاصة بها تهيئة تلك النماذج للبث إذا احتاجت إلى إخراج على مستوى التوكن.
التنظيف
استخدم الجلسة كمدير سياق عندما يكون ذلك ممكنًا. إذا انقطع اتصال العميل قبل استهلاك stream بالكامل، فأغلق الجلسة صراحة:await stream.aclose().
بث الأجزاء القديم
ما زال بث Crew معstream=True يعيد واجهة CrewStreamingOutput المعتمدة على الأجزاء والموضحة في بث تنفيذ Crew. وما زالت استدعاءات llm.call(...) المباشرة تعيد نتيجة LLM النهائية. عقد الإطارات مخصص لأوقات التشغيل التي تحتاج إلى غلاف حدث ثابت عبر Flows، واستدعاءات LLM المباشرة، ودورات المحادثة، والأدوات، والرسائل.