OpenAI
Эта страница была переведена машинным переводом. Открыть оригинальную статью на английском.

Использование logit bias для изменения вероятности токенов в OpenAI API

Узнайте, как использовать параметр logit bias, чтобы изменять ответы модели

Обновлено: 5 days ago

Logit_bias — необязательный параметр, который изменяет вероятность появления указанных токенов в сгенерированном моделью ответе.

Этот параметр принимает JSON-объект, который сопоставляет токены с соответствующим значением смещения (bias) от -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: задаём направление целевыми значениями logit bias

Разберём ещё один пример — с промптом для генератора рецептов.

Во многих рецептах предлагают использовать кастрюли, но допустим, что у нас нет кастрюли. Мы хотим, чтобы слово 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» появлялось в продолжении слишком часто.

Была ли эта статья полезной?