المستوى: مبتدئ — وقت القراءة: 6 دقائق
لو سألت AI سؤال زي "معايا 23 تفاحة، أكلت 5، اشتريت ضعف اللي فضل، عندي كام؟" وجالك رد غلط، المشكلة مش في ذكاء النموذج. المشكلة إنه بيحاول يجاوب من غير ما يفكّر. Chain-of-Thought بيحل ده بسطر واحد، وبيرفع الدقة في المسائل المعقدة بنسبة توصل لـ 39% حسب بحث Google Brain سنة 2022.
إيه هو Chain-of-Thought ببساطة شديدة
تخيّل تلميذ في الصف بيحل امتحان رياضيات. لو سألته "كام 17 × 24؟" وطلبت منه يقولك الناتج فورًا في ثانية، احتمال يخطئ كبير. لكن لو قلتله "اكتب الخطوات على الورقة الأول"، هيقسّمها: 17 × 20 = 340، 17 × 4 = 68، 340 + 68 = 408. الإجابة بقت أدق لأنه فكّر بصوت عالي بدل ما يحزر.
نماذج اللغة الكبيرة شغّالة بنفس المنطق بالظبط. لمّا تطلب منها تفكّر خطوة بخطوة، بتقسّم المسألة لمسائل أصغر، وكل خطوة بتبني على اللي قبلها. النتيجة: دقة أعلى في المسائل اللي محتاجة أكتر من خطوة.
التعريف العلمي بدقة
Chain-of-Thought أو اختصارًا CoT، هو أسلوب prompting قدّمه Jason Wei وفريق Google Brain في ورقة بحثية اتنشرت يناير 2022. الفكرة: بدل ما تطلب من الـ LLM الإجابة النهائية مباشرة، تطلب منه يكتب خطوات تفكيره قبل ما يدّيك الإجابة. الورقة أثبتت إن CoT بيرفع الدقة على benchmark GSM8K (مسائل رياضية كلامية) من 18% إلى 57% على نموذج PaLM بحجم 540 مليار parameter.
المشكلة: ليه الإجابة المباشرة بتفشل
نماذج اللغة بتولّد token واحد في كل مرة بناءً على اللي قبله. لو طلبت الإجابة النهائية على طول، النموذج بيحاول يحزر الناتج من غير "مساحة" يحط فيها العمليات الوسيطة. زي ما تطلب من حد يحل معادلة من غير ورقة وقلم — ممكن يجيبها صح في المسائل السهلة، بس في المسائل اللي فيها 3 خطوات أو أكتر، احتمال الخطأ بيزيد بشكل أُسّي.
الحل: سطر واحد بيغيّر كل حاجة
أبسط شكل لـ CoT هو إضافة جملة "فكّر خطوة بخطوة" أو "Think step by step" في الـ prompt. مفيش كود معقد، مفيش fine-tuning، مفيش setup. سطر واحد بيخلّي النموذج ينتج reasoning قبل الإجابة.
مثال تنفيذي شغّال على Anthropic SDK
import anthropic
client = anthropic.Anthropic()
prompt_direct = """محل بيع 8 لابتوبات بسعر 12,500 جنيه للوحدة.
كل لابتوب تكلفته 9,800 جنيه. الضريبة 14% على الربح.
كام صافي الربح بعد الضريبة؟"""
prompt_cot = prompt_direct + """
فكّر خطوة بخطوة:
1. احسب إجمالي المبيعات
2. احسب إجمالي التكلفة
3. احسب الربح الإجمالي
4. احسب الضريبة (14% من الربح)
5. اطرح الضريبة وادّيني الناتج النهائي في سطر منفصل"""
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=[{"role": "user", "content": prompt_cot}]
)
print(response.content[0].text)