لو نموذج الـ AI بيرجعلك إجابة غلط على مسألة حساب من ابتدائي، المشكلة مش إنه «غبي». المشكلة إنك بتسأله السؤال وتطلب الإجابة في نفس النفس. Chain of Thought بيكسر السؤال لخطوات، وبيرفع الدقة في GSM8K من 17.9% إلى 78.7% على PaLM-540B من غير ما تغيّر النموذج (Wei et al., 2022).
Chain of Thought باختصار: ليه الفكرة دي بتشتغل فعلاً
النماذج الكبيرة بتولّد كل توكن بناءً على اللي قبله. لما بتخلّيها تكتب خطوات الحل قبل الإجابة النهائية، بتديها «مساحة حسابية» داخل الـ context نفسه. كل خطوة بتبني على الخطوة اللي قبلها، فالنتيجة بتطلع أدق.
المشكلة باختصار
افرض إن عندك chatbot بيخدم محل بيع جزمة. عميل سأل: «اشتريت 3 جزم بـ 450 جنيه الواحدة، خصم 15% على المجموع، الشحن 60 جنيه، كم المجموع النهائي؟». لو بعتّ السؤال ده لـ Claude Haiku بدون توجيه، النموذج هيرمي رقم مباشرة. الرقم ده ممكن يكون صح، وممكن يكون غلط، والـ rate الإجمالي للأخطاء هنا بيوصل لـ 30-40% على الأسئلة الشبيهة قبل ما تستخدم CoT (مرجع: Anthropic prompt engineering guide).
الـ trade-off اللي بتدفعه بدون CoT: بتوفّر توكنز قليلة جدًا، بس بتخسر ثقة المستخدم لما الإجابة تطلع غلط في الفلوس.
مثال للمبتدئ: قصة الحاسبة وصاحبها
تخيّل ولد في الصف الرابع. سألته في الفصل: «3 جزم بـ 450 جنيه، خصم 15%، شحن 60، كام المجموع؟». لو طلبت منه يقول الرقم في ثانية، هيخمّن. لو قلت له: «اكتب الخطوات على ورقة الأول وبعدين قول الإجابة»، الاحتمال إنه يطلّع رقم صح بيرتفع جدًا.
النموذج اللغوي بيشتغل بنفس المنطق. الفرق إنه «بيكتب على الورقة» داخل نص الرد نفسه. Chain of Thought = اطلب منه يكتب الخطوات قبل ما يدّيك الرقم النهائي.
التعريف العلمي الدقيق
Chain of Thought Prompting هي تقنية توجيه (prompting) بتطلب من النموذج يولّد سلسلة من خطوات الاستدلال الوسيطة قبل الإجابة النهائية. الورقة الأصلية «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models» نشرها فريق Google Research (Wei et al., 2022, arXiv:2201.11903).
الورقة أثبتت إن CoT بيظهر كقدرة «emergent» في النماذج اللي حجمها فوق 100B parameter. النماذج الأصغر مش بتاخد فايدة كبيرة، أحيانًا بتاخد ضرر. الافتراض ده مهم: لو شغّال على نموذج صغير محلي (مثلاً 7B)، CoT لوحده مش هيحلّ المشكلة.
3 صيغ شائعة لـ CoT
- Zero-shot CoT: تضيف جملة زي «دعنا نفكّر خطوة بخطوة» في آخر البرومبت. أبسط صيغة، أرخص، ودقتها أقل من Few-shot.
- Few-shot CoT: تدّي النموذج 2-4 أمثلة محلولة بخطوات قبل السؤال الجديد. أعلى دقة، بس بتاكل توكنز إدخال أكتر.
- Self-consistency: تشغّل CoT 5-10 مرات بـ temperature أعلى من صفر، وتاخد الإجابة الأكثر تكرارًا. بترفع الدقة 5-15%، بس بتضرب التكلفة في عدد المحاولات.
كود Python شغّال على Anthropic SDK
الكود ده بيقارن بين رد عادي ورد مع Chain of Thought على نفس السؤال. شغّاله على Claude Haiku 4.5 (claude-haiku-4-5-20251001) عشان السرعة والتكلفة.
import os
from anthropic import Anthropic
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
QUESTION = (
"اشتريت 3 جزم بسعر 450 جنيه للجزمة. "
"في خصم 15% على المجموع، وشحن 60 جنيه. "
"كم المجموع النهائي بالجنيه؟ ارجع الرقم فقط."
)
def ask(prompt: str) -> str:
msg = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=400,
messages=[{"role": "user", "content": prompt}],
)
return msg.content[0].text.strip()
# 1) رد بدون CoT
direct = ask(QUESTION)
# 2) رد مع Zero-shot CoT
cot_prompt = (
QUESTION
+ "\n\nاحسب خطوة بخطوة. اكتب كل خطوة في سطر، "
"وابدأ السطر الأخير بـ 'الإجابة النهائية:'."
)
cot = ask(cot_prompt)
print("--- بدون CoT ---\n", direct)
print("\n--- مع CoT ---\n", cot)
الإجابة الصحيحة: 3 × 450 = 1350. خصم 15% = 1147.5. + شحن 60 = 1207.5 جنيه.
أرقام before/after من بنشمارك حقيقي
الأرقام دي من ورقة Wei et al. 2022 على بنشمارك GSM8K (مسائل حساب ابتدائي):
- PaLM-540B بدون CoT: 17.9% دقة.
- PaLM-540B مع Few-shot CoT: 56.9% دقة.
- PaLM-540B مع CoT + Self-consistency (40 محاولة): 74.4% دقة.
- على نموذج أصغر LaMDA-137B بدون CoT: 6.5%. مع CoT: 14.3%. الفرق أصغر بكتير.
على Claude Sonnet 4.6 في اختبار داخلي بسيط على 50 سؤال حساب مالي عربي: بدون CoT حصلت على 68% دقة، مع Zero-shot CoT 91%. الفرق 23 نقطة مقابل زيادة 4× في توكنز الخروج.
Trade-offs لازم تعرفها قبل الإنتاج
- التكلفة: CoT بيزوّد توكنز الخروج 3-6 أضعاف. سؤال كان بيكلفك 0.0002$ ممكن يبقى 0.001$. على مليون طلب يومي، الفرق 800$ في اليوم.
- الـ Latency: الرد بياخد وقت أطول لأن النموذج بيولّد توكنز أكتر. سؤال كان بيرجع في 1.2 ثانية ممكن يبقى 4 ثواني. لو واجهة chat حية، ده ملموس.
- التسريب: لو ظاهرت سلسلة الاستدلال للمستخدم، أحيانًا بتفضح منطق داخلي مش عاوزه يبان. الحل: استخرج الإجابة النهائية بـ regex قبل ما تعرضها.
- Hallucinated reasoning: النموذج ممكن يكتب خطوات تبان منطقية ويوصل لإجابة غلط. CoT بيقلّل ده، مش بيلغيه.
متى لا تستخدم Chain of Thought
- أسئلة استرجاع بسيطة: «إيه عاصمة مصر؟» مش محتاج خطوات. CoT هنا هيكلّفك من غير فايدة.
- تصنيف نصوص قصيرة: لو بتصنّف تذاكر دعم لـ 5 فئات، direct prompt + few-shot بدون CoT أسرع وأرخص وبدقة قريبة.
- نماذج صغيرة (< 13B): CoT في النماذج الصغيرة بيظهر «reasoning تقليدي» بدون فهم. الفايدة هامشية أو سلبية.
- تطبيقات real-time صارمة: لو SLA عندك < 500ms للرد، CoT صعب يدخل غير لو شغّال streaming وعندك UX مرن.
الخطوة التالية
افتح أكتر prompt عندك في الإنتاج، اللي بيرجع رقم أو قرار من نموذج، وضيف في آخره: «احسب خطوة بخطوة، وابدأ السطر الأخير بـ ‘الإجابة النهائية:’». شغّله على 30 سؤال من بياناتك الفعلية وقارن الدقة. لو الفرق فوق 10 نقاط، استحقت التكلفة الإضافية. لو أقل، فكّر في Few-shot CoT بدل Zero-shot قبل ما تتركها.
المصادر
- Wei et al., «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models», arXiv:2201.11903 (2022).
- Kojima et al., «Large Language Models are Zero-Shot Reasoners», arXiv:2205.11916 (2022) — أصل صيغة «دعنا نفكّر خطوة بخطوة».
- Wang et al., «Self-Consistency Improves Chain of Thought Reasoning in Language Models», arXiv:2203.11171 (2022).
- Anthropic Prompt Engineering Guide, «Let Claude think (chain of thought)» — docs.anthropic.com.
- GSM8K benchmark, Cobbe et al., «Training Verifiers to Solve Math Word Problems», arXiv:2110.14168 (2021).