Logit_bias — это необязательный параметр, который изменяет вероятность появления указанных токенов в сгенерированном моделью выводе.
Этот параметр принимает JSON-объект, который сопоставляет токены с соответствующим значением смещения от -100 (что в большинстве случаев блокирует генерацию этого токена) до 100 (исключительный выбор токена, повышающий вероятность его генерации). Умеренные значения, такие как -1 и 1, изменяют вероятность выбора токена в меньшей степени.
Поскольку параметр принимает токены, а не текст, вам понадобится инструмент токенизатора, чтобы преобразовать текст в ID токенов. Рассмотрим несколько примеров.
Пример 1: удалить «time»
Если мы вызовем конечную точку Completions с промптом «Once upon a», дополнение с большой вероятностью начнется с « time».
Слово «time» токенизируется в ID 2435, а слово « time» (с пробелом в начале) токенизируется в ID 640. Мы можем передать их через logit_bias со значением -100, чтобы запретить их появление в дополнении, вот так:
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "You finish user's sentences."},
"role": "user", "content": "Once upon a"} ]
logit_bias={2435:-100, 640:-100}
)Теперь промпт «Once upon a» генерирует продолжение «midnight dreary, while I pondered, weak and weary.»
Обратите внимание: слова «time» здесь нигде нет, поскольку мы фактически запретили этот токен с помощью logit_bias.
Пример 2. Управление генерацией с помощью целевых значений смещения логитов
Рассмотрим ещё один пример с промптом для генератора рецептов.
Во многих рецептах предлагается использовать кастрюли, но предположим, что у нас нет кастрюли. Нам нужно исключить слово «pot» из генерируемого продолжения. Слову «Pot» соответствует токен 1787, поэтому его можно исключить из генерации, задав logit_bias, как показано ниже.
logit_bias={1787:-100}Теперь наше дополнение может вместо этого содержать слово «saucepan». Отлично!
Пример 3. Как повысить вероятность появления слова
Предположим, мы хотим повысить вероятность появления определённого слова.
Например, у нас есть сайт с рецептами блюд, которые можно приготовить в микроволновой печи, и мы хотим, чтобы в рецепте обязательно появлялось слово «microwave». Слову «Microwave» соответствует токен с ID 27000. Вероятность появления этого токена можно повысить, задав положительное значение logit_bias, как показано ниже:
logit_bias={27000:5}Теперь слово «microwave» с большей вероятностью появится в продолжении.
Мы задали для logit_bias значение 5, поскольку при значении logit_bias, равном 1, слово «microwave» часто не появлялось в продолжении, а при более высоких значениях logit_bias, например 10, слово « microwave» встречалось слишком часто.
