فرض کن از هوش مصنوعی میپرسی قیمت نهایی یک خرید چند قسطی چقدر میشود. مدل با اعتمادبهنفس کامل استدلال میکند، مرحلهبهمرحله توضیح میدهد و در آخر یک عدد به تو میدهد. منطقش هم کاملاً درست است؛ اما عدد نهایی غلط از آب درمیآید. این یکی از آزاردهندهترین ضعفهای مدلهای زبانی است: آنها خوب «فکر» میکنند، ولی بد «حساب» میکنند. تکنیک «برنامهٔ فکر» (Program of Thoughts) دقیقاً برای همین ساخته شده است؛ بهجای اینکه بگذاری مدل عددها را در ذهنش بالا و پایین کند، کاری میکنی که استدلالش را به شکل یک برنامهٔ کوچک بنویسد و محاسبه را به یک مفسر واقعی بسپارد.
در این آموزش یاد میگیری این تکنیک چیست، چرا کار میکند، چطور پرامپتش را بنویسی، و کجا باید سراغش بروی و کجا نه. اگر پیشتر با پرامپت دفترچهٔ فکر و پرامپت برنامهریز-مجری آشنا شدهای، این یکی مکمل قدرتمند آنها برای مسائل عددی است.

لیست مطالب
تکنیک برنامهٔ فکر چیست و چه مشکلی را حل میکند؟
برنامهٔ فکر یک ایدهٔ ساده اما تعیینکننده دارد: «استدلال» را از «محاسبه» جدا کن. در این روش مدل همچنان مثل یک انسانِ باهوش دربارهٔ مسئله فکر میکند و مراحل حل را میچیند، اما هر جا پای یک عدد و یک عملیات حسابی وسط میآید، بهجای حسابکردن ذهنی، آن را به شکل کد (معمولاً پایتون) مینویسد. بعد کد اجرا میشود و جواب از دل مفسر بیرون میآید، نه از دل حدسِ مدل.
به بیان دیگر، مدل نقشِ «مغزِ متفکر» را بازی میکند و مفسر پایتون نقشِ «ماشینحسابِ بیخطا» را. تقسیم کار همین است: فکر با مدل، حساب با کامپیوتر. نتیجه این میشود که خطاهای حسابی که در روشهای متنی خاموش و پنهان رخ میدادند، عملاً از بین میروند، چون دیگر هیچ عددی «در ذهن» محاسبه نمیشود.
چرا زنجیرهٔ تفکر سرِ محاسبه میلغزد؟
در روشهای استدلالی متنی مثل زنجیرهٔ تفکر، مدل هم استدلال میکند و هم محاسبه را با واژهها انجام میدهد. مشکل اینجاست که مدل زبانی برای پیشبینی کلمهٔ بعدی آموزش دیده، نه برای ضرب و تقسیم دقیق. برای همین وقتی مینویسد «۴۰٬۸۰۰٬۰۰۰ ضربدر ۱٫۰۹ میشود حدوداً ۴۴٬۵۰۰٬۰۰۰»، این «حدوداً» همان جایی است که خطا وارد میشود.
بدتر از آن، در مسائل چندمرحلهای خطاها روی هم تلانبار میشوند؛ یک گردکردنِ کوچک در مرحلهٔ دوم، تا مرحلهٔ پنجم به یک اختلاف بزرگ تبدیل میشود. اعداد بزرگ، کسرها، درصدهای تودرتو و محاسبههای تکراری دقیقاً نقاط ضعف محاسبهٔ ذهنی مدلاند. برنامهٔ فکر این ریسک را از ریشه حذف میکند، چون کل زنجیرهٔ عددی را به کدی میسپارد که غلطکردن در آن ممکن نیست.
ساختار یک پرامپت برنامهٔ فکر
یک پرامپت خوبِ برنامهٔ فکر سه کار را به مدل تحمیل میکند: متغیرگذاری گویا، انجام همهٔ محاسبهها فقط داخل کد، و گزارش مقادیر میانی برای بازبینی. قالب زیر را میتوانی تقریباً برای هر مسئلهٔ عددی بهکار ببری:
این مسئله را با نوشتن یک برنامهٔ پایتون حل کن، نه با حساب ذهنی.
۱) برای هر عددِ مسئله یک متغیر با نام گویا بساز و واحدش را در کامنت بنویس.
۲) تمام محاسبهها را فقط داخل کد انجام بده؛ هیچ عددی را خودت در ذهن حساب نکن.
۳) مقدارهای میانی را هم print کن تا مسیر حل قابل بازبینی باشد.
۴) کد را اجرا کن و در پایان فقط جوابِ نهایی را با واحد گزارش بده.
مسئله: [شرح مسئله و همهٔ عددها را اینجا بگذار]
نکتهٔ کلیدی بند چهارم است: اگر ابزارت مفسر کد دارد (مثل حالت تحلیل داده در ChatGPT یا ابزار تحلیل Claude)، مدل خودش کد را اجرا میکند و عددِ اجراشده را برمیگرداند. اگر مفسر نداری، باز هم برندهای؛ کدِ شفاف را میگیری و خودت اجرا میکنی، بهجای اینکه به عددی که مدل «در ذهنش» ساخته اعتماد کنی.
مثالی واقعی؛ از تخفیف و مالیات تا مبلغ هر قسط
فرض کن مسئله این است: «یک لپتاپ ۴۸٬۰۰۰٬۰۰۰ تومان است. فروشگاه ۱۵٪ تخفیف میدهد، سپس ۹٪ مالیات ارزشافزوده روی مبلغِ تخفیفخورده بسته میشود و این مبلغ در ۱۲ قسط بیبهره پرداخت میشود. هر قسط چقدر است؟»
یک خطای رایج در استدلال متنی این است که مدل مالیات را روی قیمت اولیه حساب کند، نه روی مبلغ تخفیفخورده؛ اختلاف کوچکی که جواب را خراب میکند. برنامهٔ فکر این ابهام را از بین میبرد، چون پایهٔ هر محاسبه در کد صریح و قابلدیدن است:
price = 48_000_000 # قیمت اولیه (تومان)
discount_rate = 0.15 # نرخ تخفیف
tax_rate = 0.09 # مالیات ارزشافزوده
months = 12 # تعداد اقساط
discounted = price * (1 - discount_rate) # مبلغ بعد از تخفیف
taxed = discounted * (1 + tax_rate) # مالیات روی مبلغِ تخفیفخورده
installment = taxed / months # مبلغ هر قسط
print("بعد از تخفیف:", discounted)
print("بعد از مالیات:", taxed)
print("هر قسط:", round(installment))
خروجی برنامه روشن و بیچونوچراست: مبلغ بعد از تخفیف ۴۰٬۸۰۰٬۰۰۰ تومان، بعد از مالیات ۴۴٬۴۷۲٬۰۰۰ تومان، و هر قسط دقیقاً ۳٬۷۰۶٬۰۰۰ تومان. چون پایهٔ مالیات بهصراحت روی متغیر discounted بسته شده، آن خطای رایجِ «مالیات روی قیمت اولیه» اصلاً نمیتواند رخ بدهد.

کجا این تکنیک میدرخشد و کجا دردسر میشود
برنامهٔ فکر هر جا که جواب به محاسبهٔ دقیق وابسته است یک برگ برنده است: مسائل مالی (سود، وام، مالیات، اقساط)، تبدیل واحد و ارز، اختلاف تاریخ و زمان، آمار و میانگین روی مجموعهداده، ترکیبیات، و هر چیزی که به حلقه و تکرار یا اعداد بزرگ نیاز دارد. در این موارد، دقتِ عددی عملاً تضمینشده میشود.
اما همهجا ابزار درستی نیست. برای پرسشهای کیفی و سلیقهای، نوشتن خلاقانه، تحلیل احساسی یک متن، یا تصمیمهایی که عددِ مشخصی برای محاسبه ندارند، کد هیچ کمکی نمیکند و فقط کار را سنگین میکند. همچنین اگر مفسر کد در دسترس نیست و مسئله آنقدر ساده است که خطای حسابی بعید است، اصرار بر کد فقط پیچیدگی اضافه میکند.
تفاوت برنامهٔ فکر با زنجیرهٔ تفکر، دفترچهٔ فکر و پرامپت کد
این چهار تکنیک شبیه بهنظر میرسند اما کارکرد متفاوتی دارند. زنجیرهٔ تفکر هم استدلال و هم محاسبه را در واژهها انجام میدهد، پس محاسبه حلقهٔ ضعیفش است. برنامهٔ فکر همان استدلال را نگه میدارد ولی محاسبه را به کدِ اجراشده منتقل میکند.
تفاوتش با دفترچهٔ فکر در جنس «فضای فکر» است: دفترچهٔ فکر فضای آزادِ متنی میدهد، ولی دفترچهٔ برنامهٔ فکر کدِ قابلاجراست با مفسری که جوابش قطعی است. تفاوتش با پرامپت کد و تست هم در هدف است: آنجا محصولِ نهایی خودِ نرمافزار و تستهاست، اما اینجا کد فقط یک ماشینحسابِ شفاف برای رسیدن به یک جوابِ استدلالی است. حتی میتوانی این تکنیک را با اجماع چندپاسخ ترکیب کنی تا هم محاسبه دقیق باشد و هم مسیر حل تأیید شود.

اشتباههای رایج که اثر تکنیک را خنثی میکنند
شایعترین اشتباه این است که مدل کد مینویسد اما لابهلای آن یک عددِ «حسابشده در ذهن» هم اعلام میکند؛ درست همان چیزی که میخواستیم حذف کنیم. راهحل این است که در پرامپت صریح بخواهی هر عدد فقط از خروجیِ print بیاید. اشتباه دوم نامگذارینکردن متغیرهاست؛ وقتی متغیرها نام گویا ندارند، منطق قابل بازبینی نیست و اشکال از دید پنهان میماند.
اشتباه سوم اجرانکردن کد است: در ابزاری که مفسر ندارد، کدِ نوشتهشده تا وقتی اجرا نشود فقط یک حدسِ دیگر است؛ یا از ابزارِ دارای مفسر استفاده کن یا خودت کد را اجرا کن. و اشتباه چهارم، کاربردِ این تکنیک روی مسائل کیفی است که اصلاً عددی برای محاسبه ندارند. کد را ساده و شفاف نگه دار؛ پیچیدگیِ بیدلیل هم خودش منبع خطاست.
پرسشهای پرتکرار
آیا برنامهٔ فکر فقط به درد ریاضی میخورد؟
نه. هر جا جواب به یک محاسبهٔ دقیق وابسته است—مالی، تاریخ و زمان، تبدیل واحد، آمار—این تکنیک کار میکند. مرزش «ریاضیبودن» نیست، «عددی و دقیقبودنِ جواب» است.
اگر ابزار اجرای کد نداشته باشم چطور؟
همچنان ارزشمند است. حتی بدون مفسر، نوشتن منطق بهصورت کد آن را شفاف و قابل بازبینی میکند و جلوی حساب ذهنی را میگیرد؛ کافی است کد را بگیری و خودت در یک محیط پایتون اجرا کنی.
فرقش با زنجیرهٔ تفکر در یک جمله چیست؟
زنجیرهٔ تفکر در واژهها حساب میکند، برنامهٔ فکر محاسبه را به مفسر میسپارد؛ استدلال سرِ جایش میماند، فقط ماشینحساب عوض میشود.
برای مدلهای استدلالی جدید هم لازم است؟
کمتر، اما نه بیفایده. مدلهای استدلالی در محاسبه بهتر شدهاند، ولی برای اعداد بزرگ و حساس و وقتی به مسیرِ قابل بازبینی نیاز داری، سپردنِ محاسبه به کد هنوز مطمئنترین راه است.
مهمترین کاری که تکنیک برنامهٔ فکر انجام میدهد چیست؟
این تمرین ویژهٔ اعضاست
برای دیدن این بخش باید عضو ویژه (VIP) باشی. با شمارهٔ موبایلت وارد شو تا ۱۴ روز دسترسی رایگان فعال شود.
🎁 ورود / ثبتنام و شروع ۱۴ روز رایگانجمعبندی و قدم بعدی
برنامهٔ فکر یک درسِ ساده دارد: نگذار مدل جایی که نباید، حساب کند. بگذار فکر کند، و محاسبه را به ماشینحسابِ بیخطا—یعنی مفسر کد—بسپار. همین یک جابهجایی کوچک، دقتِ جوابها را در مسائل عددی چندمرحلهای بهشکل چشمگیری بالا میبرد. از همین امروز قالب پرامپتِ بالا را روی یک مسئلهٔ واقعیِ کارت امتحان کن.
این آموزش بخشی از مجموعهٔ آموزش پرامپتنویسی مستر چتجیپیتی است؛ برای دیدن همهٔ قسمتها و ادامهٔ مسیر یادگیری به صفحهٔ مجموعهٔ آموزش پرامپتنویسی سر بزن.
نسخهٔ فوری این مطلب در تلگرام: اینجا بخوانید
