المستوى المستهدف: مبتدئ — مناسب لأي حد كتب أول prompt لـ Claude أو ChatGPT وحابب يفهم ليه أحيانًا الرد بيكون غلط رغم إن السؤال واضح.
لو سألت Claude "عندي 23 تفاحة، أكلت 5، اشتريت 12 كمان، عطيت نص اللي معايا لأخويا، فضل عندي كام؟" ولقيت الرد غلط، المشكلة مش في Claude. المشكلة إنك مطلبتش منه يفكّر. سطر واحد إضافي في الـ prompt بيرفع الدقة على benchmark GSM8K من 17.9% لـ 56.9% طبقًا لورقة Wei et al. من Google Research 2022.
المشكلة باختصار
الـ Large Language Models زي Claude بترد بسرعة. لو سألته سؤال محتاج خطوتين حسابيتين أو منطقيتين وقلتله "اطّلع لي الإجابة فقط"، هيختار أول إجابة معقولة بصريًا ويكتبها. النتيجة: ردود سطحية على أي سؤال فيه استدلال متعدد الخطوات.
الأسلوب اللي بيحلّ المشكلة دي اسمه Chain-of-Thought Prompting — اختصارًا CoT. الفكرة بسيطة: بدل ما تطلب الإجابة، اطلب من النموذج يكتب خطوات تفكيره الأول، ويدّيك الإجابة في الآخر.
ازاي بتشتغل الفكرة — مثال طفل في الصف الخامس
تخيّل إنك بتسأل طفل في الصف الخامس نفس سؤال التفاحات اللي فوق. الطفل اللي بيرد فورًا "15 تفاحة" غالبًا غلط. الطفل اللي بياخد ورقة وقلم ويكتب:
- 23 ناقص 5 = 18
- 18 زائد 12 = 30
- 30 ÷ 2 = 15 (لأن عطى نص اللي معاه)
بيوصل لـ 15 تفاحة وبيكون صح. الفرق مش في ذكاء الطفل، الفرق إنه قسّم المشكلة. Chain-of-Thought هو نفس الفكرة بالظبط مع Claude: مش بتدّيله ذكاء جديد، إنت بتفتحله مساحة يكتب فيها الخطوات اللي بياخدها ذهنيًا أصلاً.
التعريف العلمي بدقة
Chain-of-Thought Prompting أسلوب prompting بتطلب فيه من النموذج كتابة خطوات استدلال intermediate reasoning steps قبل الإجابة النهائية. الفكرة اتنشرت رسميًا في ورقة "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" من Wei et al. على NeurIPS 2022.
الورقة بتثبت تجريبيًا حاجتين مهمين:
- CoT بيرفع الأداء بشكل دراماتيكي على مهام الاستدلال (math، commonsense، symbolic)، لكن بشرط إن النموذج عنده ≥ 100B parameter. على نماذج أصغر، الفكرة بتبقى ضعيفة أو مالهاش تأثير.
- التحسّن مش لأن النموذج "بيتعلّم" حاجة جديدة — التحسّن لأن مساحة الـ output الأطول بتسمحله يستهلك compute أكتر قبل اختيار الإجابة. ده اللي اتسمى لاحقًا "test-time compute".
كود Python شغّال على Anthropic SDK
المقارنة الفعلية بين prompt عادي وprompt بـ CoT على نفس المسألة. شغّل الكود ده وهتشوف الفرق مباشرة: