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

مدل چطور کلمه‌ی بعدی را انتخاب می‌کند؟

مدل زبانی «یک پاسخ» تولید نمی‌کند؛ قدم‌به‌قدم «کلمه‌ی بعدی» را پیش‌بینی می‌کند (جزئیاتش را در مطلب LLM چیست دیده‌ایم). اما چیزی که مدل در هر قدم می‌دهد یک جواب قطعی نیست؛ یک توزیع احتمال روی همه‌ی گزینه‌هاست. فرض کنید جمله تا «آسمان شب پر از…» پیش رفته است: مدل شاید به «ستاره» احتمال ۶۵ درصد بدهد، به «ابر» احتمال ۲۰ درصد و به ده‌ها گزینه‌ی دیگر — از «هواپیمای کاغذی» تا کلمات نادر — سهم‌های کوچک‌تر.

بعد از این مرحله است که تصادف وارد می‌شود: یک «نمونه‌گیری» انجام می‌شود و یکی از گزینه‌ها — به احتمالِ همان توزیع — انتخاب می‌شود و به متن اضافه می‌گردد. همین نمونه‌گیری است که باعث می‌شود دو اجرای یکسان، دو متن متفاوت بسازد؛ چون هر انتخاب، متن بعدی و توزیع‌های بعدی را هم عوض می‌کند و اختلاف‌ها در طول یک پاسخ بلند انباشته می‌شوند.

Temperature دقیقاً چه می‌کند؟

Temperature عددی بین صفر و معمولاً دو است که قبل از نمونه‌گیری، شکل توزیع احتمال را بازتوزیع می‌کند:

  • مقادیر پایین (نزدیک صفر): اختلاف‌ها تیز می‌شوند؛ گزینه‌های پراحتمال تقریباً همه‌ی قرعه را می‌برند و گزینه‌های نادر عملاً حذف می‌شوند. در temperature صفر مدل تقریباً همیشه همان گزینه‌ی برتر را می‌چیند و خروجی‌های متوالی تقریباً یکسان می‌شوند.
  • مقادیر بالا (مثلاً ۱/۵): توزیع تخت می‌شود؛ احتمال گزینه‌های کم‌شانس بالا می‌آید و مدل جسورتر، متنوع‌تر و کم‌قابل‌پیش‌بینی‌تر می‌شود — گاهی خلاقانه، گاهی بی‌ربط.

نکته‌ی ظریف این است که Temperature «هیچ دانشی» به مدل اضافه نمی‌کند؛ فقط تصمیم می‌گیرد مدل چقدر پایبند به محتمل‌ترین مسیر بماند. برای همین تغییر آن را در کیفیت واقعی پاسخ حس نمی‌کنید، در «طعم» و تنوع پاسخ حس می‌کنید.

Temperature به مدل نمی‌گوید چه بگوید؛ فقط تعیین می‌کند چقدر از امن‌ترین جاده منحرف شود.

top_p؛ پیچ دوم کنار همان پیچ

پارامتر دوم و پرکاربرد، top_p است — نمونه‌گیری هسته‌ای. به‌جای تغییر شکل کل توزیع، فقط جمعِ احتمالِ برترین گزینه‌ها را تا یک سقف (مثلاً ۹۰ درصد) نگه می‌دارد و باقی را از قرعه حذف می‌کند. نتیجه‌ی عملی: با top_p پایین، مدل بین گزینه‌های محتمل اما همیشه یکسان انتخاب نمی‌کند؛ بین چند گزینه‌ی خوب سر می‌خورد — تنوعِ مهارشده.

چون هر دو روی همان مرحله اثر می‌گذارند، چرخاندن هم‌زمان هر دو، رفتار را به‌سختی قابل‌تحلیل می‌کند. توصیه‌ی متداول این است: یکی را به‌عنوان پیچ اصلی انتخاب کنید (در عمل temperature) و دیگری را روی مقدار ثابت پیش‌فرض (معمولاً ۱ یا نزدیک آن) بگذارید. تنظیم‌های کمکی دیگری هم هست — مثل top_k که کاندیدها را به K گزینه‌ی برتر محدود می‌کند — اما در APIهای مدرن سهم آن‌ها کوچک‌تر است.

کِی کجا؟ راهنمای انتخاب مقدار

انتخاب مقدار به «هزینه‌ی اشتباه» و «ارزش تنوع» کار شما بستگی دارد:

  • کارهای دقیق و تکرارپذیر — پایین (۰ تا ۰/۳): استخراج داده، تولید کد و پیکربندی، پاسخ‌گیری از اسناد سازمانی، دسته‌بندی و هر جایی که پرت‌شدن از مسیر یعنی باگ. پشت سیستم‌های RAG هم معمولاً temperature پایین می‌گذارند تا مدل به محتوای بازیابی‌شده بچسبد (ساختارش را در ساخت سیستم RAG ببینید).
  • کارهای خلاقانه — بالا (۰/۷ تا ۱/۲): شعار و سرخط، متن داستانی، تنوع پیشنهاد. هر چه نمونه‌های بیشتری از یک مدل می‌خواهید، پیچ را بالاتر ببرید — و هزینه‌ی فیلترکردن خروجی‌های ضعیف‌تر را بپذیرید.
  • کار عمومی روزمره — میانه (۰/۵ تا ۰/۸): چت معمولی و مکاتبه؛ تعادل بین پایداری و طبیعی‌بودن.
  • مدل‌های استدلالی — دست نزنید: در مدل‌های استدلالی زنجیره‌ی فکر با temperature خاص خودش کنترل می‌شود و بسیاری از این سرویس‌ها اصلاً اجازه‌ی تغییر نمی‌دهند؛ جنگیدن با این پیش‌فرض معمولاً نتیجه‌ی بدتری می‌دهد.

و یک اصل آزمایشگاهی: مقدار مناسب را حدس نزنید؛ برای کار جدی، چند مقدار را روی ده‌ها نمونه‌ی واقعی خودتان مقایسه کنید — همان روش سنجشی که در ارزیابی RAG به کار می‌رود، این‌بار روی پیچ تنظیم.

در API چه شکلی است؟

هر دو پارامتر فیلدهای ساده‌ی بدنه‌ی درخواست‌اند و چون API ماین‌دبیس سازگار با فرمت OpenAI است، همان نام‌های استاندارد را می‌گیرند:

{
  "model": "glm-4.7",
  "messages": [...],
  "temperature": 0.2,
  "top_p": 1
}

اگر پارامترها را نفرستید، سرویس مقدار پیش‌فرض خودش را می‌گذارد — که در سرویس‌دهنده‌های مختلف متفاوت است. برای همین در سیستم‌های تولیدی، پارامترها را صریح بنویسید تا رفتار محصولتان به تنظیمات پشت سرور وابسته نماند؛ به‌ویژه که انتخاب مقدار، در کنار انتخاب خود مدل، بخشی از طراحی است و در راهنمای انتخاب مدل هم دیدیم که این دو تصمیم معمولاً با هم گرفته می‌شوند.

جمع‌بندی

Temperature شدت نمونه‌گیری از توزیع احتمالِ توکن بعدی است: پایین یعنی پایبندی به محتمل‌ترین مسیر و خروجی تکرارپذیر؛ بالا یعنی فضای تنوع و خلاقیت. top_p هم پیچ دوم همان مرحله است که بهتر است ثابت بماند. قاعده‌ی عملی: هر جا درست‌بودن مهم‌تر از تازگی است پایین ببرید، هر جا تنوع می‌فروشید بالا ببرید، و برای کار جدی با تست واقعی مقدار را انتخاب کنید. مسیر بعدی: هزینه‌ی API — چون این نمونه‌گیری‌ها، هر توکنشان حساب می‌شود و تنظیمات اشتباه می‌تواند هم کیفیت و هم صورت‌حساب را خراب کند.