زنجیره تفکر (Chain of Thought) در پرامپت نویسی، یک تکنیک است که مدل زبانی را به استدلال گام‌به‌گام وادار می‌کند تا به‌جای ارائه پاسخ نهایی، مسیر رسیدن به پاسخ را نشان دهد. این تکنیک، دقت مدل را در وظایف استدلالی مانند ریاضیات، منطق و برنامه‌نویسی به‌طور چشمگیری افزایش می‌دهد. برای درک این تکنیک، ابتدا باید با ساختار یک پرامپت مؤثر آشنا باشیم و سپس جایگاه زنجیره تفکر در آن را تحلیل کنیم.

در پروژه‌هایی که به حل مسائل پیچیده نیاز داشتیم، دیده‌ام که افزودن یک جمله ساده مانند «گام‌به‌گام استدلال کن» می‌تواند دقت خروجی را تا چندین برابر افزایش دهد. این تکنیک به مدل اجازه می‌دهد به‌جای پرش مستقیم به پاسخ، مسیر رسیدن به آن را طی کند و همین ویژگی، احتمال خطا را کاهش می‌دهد. اگر با استفاده از مثال در پرامپت آشنا هستید، آماده‌اید تا وارد جزئیات زنجیره تفکر شوید.

زنجیره تفکر دقیقاً چیست؟

زنجیره تفکر، یک تکنیک پرامپت نویسی است که در آن، از مدل خواسته می‌شود به‌جای ارائه پاسخ مستقیم، مراحل استدلال خود را به‌صورت گام‌به‌گام نشان دهد. این تکنیک، بر این فرض استوار است که مدل‌های زبانی، وقتی مجبور به نشان دادن مسیر استدلال خود هستند، پاسخ‌های دقیق‌تری تولید می‌کنند.

این تکنیک اولین بار در مقاله‌ای با عنوان «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models» در سال ۲۰۲۲ معرفی شد. از آن زمان، به یکی از پرکاربردترین تکنیک‌های پرامپت نویسی تبدیل شده است.

برای درک بهتر، به دو پرامپت زیر توجه کنید:

پرامپت بدون زنجیره تفکر:

اگر یک فروشگاه اینترنتی روزانه ۱۵۰ سفارش دریافت کند و
هر سفارش به‌طور میانگین ۸ دقیقه زمان پردازش نیاز داشته باشد،
چند کارمند برای پردازش همه سفارش‌ها در یک شیفت ۸ ساعته لازم است؟

پرامپت با زنجیره تفکر:

اگر یک فروشگاه اینترنتی روزانه ۱۵۰ سفارش دریافت کند و
هر سفارش به‌طور میانگین ۸ دقیقه زمان پردازش نیاز داشته باشد،
چند کارمند برای پردازش همه سفارش‌ها در یک شیفت ۸ ساعته لازم است؟
گام‌به‌گام استدلال کن و هر مرحله را نشان بده.

در پرامپت دوم، مدل مسیر استدلال خود را نشان می‌دهد: ابتدا زمان کل پردازش را محاسبه می‌کند (۱۵۰ × ۸ = ۱۲۰۰ دقیقه)، سپس ظرفیت هر کارمند را محاسبه می‌کند (۸ ساعت × ۶۰ دقیقه = ۴۸۰ دقیقه)، و در نهایت تعداد کارمند لازم را تعیین می‌کند (۱۲۰۰ ÷ ۴۸۰ = ۲.۵ یعنی ۳ کارمند).

زنجیره تفکر، مدل را از یک پاسخ‌دهنده به یک استدلال‌گر تبدیل می‌کند.

چرا زنجیره تفکر کار می‌کند؟

مکانیزم اثرگذاری زنجیره تفکر را می‌توان در چند محور تحلیل کرد:

تقسیم مسئله به گام‌های کوچک

مسائل پیچیده، معمولاً از چند گام کوچک‌تر تشکیل شده‌اند. زنجیره تفکر، مدل را به تقسیم مسئله به این گام‌ها وادار می‌کند. هر گام، ساده‌تر از مسئله اصلی است و احتمال خطا را کاهش می‌دهد.

افزایش ظرفیت محاسباتی مؤثر

هر توکن تولیدشده، به مدل فرصت می‌دهد تا محاسبات بیشتری انجام دهد. زنجیره تفکر، با افزایش تعداد توکن‌های تولیدی، ظرفیت محاسباتی مؤثر مدل را افزایش می‌دهد.

کاهش پرش‌های منطقی

در پرامپت‌های بدون زنجیره تفکر، مدل ممکن است از صورت مسئله به پاسخ نهایی بپرد، بدون نشان دادن مراحل میانی. این پرش، می‌تواند منجر به خطا شود. زنجیره تفکر، این پرش را حذف می‌کند.

قابلیت ردیابی خطا

در زنجیره تفکر، همه مراحل استدلال قابل مشاهده هستند. اگر خطایی رخ دهد، می‌توان گام دقیقی که خطا در آن رخ داده را شناسایی کرد. برای جزئیات، پست اشکال‌زدایی پرامپت را ببینید.

هدایت به سمت مسیر درست

زنجیره تفکر، مدل را به سمت یک مسیر استدلال مشخص هدایت می‌کند. این هدایت، احتمال انتخاب مسیرهای نادرست را کاهش می‌دهد.

ویژگیبدون زنجیره تفکربا زنجیره تفکر
دقت در مسائل ریاضیپایینبالا
قابلیت ردیابیضعیفقوی
شفافیت استدلالپایینبالا
هزینه توکنکمبیشتر

زنجیره تفکر صفر-نمونه

در زنجیره تفکر صفر-نمونه (Zero-shot Chain of Thought)، هیچ مثالی به مدل ارائه نمی‌شود. فقط یک جمله ساده به پرامپت اضافه می‌شود که مدل را به استدلال گام‌به‌گام وادار می‌کند.

عبارت‌های رایج

  • «گام‌به‌گام استدلال کن.»
  • «مراحل حل را نشان بده.»
  • «Let's think step by step.»
  • «قبل از پاسخ نهایی، استدلال خود را بنویس.»

مزایا

  • سادگی: فقط یک جمله اضافه می‌شود.
  • هزینه کم: نسبت به چند-نمونه، هزینه کمتری دارد.
  • عمومیت: در وظایف متنوع مؤثر است.

معایب

  • دقت کمتر: نسبت به چند-نمونه، دقت کمتری دارد.
  • پایداری کمتر: خروجی در اجراهای مختلف ممکن است متفاوت باشد.
  • نبود الگوی مشخص: مدل ممکن است سبک استدلال دلخواه خود را انتخاب کند.

زنجیره تفکر صفر-نمونه، یک نقطه شروع خوب است. اگر دقت کافی نبود، می‌توان به چند-نمونه ارتقا داد.

زنجیره تفکر چند-نمونه

در زنجیره تفکر چند-نمونه (Few-shot Chain of Thought)، چند مثال که شامل استدلال گام‌به‌گام هستند، به مدل ارائه می‌شود. این مثال‌ها، الگوی استدلال را نشان می‌دهند و مدل را به سمت سبک استدلال مطلوب هدایت می‌کنند.

نمونه‌ای از زنجیره تفکر چند-نمونه

Example 1:
Question: اگر ۵ کارمند در ۱۰ روز ۱۰۰ محصول تولید کنند،
۳ کارمند در ۲۰ روز چند محصول تولید می‌کنند؟
Reasoning: ۵ کارمند در ۱۰ روز = ۵۰ نفر-روز برای ۱۰۰ محصول.
پس هر نفر-روز = ۲ محصول. ۳ کارمند در ۲۰ روز = ۶۰ نفر-روز.
۶۰ × ۲ = ۱۲۰ محصول.
Answer: ۱۲۰

Example 2:
Question: اگر ۱۰ کارمند در ۵ روز ۲۰۰ محصول تولید کنند،
۴ کارمند در ۱۵ روز چند محصول تولید می‌کنند؟
Reasoning: ۱۰ کارمند در ۵ روز = ۵۰ نفر-روز برای ۲۰۰ محصول.
پس هر نفر-روز = ۴ محصول. ۴ کارمند در ۱۵ روز = ۶۰ نفر-روز.
۶۰ × ۴ = ۲۴۰ محصول.
Answer: ۲۴۰

Now solve: اگر ۸ کارمند در ۶ روز ۱۹۲ محصول تولید کنند،
۶ کارمند در ۱۰ روز چند محصول تولید می‌کنند؟

در این پرامپت، دو مثال با استدلال کامل به مدل نشان می‌دهد که چگونه مسئله را حل کند. مدل، الگوی استدلال را استخراج می‌کند و در مسئله جدید به کار می‌برد.

مزایا

  • دقت بالاتر: نسبت به صفر-نمونه، دقت بالاتری دارد.
  • پایداری بیشتر: خروجی در اجراهای مختلف پایدارتر است.
  • کنترل سبک: سبک استدلال را می‌توان کنترل کرد.

معایب

  • هزینه بالاتر: پرامپت طولانی‌تر، هزینه بیشتری دارد.
  • تلاش طراحی: طراحی مثال‌های خوب زمان‌بر است.
  • حساسیت به کیفیت مثال: اگر مثال‌ها ضعیف باشند، خروجی ضعیف می‌شود.

برای جزئیات بیشتر درباره تفاوت صفر-نمونه و چند-نمونه، پست تفاوت پرامپت صفر-نمونه و چند-نمونه را ببینید.

پیاده‌سازی گام‌به‌گام

پیاده‌سازی زنجیره تفکر در چند گام انجام می‌شود:

گام اول: طراحی پرامپت پایه

یک پرامپت پایه طراحی کنید که صورت مسئله را به‌وضوح بیان کند.

گام دوم: افزودن دستور استدلال

یک دستور صریح برای استدلال گام‌به‌گام به پرامپت اضافه کنید. می‌توانید از یک عبارت ساده یا یک ساختار دقیق استفاده کنید.

گام سوم: تعریف قالب خروجی

قالب خروجی را تعریف کنید: کدام بخش برای استدلال، کدام بخش برای پاسخ نهایی. برای جزئیات، پست درخواست خروجی در قالب خاص را ببینید.

گام چهارم: افزودن مثال (اختیاری)

اگر دقت کافی نبود، چند مثال با استدلال کامل اضافه کنید.

گام پنجم: ارزیابی و بهبود

خروجی را ارزیابی کنید و در صورت لزوم، پرامپت را بهبود دهید. برای جزئیات، پست اصلاح تدریجی پرامپت را ببینید.

نمونه‌ای از پیاده‌سازی کامل

Question: {question}

Instructions:
1. Break down the problem into smaller steps.
2. Show your reasoning for each step.
3. Only provide the final answer after completing all steps.

Format:
Reasoning:
- Step 1: ...
- Step 2: ...
- Step 3: ...

Final Answer: ...

این ساختار، مدل را به سمت استدلال گام‌به‌گام هدایت می‌کند و خروجی را ساختاریافته نگه می‌دارد.

کاربردهای زنجیره تفکر

زنجیره تفکر در وظایف مختلف مؤثر است:

ریاضیات و محاسبات

در مسائل ریاضی، زنجیره تفکر دقت را به‌طور چشمگیری افزایش می‌دهد. مدل، به‌جای پرش مستقیم به پاسخ، مراحل محاسبه را نشان می‌دهد. برای جزئیات، پست پرامپت نویسی برای استدلال را ببینید.

منطق و استدلال

در مسائل منطقی، زنجیره تفکر به مدل کمک می‌کند تا مراحل استنتاج را نشان دهد و از خطاهای منطقی اجتناب کند.

برنامه‌نویسی

در تولید کد، زنجیره تفکر می‌تواند کیفیت کد را افزایش دهد، زیرا مدل قبل از نوشتن کد، منطق خود را برنامه‌ریزی می‌کند. برای جزئیات، پست پرامپت نویسی برای تولید کد را ببینید.

تحلیل داده

در تحلیل داده، زنجیره تفکر به مدل کمک می‌کند تا مراحل تحلیل را نشان دهد و نتیجه‌گیری دقیق‌تری ارائه دهد.

تصمیم‌گیری

در تصمیم‌گیری، زنجیره تفکر به مدل کمک می‌کند تا مزایا و معایب گزینه‌ها را بررسی کند و تصمیم آگاهانه‌تری بگیرد.

پاسخ به پرسش‌های چندمرحله‌ای

در پرسش‌هایی که نیازمند چند مرحله استدلال هستند، زنجیره تفکر دقت را افزایش می‌دهد.

گونه‌ها و نسخه‌های پیشرفته

از زمان معرفی زنجیره تفکر، نسخه‌های پیشرفته‌ای توسعه یافته است:

خودسازگاری (Self-Consistency)

در این نسخه، چند مسیر استدلال تولید می‌شود و پاسخ نهایی با رأی‌گیری اکثریت انتخاب می‌شود. برای جزئیات، پست روش خودسازگاری در پرامپت نویسی را ببینید.

درخت تفکر (Tree of Thought)

در این نسخه، به‌جای یک مسیر خطی، چند مسیر موازی بررسی می‌شود. برای جزئیات، پست درخت تفکر در پرامپت نویسی را ببینید.

Least-to-Most Prompting

در این نسخه، مسئله به زیرمسئله‌های کوچک‌تر تقسیم می‌شود و هر زیرمسئله جداگانه حل می‌شود.

Program-of-Thoughts

در این نسخه، مدل به‌جای استدلال متنی، کد تولید می‌کند و نتیجه را اجرا می‌کند. این رویکرد در مسائل محاسباتی مؤثر است.

Tabular Chain of Thought

در این نسخه، استدلال در قالب جدول ارائه می‌شود. این رویکرد در مسائل با چند متغیر مؤثر است.

Skeleton-of-Thought

در این نسخه، ابتدا یک اسکلت از پاسخ تولید می‌شود و سپس هر بخش به‌صورت موازی تکمیل می‌شود.

ترکیب با ReAct

ترکیب زنجیره تفکر با روش ReAct، که در پست روش ReAct در پرامپت نویسی بررسی شده است، به عامل‌ها اجازه می‌دهد در طول استدلال، با ابزارها تعامل کنند.

محدودیت‌ها و چالش‌ها

زنجیره تفکر در همه سناریوها مؤثر نیست و محدودیت‌هایی دارد:

هزینه توکن بالاتر

زنجیره تفکر، تعداد توکن‌های تولیدی را افزایش می‌دهد. این افزایش، هزینه اجرا را بالا می‌برد. در سامانه‌های پرترافیک، این هزینه می‌تواند قابل‌توجه باشد. برای بهینه‌سازی، پست بهینه‌سازی هزینه در پرامپت نویسی را ببینید.

تأخیر بیشتر

تولید توکن‌های بیشتر، زمان بیشتری نیاز دارد. این تأخیر، در سامانه‌های Real-Time می‌تواند مسئله‌ساز باشد.

نبود تضمین درستی استدلال

زنجیره تفکر، دقت را افزایش می‌دهد اما درستی استدلال را تضمین نمی‌کند. مدل ممکن است مسیر استدلال خود را به‌صورت منطقی نشان دهد اما نتیجه نادرست باشد.

استدلال ساختگی

در برخی موارد، مدل ممکن است استدلالی تولید کند که منطقی به‌نظر می‌رسد اما در واقعیت نادرست است. این پدیده که «استدلال ساختگی» نامیده می‌شود، یکی از چالش‌های زنجیره تفکر است.

عدم کارایی در وظایف ساده

در وظایف ساده، زنجیره تفکر ممکن است ضروری نباشد و فقط هزینه را افزایش دهد.

حساسیت به طراحی پرامپت

کیفیت خروجی زنجیره تفکر، به کیفیت طراحی پرامپت بستگی دارد. پرامپت ضعیف، حتی با زنجیره تفکر، خروجی ضعیفی تولید می‌کند.

محدودیتاثرراهکار
هزینه توکنافزایش هزینهبهینه‌سازی پرامپت
تأخیرکاهش سرعتاستفاده گزینشی
نبود تضمین درستیخطای منطقیترکیب با خودسازگاری
استدلال ساختگیگمراهیبازبینی خروجی
عدم کارایی در وظایف سادههزینه اضافیاستفاده گزینشی

ترکیب با سایر تکنیک‌ها

زنجیره تفکر می‌تواند با سایر تکنیک‌های پرامپت نویسی ترکیب شود:

  • زنجیره تفکر + خودسازگاری: چند مسیر استدلال با رأی‌گیری اکثریت. برای جزئیات، پست روش خودسازگاری را ببینید.
  • زنجیره تفکر + درخت تفکر: بررسی چند مسیر موازی استدلال. برای جزئیات، پست درخت تفکر در پرامپت نویسی را ببینید.
  • زنجیره تفکر + ReAct: ترکیب استدلال با تعامل با ابزارها. برای جزئیات، پست روش ReAct در پرامپت نویسی را ببینید.
  • زنجیره تفکر + Few-shot: ارائه مثال‌های استدلالی. برای جزئیات، پست استفاده از مثال در پرامپت را ببینید.
  • زنجیره تفکر + RAG: استدلال بر اساس اسناد بازیابی‌شده. برای جزئیات، پست RAG چیست را ببینید.
  • زنجیره تفکر + JSON Schema: استدلال ساختاریافته در قالب JSON. برای جزئیات، پست JSON Schema برای کنترل پاسخ مدل را ببینید.

ارزیابی اثر زنجیره تفکر

برای ارزیابی اثر زنجیره تفکر، می‌توان از روش‌های زیر استفاده کرد:

آزمون A/B

دو نسخه از پرامپت (یکی با زنجیره تفکر و یکی بدون آن) را در یک مجموعه تست مشترک اجرا کنید. برای جزئیات، پست آزمون A/B برای پرامپت‌ها را ببینید.

معیارهای دقت

دقت خروجی را قبل و بعد از افزودن زنجیره تفکر مقایسه کنید. برای معیارهای ارزیابی، پست معیارهای ارزیابی پرامپت را ببینید.

معیارهای شفافیت

شفافیت استدلال را در خروجی ارزیابی کنید. آیا مراحل استدلال قابل‌فهم و منطقی هستند؟

هزینه

هزینه توکن را قبل و بعد از افزودن زنجیره تفکر مقایسه کنید. زنجیره تفکر هزینه را افزایش می‌دهد، بنابراین باید در برابر بهبود دقت توجیه شود.

تحلیل خطا

خطاهای خروجی را دسته‌بندی کنید. آیا زنجیره تفکر خطاهای منطقی را کاهش داده است؟

پرسش‌های پرتکرار درباره زنجیره تفکر

زنجیره تفکر همیشه دقت را افزایش می‌دهد؟

در مسائل استدلالی مانند ریاضیات، منطق و برنامه‌نویسی، بله. اما در وظایف ساده یا خلاقانه، ممکن است اثر محدودی داشته باشد یا حتی مضر باشد.

تفاوت زنجیره تفکر صفر-نمونه و چند-نمونه چیست؟

در صفر-نمونه، فقط یک دستور ساده برای استدلال گام‌به‌گام اضافه می‌شود. در چند-نمونه، چند مثال استدلالی به مدل ارائه می‌شود. چند-نمونه دقت بالاتری دارد اما هزینه بیشتری نیز دارد.

آیا زنجیره تفکر بر هزینه اجرا اثر دارد؟

بله. زنجیره تفکر، تعداد توکن‌های تولیدی را افزایش می‌دهد. این افزایش، هزینه اجرا را بالا می‌برد. برای بهینه‌سازی، پست بهینه‌سازی هزینه در پرامپت نویسی را ببینید.

آیا زنجیره تفکر در همه مدل‌ها مؤثر است؟

اثربخشی زنجیره تفکر در مدل‌های بزرگ‌تر بیشتر است. مدل‌های کوچک‌تر ممکن است در تولید استدلال منطقی ضعیف عمل کنند و زنجیره تفکر نتواند کمکی کند.

آیا زنجیره تفکر می‌تواند جایگزین Fine-tuning شود؟

در برخی وظایف، بله. زنجیره تفکر می‌تواند عملکردی مشابه Fine-tuning ارائه دهد. اما در وظایف پیچیده، Fine-tuning ممکن است همچنان لازم باشد.

آیا زنجیره تفکر در سامانه‌های Real-Time قابل استفاده است؟

بله، اما با محدودیت. زنجیره تفکر تأخیر را افزایش می‌دهد. راهکارهایی مانند استفاده گزینشی و بهینه‌سازی پرامپت می‌تواند تأخیر را کاهش دهد.

آیا زنجیره تفکر بر امنیت اثر دارد؟

زنجیره تفکر می‌تواند در برابر برخی حملات تزریق مقاومت ایجاد کند، زیرا مسیر استدلال را محدود می‌کند. اما نمی‌تواند جایگزین لایه‌های دفاعی دیگر شود. برای جزئیات، پست دفاع در برابر تزریق پرامپت را ببینید.

آیا استدلال تولیدشده توسط زنجیره تفکر قابل‌اعتماد است؟

نه همیشه. مدل ممکن است استدلالی تولید کند که منطقی به‌نظر می‌رسد اما در واقعیت نادرست است. این پدیده، «استدلال ساختگی» نامیده می‌شود. بازبینی خروجی در وظایف حساس ضروری است.

چطور بفهمم زنجیره تفکر در پروژه‌ام مؤثر است؟

با ارزیابی عملی. دو نسخه از پرامپت (با و بدون زنجیره تفکر) را روی یک مجموعه تست مشترک اجرا کنید و نتایج را بر اساس معیارهای دقت، شفافیت، هزینه و تأخیر مقایسه کنید.

آیا می‌توان زنجیره تفکر را با سایر تکنیک‌ها ترکیب کرد؟

بله. زنجیره تفکر با خودسازگاری، درخت تفکر، ReAct و RAG قابل ترکیب است. ترکیب این تکنیک‌ها می‌تواند دقت را در مسائل پیچیده افزایش دهد.

آیا زنجیره تفکر در همه زبان‌ها مؤثر است؟

بله. زنجیره تفکر یک تکنیک زبانی است و در همه زبان‌ها قابل استفاده است. اما کیفیت خروجی به توانایی مدل در آن زبان بستگی دارد.

نتیجه‌گیری کاربردی

زنجیره تفکر یکی از مؤثرترین تکنیک‌های پرامپت نویسی برای افزایش دقت مدل‌های زبانی در وظایف استدلالی است. این تکنیک با وادار کردن مدل به نشان دادن مسیر استدلال، دقت را افزایش می‌دهد، شفافیت را بالا می‌برد و قابلیت ردیابی خطا را فراهم می‌کند. اما این تکنیک هزینه و تأخیر را نیز افزایش می‌دهد و در وظایف ساده، ممکن است ضروری نباشد.

زنجیره تفکر نشان می‌دهد که در مدل‌های زبانی، نشان دادن مسیر می‌تواند به‌اندازه رسیدن به مقصد مهم باشد.

در پروژه‌هایی که به حل مسائل پیچیده نیاز داشتیم، زنجیره تفکر ابزار اصلی برای دستیابی به دقت بالا بوده است. توصیه می‌کنم این تکنیک را با خودسازگاری و درخت تفکر ترکیب کنید تا دقت بیشتری به دست آورید. برای مفاهیم پایه مرتبط، پست اصول پرامپت نویسی و اصول پایه پرامپت نویسی را ببینید. برای کسب اطلاعات بیشتر درباره Chain of Thought، صفحه Prompt Engineering را در ویکی‌پدیا مطالعه کنید.

اگر در پروژه‌ای واقعی تجربه استفاده از زنجیره تفکر را داشته‌اید، برای ما جالب است بدانید کدام نوع (صفر-نمونه یا چند-نمونه) در دامنه شما عملکرد بهتری داشت و چه چالش‌هایی در طراحی پرامپت مواجه شدید.