Temperature, bir dil modelinin sıradaki kelimesini seçerken ne kadar rastgelelik kullanacağını belirleyen bir sayıdır. Düşük bir temperature'da model neredeyse her seferinde en olası kelimeyi alır, bu yüzden cevaplar odaklı ve tekrarlanabilir olur. Yüksek bir temperature'da şanslar dağılır, cevaplar daha çok değişir ve bazen konudan sapar. Temperature, modelin zaten değerlendirdiği kelimeler arasından nasıl seçim yaptığını değiştirir; modelin ne bildiğini değiştirmez. Türkçede bazen "sıcaklık" diye de çevrilir, ama ayar ekranlarında adı temperature olarak geçer.
Bir model sıradaki kelimeyi nasıl seçer
Bir model her seferinde bir token yazar; token bir kelime ya da kelimenin bir parçasıdır (bkz. token ve bağlam penceresi). Her adımda kelime dağarcığındaki her tokene logit denen bir puan verir. Softmax denen bir fonksiyon bu puanları olasılıklara çevirir: her puanın üsteli alınır ve hepsinin toplamına bölünür, böylece yüksek puanlar daha büyük pay alır ve bütün paylar toplamda 1 eder. Model sonra bu paylara göre rastgele bir token çeker.
Temperature softmax'tan hemen önce devreye girer. Her puan temperature T'ye bölünür:
probability(word) = exp(score / T) / sum of exp(score / T) over all candidates
T 1'in altındayken puanlar arasındaki farklar büyür, lider daha da öne geçer. T 1'in üstündeyken farklar küçülür, geride kalanlar yetişir. T = 1'de modelin kendi olasılıklarını alırsın. T = 0'da bölme tanımsızdır, bu yüzden API'ler bunu "her zaman en üstteki tokeni al" olarak yorumlar; buna greedy decoding denir.
Dene: temperature kaydırıcısı
Aşağıdaki demo "En sevdiğim programlama dili" ifadesini altı aday kelimeyle devam ettiriyor. Puanlar temsilidir, bu demo için seçildi; gerçek bir model on binlerce ya da daha fazla tokenden oluşan bir kelime dağarcığını puanlar ve bir dil adı birkaç tokene bölünebilir. Matematik ise gerçek: çubuklar, seçtiğin temperature'da bu puanların softmax'ıdır ve örnekle düğmesi onlardan on kelime çeker.
1.0'da Python yaklaşık %46, COBOL ise %1'in altında pay alır. 0.5'e indir, Python yaklaşık %67'ye çıkar, COBOL ise neredeyse yok olur. 2.0'a çıkar, Python yaklaşık %32'ye düşer, COBOL yaklaşık %4'e yükselir; yani on örneklik her üç turdan birinde COBOL en az bir kez çıkar. Hiç olmayan şeye dikkat et: kelimelerin sırası her ayarda aynı kalır. Temperature COBOL'u Python'dan daha olası yapamaz; sadece farkları açar ya da daraltır.
Gerçek bir yanıt bu seçimlerden yüzlercesinin art arda gelmesidir ve her seçim bir sonrakinin bağlamının parçası olur. Başlardaki alışılmadık tek bir kelime ardından gelen her şeyi değiştirir; yüksek temperature'lı bir yanıtın bu demodaki tek kelimenin düşündürdüğünden çok daha fazla sapmasının nedeni budur.
Ne zaman düşük, ne zaman yüksek temperature
| Görev | Başlangıç noktası | Neden |
|---|---|---|
| Kod, hata düzeltme, SQL | Düşük, 0 ile 0.3 arası | Genellikle tek bir en iyi devam vardır ve her denemede aynı sonucu istersin |
| Veri çıkarma, sınıflandırma, JSON | 0 | Her değişiklik gürültüdür ve çıktıyı bir program okuyacak |
| Açıklamalar, gündelik sorular | Sağlayıcının varsayılanı | Varsayılanlar genel kullanım için seçilmiştir |
| Beyin fırtınası, isimler, hikâye fikirleri | Varsayılan ya da biraz daha yüksek | Birbirinden farklı seçenekler istersin |
İki uyarı. Birincisi, düşük temperature bir cevabı doğru yapmaz. Modelin en olası cevabı yanlışsa temperature 0 sana o yanlış cevabı her seferinde, sadece tutarlı şekilde verir; bkz. yapay zekâ halüsinasyonu. İkincisi, çok yüksek değerler (ölçeği 2'ye kadar giden API'lerde 1'in epey üstü) genellikle ipi kaçıran ya da anlamsızlaşan metin üretir, çünkü olası olmayan tokenler giderek daha sık seçilir.
Bazen rastgelelik tam da amaçtır. Self-consistency aynı akıl yürütme sorusunu bilerek sıfırdan büyük bir temperature'da birkaç kez çalıştırır, sonra denemelerin çoğunun üzerinde birleştiği cevabı alır.
Temperature, top_p ve top_k
Örneklemeyi iki ayar daha kontrol eder ve API'ler bunları genellikle temperature'ın yanında sunar.
top_p (nucleus sampling), olasılıklarının toplamı p'ye ulaşan en olası tokenleri tutar, sonra bunlar arasından örnekleme yapar. Demodaki sayılarla temperature 1'de: Python, JavaScript ve Rust toplamda yaklaşık %88 eder, C'yi eklemek %90'ı geçer. Yani top_p = 0.9 ile model sadece bu dördü arasından örnekleme yapar; Haskell ve COBOL asla çıkamaz. Temperature'dan farklı olarak top_p duruma uyum sağlar: model eminse az sayıda token elemeyi geçer, emin değilse çok sayıda.
top_k, en olası tokenlerden sabit bir sayıyı, örneğin ilk 40'ı, tutar. Bazı API'ler bunu sunar, bazıları sunmaz.
Sağlayıcılar genellikle ikisini birden değil, ya temperature'ı ya top_p'yi değiştirmeyi önerir, çünkü etkiler tahmin etmesi zor şekillerde üst üste biner.
API'de temperature ayarlamak
Sohbet uygulamaları bu ayarı gizler, ama API'ler onu bir parametre olarak alır. Aralık sağlayıcıya bağlıdır: OpenAI'ın Chat Completions API'si 0 ile 2 arasını, Anthropic'in Messages API'si 0 ile 1 arasını kabul eder. Bazı akıl yürütme modelleri sadece varsayılan değerlerini kabul eder.
from openai import OpenAI
client = OpenAI()
MODEL = "your-model-id" # e.g. from your provider's model list
response = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "Write a SQL query that counts orders per customer."}],
temperature=0.2,
)
print(response.choices[0].message.content)
import anthropic
client = anthropic.Anthropic()
MODEL = "your-model-id" # e.g. from your provider's model list
message = client.messages.create(
model=MODEL,
max_tokens=500,
temperature=0.2,
messages=[{"role": "user", "content": "Write a SQL query that counts orders per customer."}],
)
print(message.content[0].text)
Sohbet uygulamaları neden gizliyor ve onun yerine ne yapmalı
ChatGPT, Claude ve Gemini uygulamaları örnekleme ayarlarını senin yerine seçer ve bir kaydırıcı göstermez. Bu uygulamaları sade tutar ve çoğu istekte promptu yeniden ifade etmek cevabı bir örnekleme ayarının yapacağından çok daha fazla değiştirir.
Yani bir sohbet uygulamasında kontrol promptun kendisidir. Tek bir cevap istemek sana modelin ilk tercihine yakın bir şey getirir. Birbirinden farklı çok sayıda cevap istemek ise hangi temperature'da olursa olsun çeşitlilik getirir, çünkü model artık ilk tercihinden kaçınmak için bir sebebe sahiptir. Farkı görmek için sekmeler arasında geç ve ürünü değiştir.
Zincir. Kısa, akılda kalıcı ve insanları her gün geri getiren "zinciri kırma" fikrini çağrıştırıyor.
Bir sohbet uygulamasındaki yeniden oluştur düğmesi aynı prompttan yeni bir yanıt örnekler; cevapların ne kadar değiştiğini görmenin hızlı bir yoludur. İstediğinden fazla değişiyorlarsa çözüm genellikle daha belirgin bir prompttur: net bir görev iyi cevapların aralığını daraltır ve denemeleri birbirine benzetir. Neyin ekleneceğini prompt yazma rehberi anlatır.
Sıkça Sorulan Sorular
LLM'de temperature nedir?
Temperature, sıradaki her tokenin seçiminin ne kadar rastgele olacağını belirleyen bir örnekleme ayarıdır. Model olası her sonraki tokene bir puan verir ve puanlar olasılıklara çevrilmeden önce temperature değerine bölünür. Düşük değerler en yüksek seçeneğin baskın olmasını sağlar; yüksek değerler olasılıkları düzleştirir, böylece daha az olası tokenler daha sık seçilir.
Kodlama için hangi temperature değerini kullanmalıyım?
Kod, veri çıkarma ve tek doğru cevabı olan her görev için 0 ile 0.3 arası düşük bir değer yaygın bir başlangıç noktasıdır, çünkü en olası devamı ve tekrarlanabilir sonuçlar istersin. İsim ya da alternatif tasarım fikirleri üretmek gibi çeşitlilik istediğinde değeri yükselt. Bazı akıl yürütme modelleri sadece varsayılan değerlerini kabul eder, bu yüzden sağlayıcının dokümantasyonuna bak.
Temperature ile top_p arasındaki fark nedir?
Temperature bütün olasılık dağılımını yeniden şekillendirir. Nucleus sampling de denen top_p ise onu keser: model sadece olasılıklarının toplamı p'ye ulaşan en küçük token grubundan örnekleme yapar, yani top_p = 0.9 olası olmayan tokenlerin uzun kuyruğunu atar. Sağlayıcılar genellikle ikisinden birini ayarlayıp diğerini varsayılanda bırakmayı önerir.
Temperature 0 çıktıyı deterministik yapar mı?
Neredeyse, ama tam değil. 0'da model her adımda en olası tokeni alır, bu yüzden tekrarlanan denemeler genellikle aynı ya da çok yakındır. Sağlayıcının sunucularındaki küçük sayısal farklar yine de ara sıra bir tokeni değiştirebilir ve bir token farklı olduğunda yanıtın geri kalanı başka bir yola girebilir.
ChatGPT ya da Claude'da temperature'ı değiştirebilir miyim?
Sohbet uygulamalarında hayır: örnekleme ayarlarını senin yerine seçerler ve bir temperature kontrolü göstermezler. API'ler üzerinden ve OpenAI Playground, Anthropic Console ve Google AI Studio gibi geliştirici araçlarında ayarlayabilirsin. Bir sohbet uygulamasında çeşitlilik ya da tutarlılığı promptun kendisinde iste.