رضا در یک شرکت بیمه دستیاری ساخته که پروندهٔ خسارت خودرو را میخواند و مبلغ پیشنهادی را حساب میکند. برای نود درصد پروندهها عالی کار میکند. اما یک دستهٔ کوچک هست که مدل مدام در آن میلغزد؛ همانهایی که سه لایه شرط دارند: تصادف در ساعت پوشش محدود، رانندهٔ ثانویه، و یک بند استثنا در الحاقیه. مدل عددی میدهد که منطقی بهنظر میرسد ولی غلط است. رضا پرامپت را بازنویسی میکند، مثال اضافه میکند، مدل بزرگتری میگیرد. فرقی نمیکند. مشکل جای دیگری است: مدل وقت کافی برای فکر کردن نداشته است.
این دقیقاً همان جایی است که «تفکر گسترده» وارد میشود. ایده در یک جمله: به مدل بودجهای از توکن بدهید که پیش از نوشتن پاسخ نهایی، با خودش فکر کند؛ فکری که شما هم میتوانید ببینید. در درسهای قبلی این سری دربارهٔ شکلدادن به خروجی حرف زدیم — از خروجی JSON مطمئن تا کنترل انتخاب ابزار. این درس دربارهٔ چیزی است که پیش از خروجی اتفاق میافتد.
لیست مطالب
آنچه در این درس یاد میگیرید
- تفکر گسترده دقیقاً چیست و چه تفاوتی با «قدمبهقدم فکر کن» در متن پرامپت دارد.
- چطور آن را با پارامتر
thinkingو کلیدbudget_tokensروشن کنید و چه محدودیتهایی دارد. - ساختار پاسخ: بلوکهای
thinking، بلوک رمزشدهٔredacted_thinkingو امضایی که برای بازگرداندن به مدل لازم است. - سه ناسازگاری مهم که اگر ندانید، وقتتان را با خطای چهارصد تلف میکنید.
- رابطهٔ خطرناک بودجهٔ تفکر با کش پرامپت و صورتحساب پایان ماه.
- حالت تازهتر «تفکر تطبیقی» و اینکه چرا روش دستی هنوز جای خودش را دارد.
تفاوت بنیادی با «قدمبهقدم فکر کن»
سالهاست در پرامپتها مینویسیم «مرحلهبهمرحله فکر کن». کار میکند، اما با دو هزینه: استدلال قاطیِ متن پاسخ میآید و باید بعداً جدایش کنید، و هیچ تضمینی برای عمق آن ندارید؛ مدل ممکن است دو خط بنویسد و بپرد سراغ جواب.
تفکر گسترده این را از سطح «خواهش در پرامپت» میبرد به سطح «قرارداد در ایپیآی». شما بودجهای عددی تعیین میکنید و مدل تا آن اندازه فضای استدلال دارد؛ استدلال هم در بلوکهای جداگانه برمیگردد. یعنی پاسخ نهایی را به کاربر نشان میدهید و بلوک تفکر را برای عیبیابی نگه میدارید — همان چیزی که رضا لازم داشت تا بفهمد مدل کجای زنجیرهٔ شرطها اشتباه میکند.
روشنکردنش در عمل
کل ماجرا یک آبجکت کوچک است که کنار پارامترهای همیشگی مینشیند:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=8000,
thinking={"type": "enabled", "budget_tokens": 4000},
messages=[{"role": "user", "content": PROMPT}]
)
for block in response.content:
if block.type == "thinking":
print("استدلال:", block.thinking)
elif block.type == "redacted_thinking":
print("بلوک رمزشده، طول:", len(block.data))
elif block.type == "text":
print("پاسخ نهایی:", block.text)
سه نکته در همین چند خط پنهان است. نخست، کمینهٔ budget_tokens برابر ۱۰۲۴ است؛ کمتر از آن درخواست رد میشود. دوم، بودجهٔ تفکر باید کوچکتر از max_tokens باشد، چون max_tokens سقف کل خروجی است: تفکر بهعلاوهٔ پاسخ. اگر هر دو را چهار هزار بگذارید، برای پاسخ نهایی چیزی نمیماند. سوم، توکنهای تفکر توکن خروجی حساب میشوند و با نرخ خروجی صورتحساب میگیرند.
تا اینجا مقدمه بود. بخش اصلی این درس — نمونهها، پرامپتهای آماده و تمرینها — برای اعضای ویژه باز میشود.
تفکر گسترده: وقتی مدل باید عمیق فکر کند
برای دیدن این بخش باید عضو ویژه (VIP) باشی. با شمارهٔ موبایلت وارد شو تا ۱۴ روز دسترسی رایگان فعال شود.
🎁 ورود / ثبتنام و شروع ۱۴ روز رایگان