Основы

Температура и параметры генерации на практике

Что делают temperature, top_p, max_tokens и stop на практике: как параметры влияют на ответ модели и какие значения выбирать под задачу — с примерами.

2 минуты чтения

Помимо промпта, поведением модели управляют параметры генерации. Их немного, и понимание четырёх основных — 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

Начать бесплатно