LangChain يفقد محتوى الاستدلال في نماذج CoT: كيف نعالج خللًا في التكامل مع مزوّدي LLM

اكتشف مطوّرون خللًا خطيرًا في LangChain: فئات ChatOpenAI وChatDeepSeek وغيرها من فئات الدردشة لا تمرّر كتلة reasoning content عند التكامل مع مزوّدي LLM. وطوال الوقت الذي «يفكّر» فيه النموذج، لا يرى المستخدم سوى شاشة فارغة. حلّل المؤلف المشكلة عمليًا على نموذج stepfun/step-3.5-flash ومنصة polza.ai، واقترح حلًا عمليًا يقوم على توسيع الفئات القياسية.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
LangChain يفقد محتوى الاستدلال في نماذج CoT: كيف نعالج خللًا في التكامل مع مزوّدي LLM
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال

واجه المطوّرون الذين يعملون مع نماذج CoT عبر LangChain مفاجأة غير سارة: فئات الدردشة في الإطار، ومنها ChatOpenAI وChatDeepSeek وما يماثلها، لا تحتفظ بكتلة reasoning content في الإجابة النهائية. وهذا يعني أن المستخدمين ينتظرون ببساطة بينما «يفكّر» النموذج دون أي تغذية راجعة، فيما تختفي عملية الاستدلال نفسها دون أثر.

وتمسّ المشكلة التكامل مع معظم المزوّدين والمجمّعات الشائعة لنماذج LLM. فعندما يولّد نموذج مزوّد بخاصية الاستدلال، مثل نماذج عائلة DeepSeek-R1 أو step-3.5-flash من Stepfun، إجابةً ما، تُسجَّل عملية الاستدلال الداخلية في كتلة منفصلة باسم reasoning_content. وهذه الكتلة تحديدًا هي التي تضيع: فلا ChatOpenAI ولا غيرها من فئات الدردشة في LangChain تمرّرها إلى بقية سلسلة المعالجة.

لماذا يهم ذلك؟ نماذج CoT (Chain of Thought، أي سلسلة الاستدلال) مدرَّبة تحديدًا على صياغة خطوات تفكير صريحة قبل تقديم الإجابة النهائية. ويختارها المطوّرون من أجل هذه الشفافية بالذات: إمكانية أن يُعرض على المستخدم كيف توصّل النموذج إلى القرار، أو استخدام الخطوات الوسيطة في معالجة لاحقة داخل خط الإنتاج (pipeline). وحين تضيع كتلة الاستدلال، تفقد مقاربة CoT قيمتها.

وغياب بثّ reasoning content (streaming) يضرّ مباشرةً بتجربة المستخدم (UX). فالمستخدم يرى شاشة فارغة بينما يجري النموذج سلسلة استدلال يبلغ طولها عدة مئات من الرموز (tokens). ويرتفع زمن الاستجابة المحسوس بشكل حاد، مع أن النموذج يعمل فعليًا منذ البداية. وبالنسبة إلى المنتجات التي تُعدّ فيها سرعة الإدراك أمرًا حاسمًا، فهذا عيب ملموس.

اكتشف المؤلف المشكلة عمليًا أثناء عمله مع نموذج stepfun/step-3.5-flash عبر المزوّد الروسي polza.ai. فالمزوّد يمرّر reasoning content ضمن التدفق، لكن LangChain لا يلتقطه ولا يمرّره إلى ما بعده. ولم يعالج أي من المجمّعات التي جُرّبت المشكلة من جانبه.

وجاء الحل عبر توسيع فئات الدردشة القياسية في LangChain. وجوهر المقاربة هو إعادة تعريف الدالة التي تعالج الأجزاء المتدفقة (chunks) بحيث تستخرج صراحةً الحقل reasoning_content من ردّ المزوّد وتضيفه إلى بنية AIMessage الناتجة. وبهذا تصبح كتلة الاستدلال متاحة في وضع البثّ وفي الاستدعاء العادي للنموذج على حد سواء.

وعمليًا يعني ذلك إنشاء فئة دردشة مخصّصة ترث من ChatOpenAI، مع إعادة تعريف الدالة _stream ومنطق تجميع الرسالة النهائية. وأثناء البثّ يبدأ reasoning_content بالظهور فورًا، بالتوازي مع توليد النموذج لاستدلاله، وهو ما يحسّن استجابة الواجهة بصورة جوهرية.

وتكمن أهمية هذه الحالة في أنها ليست حلًا تقنيًا فحسب، بل عَرَضٌ لمشكلة أوسع: فالأُطر العامة الغرض مثل LangChain تتأخر في التكيّف مع خصوصيات الفئات الجديدة من النماذج. فمعايير API لنقل reasoning content تختلف من مزوّد إلى آخر، ولا يوجد نهج موحّد، وإلى أن يظهر، سيضطر المطوّرون إلى سدّ الثغرات بأنفسهم عبر التخصيص.

وبالنسبة إلى الفرق التي تبني منتجاتها على نماذج CoT وLangChain، يوفّر النهج الموصوف قالبًا جاهزًا للتوسيع. ويمكن تكراره مع أي مزوّد يعيد reasoning_content بصيغة متوافقة مع OpenAI API.

القصة
ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…