← العودة إلى المقالات

🩺 لماذا بث LLM فارغ؟ دليل عملي لاستجابات SSE المعطلة

إذا سبق لك استدعاء API متوافق مع OpenAI مع تمكين البث ولم يتِك شيء، فأنت لست وحدك. بعد تصحيح عشرات الحالات (وبناء أداة agent-stream-doctor لأتمتتها)، أرى دائماً نفس أنماط الفشل الأربعة.

١. الردود الاستدلالية فقط: بعض النماذج ترسل الإجابة كاملة في قناة reasoning وتترك قناة content فارغة. البث «يعمل» لكن واجهتك لا تعرض شيئاً. افحص حقول delta دائماً.

٢. غياب finish_reason: عندما يقتطع البروكسي القطعة الأخيرة يختفي finish_reason ويستكتب عملاء كثيرون الرسالة بصمت. اعتبر غيابه علامة خطر.

٣. تلف إطار SSE: انقسام أحرف UTF-8 متعددة البايتات عبر حدود القطع أو إعادة كتابة البادئة data: تكسر المحللات بصمت. سجّل الإطارات الخام قبل التحليل.

٤. استدعاءات أدوات مبتورة: دلتا tool_call الجزئية التي لا تكتمل تُعلّق الوكيل. جمّع الحجج وتحقق منها قبل التنفيذ.

الحل واحد دائماً: راقب البث الخام أولاً ثم فكّر في البروتوكول. هذا بالضبط ما تفعله أداتي التشخيصية — راجعها على GitHub.

تواصل