Temperature

Чему научитесь

Видео 6:07 и текст урока

К концу урока вы сможете:

Видео и текст урока.

Смотреть урок на Skilljar Temperature · 6:07

Temperature — мощный параметр, который задаёт, насколько предсказуемыми или творческими будут ответы Claude. Если научиться им пользоваться, можно заметно улучшить ИИ-приложение.

Как Claude генерирует текст

Прежде чем разбираться с temperature, полезно понять, как Claude генерирует текст. Когда вы отправляете промпт вроде «What do you think?», он проходит три ключевых шага:

Вероятности следующего токена: about 0.3, would 0.2, of, is и when по 0.1, makes и we по 0.05.
Вероятности следующего токена после «What do you think»: «about» 0.3, «would» 0.2, «of», «is», «when» по 0.1, «makes» и «we» по 0.05.

В этом примере Claude может дать «about» вероятность 30%, «would» — 20%, «of» — 10% и так далее. Затем модель выбирает один токен и повторяет весь процесс, пока не построит целые предложения.

Тот же список токенов в виде столбчатой диаграммы.
Те же вероятности в виде диаграммы: «about» 30%, «would» 20%, «of», «is», «when» по 10%, «makes» и «we» по 5%.

Что делает temperature

Temperature — десятичное число от 0 до 1, которое напрямую влияет на эти вероятности выбора. Это как «ручка креативности» ответов Claude.

При низкой temperature у about 100%, у остальных 0%; при высокой вероятности 23, 18, 15, 12, 12, 11 и 9%.
При низкой temperature «about» получает 100%, остальные 0%; при высокой вероятности выравниваются: 23, 18, 15, 12, 12, 11 и 9%.

При низкой temperature (около 0) Claude становится очень детерминированным: почти всегда выбирает самый вероятный токен. При высокой (около 1) вероятность распределяется по вариантам равномернее, и ответы получаются разнообразнее и креативнее.

Интерактивное демо

Temperature можно увидеть в действии в интерактивном демо Claude. Посмотрите, как меняется распределение вероятностей, когда двигаешь ползунок temperature:

Ползунок temperature на 0.49: about около 60%, остальные токены меньше 10%.
Ползунок на 0.49: у «about» около 60%, у остальных токенов меньше 10%.

При temperature 0.0 «about» получает 100% — полностью детерминированно. При 1.0 вероятности распределяются по всем токенам равномернее, и появляются случайность и креативность.

Как выбрать temperature

Разным задачам подходят разные диапазоны:

Низкий, средний и высокий диапазоны temperature и задачи для них, стрелка от Less creative к More creative.
Три диапазона temperature и задачи для них — от «менее творческих» к «более творческим».

Низкая temperature (0.0–0.3)

Средняя temperature (0.4–0.7)

Высокая temperature (0.8–1.0)

Temperature в коде

Добавить temperature в функцию chat просто. Вот как изменить существующую функцию:

def chat(messages, system=None, temperature=1.0):
    params = {
        "model": model,
        "max_tokens": 1000,
        "messages": messages,
        "temperature": temperature
    }

    if system:
        params["system"] = system

    message = client.messages.create(**params)
    return message.content[0].text

Главные изменения: параметр temperature=1.0 в сигнатуре и "temperature": temperature в словаре params.

Проверяем эффект

Чтобы увидеть temperature в действии, попробуйте генерировать идеи фильмов с разными настройками:

# Low temperature - more predictable
answer = chat(messages, temperature=0.0)

# High temperature - more creative
answer = chat(messages, temperature=1.0)

При 0.0 вы, скорее всего, раз за разом будете получать что-то вроде «A time-traveling archaeologist must prevent ancient artifacts from being stolen.» При 1.0 темы, персонажи и сюжеты станут гораздо разнообразнее.

Главное

Помните: temperature не гарантирует разные ответы — она лишь меняет вероятность их получить. Даже при высокой temperature Claude иногда выдаёт похожие ответы. Ключ в том, чтобы подобрать temperature под конкретную задачу:

Temperature — один из самых практичных параметров для точной настройки поведения Claude под ваши задачи.

Дальше

Следующий урок — потоковый ответ: как показывать текст по кускам, не дожидаясь конца генерации.

Оригинал урока: Temperature.