Temperature и top-p в LLM: как настраивать параметры генерации
Основы3 минРедакция Innovialabs
Коротко
Temperature управляет степенью случайности при выборе следующего токена, top-p ограничивает выбор самыми вероятными вариантами. Для точных задач ставьте низкие значения, для творческих — выше, и меняйте обычно только один параметр.
Коротко: что делают эти параметры
LLM генерирует текст по одному токену (слову или его части). На каждом шаге модель считает вероятность для всех возможных следующих токенов, а затем выбирает один из них. Temperature и top-p управляют именно этим выбором.
- Temperature — насколько «смело» выбирать. Низкое значение: почти всегда берется самый вероятный токен. Высокое: шансы менее вероятных вариантов растут.
- Top-p (nucleus sampling) — из какого круга выбирать. Модель сортирует токены по вероятности и оставляет только самые вероятные, пока их суммарная вероятность не достигнет p. Остальные отбрасываются.
Как это выглядит на практике
Допустим, модель продолжает фразу «Наш магазин работает…», и ее оценки такие:
| Токен | Вероятность |
|---|---|
| ежедневно | 0.50 |
| без | 0.25 |
| с | 0.15 |
| круглосуточно | 0.07 |
| вприпрыжку | 0.03 |
- Temperature около 0: почти всегда «ежедневно». Ответы стабильные и предсказуемые.
- Temperature выше: распределение «сглаживается», и «круглосуточно» или даже «вприпрыжку» появляются чаще. Текст разнообразнее, но растет риск странностей.
- Top-p = 0.9: модель берет «ежедневно», «без», «с» (вместе 0.90) и выбирает только среди них. Редкие и странные варианты отсечены, но разнообразие остается.
Пример одного запроса с разными настройками
Запрос: «Придумай название для кофейни».
- Низкая temperature: несколько запусков дают одно и то же или очень похожие названия.
- Средняя: варианты отличаются, но остаются уместными.
- Высокая: появляются неожиданные и иногда бессмысленные комбинации слов.
Рекомендуемые настройки по задачам
Точные диапазоны зависят от модели и провайдера, поэтому ориентируйтесь на логику, а не на конкретные числа из чужих примеров.
| Задача | Temperature | Top-p | Почему |
|---|---|---|---|
| Извлечение данных, классификация, JSON | минимальная (0 или близко) | по умолчанию | Нужен один правильный и воспроизводимый ответ |
| Ответы службы поддержки, RAG | низкая | по умолчанию | Точность и опора на документы важнее разнообразия |
| Резюме, перефразирование | низкая или средняя | по умолчанию | Нужна естественность без ухода от смысла |
| Маркетинговые тексты, идеи, названия | средняя или высокая | по умолчанию или чуть ниже | Ценится разнообразие вариантов |
Пример вызова API с параметрами:
response = client.chat.completions.create(
model="your-model",
messages=[{"role": "user", "content": "Извлеки дату и сумму из текста..."}],
temperature=0,
)
Частые ошибки
- Меняют оба параметра сразу. Документация многих провайдеров советует настраивать либо temperature, либо top-p. Так проще понять, что повлияло на результат.
- Ждут детерминизма при temperature 0. Ответы станут гораздо стабильнее, но полная идентичность при каждом запуске не гарантируется.
- Лечат температурой галлюцинации. Низкая temperature снижает случайность, но не добавляет знаний. Против выдуманных фактов помогают RAG, четкие инструкции и проверка ответа.
- Поднимают temperature для «живости» в поддержке. Тон лучше задавать промптом, а не случайностью.
- Не проверяют поддержку параметров. Некоторые модели, особенно с режимом рассуждений, игнорируют или ограничивают эти настройки. Смотрите документацию конкретной модели.
Как подобрать значения
- Начните со значений по умолчанию или с низкой temperature для точных задач.
- Соберите 20–30 типичных запросов.
- Прогоните их несколько раз с разными значениями одного параметра.
- Оцените не только качество, но и стабильность: насколько отличаются ответы между запусками.
- Зафиксируйте выбранные значения в коде и пересматривайте их при смене модели.