Перейти к основному содержимому

Параметры генерации

Параметры генерации определяют как модель выбирает следующий токен. Понимание этих параметров позволяет управлять балансом между точностью и креативностью ответа.

Как модель выбирает токен

После обработки контекста модель выдаёт распределение вероятностей по всем токенам словаря:

"Столица Франции — это"

→ "Париж" 42%
→ "город" 8%
→ "Лондон" 4%
→ "крупный" 3%
→ ...остальные 43% распределены по ~50K токенам

Параметры генерации меняют то, как именно выбирается токен из этого распределения.

Temperature

Контролирует "резкость" распределения вероятностей.

  • Temperature = 0 — всегда берётся самый вероятный токен (детерминизм)
  • Temperature > 1 — распределение сглаживается, маловероятные токены получают шанс
  • Temperature < 1 — распределение заостряется, разница между вероятными и маловероятными увеличивается
Temperature = 0.0 Temperature = 1.0 Temperature = 1.5
"Париж" 99% "Париж" 42% "Париж" 28%
"город" 1% "город" 8% "город" 11%
"Лондон" 0% "Лондон" 4% "Лондон" 8%

Когда что использовать

TemperatureПоведениеПрименение
0.0ДетерминированныйИзвлечение данных, SQL, JSON, классификация
0.1–0.3Строгий, минимум вариацийСуммаризация фактов, перевод
0.5–0.7СбалансированныйОтветы на вопросы, объяснения
0.7–0.9Умеренно творческийОбщение, написание текстов
1.0–1.2ТворческийГенерация идей, художественный текст
> 1.5НепредсказуемыйРедко, экспериментально

:::tip Практика Для большинства продуктовых задач: temperature = 0.7. Для структурированного вывода: temperature = 0. :::

Top-p (Nucleus Sampling)

Ограничивает выбор токенами, которые суммарно набирают p% вероятности.

top_p = 0.9:
"Париж" 42% ← включён (42%)
"город" 8% ← включён (50%)
"Лондон" 4% ← включён (54%)
"крупный" 3% ← включён (57%)
... ← включаем пока не наберём 90%
все остальные ← исключены

Смысл: убирает совсем маловероятные ("мусорные") токены, оставляет осмысленный выбор.

Top-pЭффект
1.0Нет фильтрации (все токены)
0.9Стандарт, убирает редкий мусор
0.7Более консервативный выбор
0.1Почти как temperature=0
предупреждение

Не меняй одновременно temperature и top-p — они оба влияют на одно и то же. Обычно оставляют один из них по умолчанию.

Top-k

Ограничивает выбор k наиболее вероятными токенами.

top_k = 5:
"Париж" 42% ← включён
"город" 8% ← включён
"Лондон" 4% ← включён
"крупный" 3% ← включён
"прекрасный" 2% ← включён
всё остальное ← исключено

Разница с top-p: top-k фиксированное число токенов, top-p адаптируется к форме распределения.

Top-k используется реже в продакшене — top-p обычно лучше, так как автоматически адаптируется.

Max Tokens (Max Output Tokens)

Максимальная длина ответа модели в токенах.

max_tokens = 100 → ответ обрежется на 100 токенах, даже если не закончен
max_tokens = 4096 → стандартный лимит для большинства задач

Не путать с context window — это только лимит на генерируемую часть.

ЗадачаРекомендуемый max_tokens
Классификация / да-нет10–50
Краткий ответ100–500
Стандартный ответ1024–2048
Длинный текст / анализ4096+
подсказка

Всегда устанавливай разумный max_tokens — это защита от зависших запросов и неожиданных расходов.

Frequency Penalty

Штрафует токены, которые уже появлялись в ответе, пропорционально количеству появлений.

frequency_penalty = 0.0 → нет штрафа
frequency_penalty = 1.0 → токен штрафуется на каждое предыдущее появление
frequency_penalty = 2.0 → сильный штраф, почти никогда не повторяет

Применение: убрать "заезженные" фразы, монотонность, бесконечные повторения.

Presence Penalty

Штрафует токены, которые хоть раз появились в ответе (фиксированный штраф, не нарастающий).

presence_penalty = 0.0 → нет штрафа
presence_penalty = 1.0 → однократный штраф за каждый токен что уже встречался

Применение: стимулировать разнообразие тем в ответе.

ПараметрЧто делаетКогда
frequency_penaltyБьёт за повторения пропорциональноМонотонные ответы
presence_penaltyБьёт за любое повторениеХочешь разнообразия тем

Stop Sequences

Список строк, при появлении которых генерация немедленно останавливается.

stop=["###", "\n\nUser:", "<|end|>"]

Применение:

  • Форматы с разделителями (CSV, JSON lines)
  • Диалог-системы (остановить на реплике пользователя)
  • Структурированный вывод

Seed

Фиксирует случайность для воспроизводимости.

seed=42 # при одинаковом seed и параметрах → одинаковый ответ

Применение: тестирование, отладка, A/B сравнение промтов.

предупреждение

Seed гарантирует воспроизводимость только на одной версии модели. После обновления модели — результат может измениться.

Типовые конфигурации

# Извлечение данных / JSON / SQL
{
"temperature": 0,
"max_tokens": 1024,
}

# Ответы на вопросы
{
"temperature": 0.3,
"max_tokens": 2048,
}

# Генерация контента
{
"temperature": 0.8,
"top_p": 0.9,
"max_tokens": 4096,
}

# Мозговой штурм / идеи
{
"temperature": 1.0,
"top_p": 0.95,
"presence_penalty": 0.5,
"max_tokens": 2048,
}

Резюме

ПараметрЧто делаетДиапазон
temperatureСлучайность выбора токена0–2
top_pФильтр по накопленной вероятности0–1
top_kФильтр по числу токенов1–∞
max_tokensЛимит длины ответа1–∞
frequency_penaltyШтраф за повторения (нарастающий)0–2
presence_penaltyШтраф за любое повторение0–2
stopСтоп-строкимассив строк
seedВоспроизводимостьцелое число