Температура и параметры генерации на практике
Что делают temperature, top_p, max_tokens и stop на практике: как параметры влияют на ответ модели и какие значения выбирать под задачу — с примерами.
Помимо промпта, поведением модели управляют параметры генерации. Их немного, и понимание четырёх основных — temperature, top_p, max_tokens, stop — покрывает почти все практические потребности. Разберём, что каждый делает и какие значения брать под задачу.
temperature: детерминизм или разнообразие
temperature регулирует случайность выбора следующего токена. Ниже — модель предсказуемее и стабильнее, выше — разнообразнее и «креативнее». Определение — в глоссарии.
| Значение | Поведение | Задачи |
|---|---|---|
| 0 – 0,3 | Максимально стабильно, почти детерминированно | Извлечение данных, классификация, код, строгий JSON |
| 0,4 – 0,7 | Баланс точности и живости | Ответы поддержки, деловая переписка, объяснения |
| 0,8 – 1,0+ | Разнообразно и вариативно | Идеи, тексты, брейншторм, варианты формулировок |
top_p: альтернативный рычаг случайности
top_p (nucleus sampling) ограничивает выбор токенов самыми вероятными, чья суммарная вероятность не превышает p. При top_p = 0.1 модель выбирает только из самого вероятного ядра, при 1.0 — из всего распределения.
- Не крутите одновременно
temperatureиtop_p— эффекты накладываются и результат трудно предсказать. Выберите один рычаг. - По умолчанию большинству задач достаточно управлять
temperature, оставивtop_pв значении по умолчанию. - top_p удобен, когда нужно отсечь совсем маловероятные токены, сохранив разнообразие среди правдоподобных.
max_tokens: потолок длины ответа
max_tokens ограничивает длину генерации сверху. Это и защита от неожиданно длинных ответов, и контроль стоимости — выходные токены обычно дороже входных.
from openai import OpenAI
client = OpenAI(
base_url="https://ai-gatewey.ru/v1",
api_key="sk-aigate-ваш_ключ",
)
resp = client.chat.completions.create(
model="anthropic/claude-sonnet-5",
messages=[{"role": "user", "content": "Классифицируй тональность отзыва одним словом."}],
temperature=0.2, # стабильный, повторяемый ответ
max_tokens=10, # ответ короткий — потолок низкий
stop=["\n"], # остановиться на первом переносе строки
)
print(resp.choices[0].message.content)max_tokens — это обрезка, а не цель: если поставить слишком низко, модель оборвёт ответ на середине. Задавайте потолок с запасом над ожидаемой длиной, но не настолько большим, чтобы модель «растекалась».stop: где остановить генерацию
- stop — список строк-стопперов; встретив любую, модель прекращает генерацию, а сама стоп-строка в ответ не попадает.
- Применение — обрезать по разделителю (
\n,###), не дать модели продолжить за нужный фрагмент, удержать формат в few-shot-шаблоне. - Пример — в шаблоне «Ответ: …» стоппер на метку следующего примера не даст модели придумать лишние пары.
Частые вопросы
Какую температуру ставить по умолчанию?
Зависит от задачи. Для извлечения, классификации и кода — низкую (0–0,3): важна стабильность. Для текстов и идей — выше (0,7–1,0): нужна вариативность. Если сомневаетесь, начните с 0,2–0,3 и поднимайте, если ответы слишком однообразны.
Можно ли крутить temperature и top_p вместе?
Технически да, но не рекомендуется: оба управляют случайностью, эффекты накладываются и результат трудно предсказать. Выберите один рычаг — обычно temperature — а второй оставьте в значении по умолчанию.
max_tokens влияет на стоимость?
Косвенно: он ограничивает число выходных токенов сверху, а значит верхнюю границу их стоимости. Модель может ответить и короче — тогда спишутся только фактические токены из поля usage.
Полный контроль параметров через единый API
Начать бесплатно