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

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

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

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

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: задайте направление с помощью целевых значений 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» в дополнении.

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