Logit_bias は、指定したトークンがモデル生成出力に出現する可能性を変更する任意のパラメーターです。
このパラメーターは、トークンを関連するバイアス値にマッピングする JSON オブジェクトを受け取ります。値の範囲は -100(ほとんどの場合、そのトークンの生成をブロックします)から 100(そのトークンを排他的に選択し、生成される可能性を高めます)までです。-1 や 1 のような中程度の値では、トークンが選択される確率の変化は小さくなります。
このパラメーターはテキストではなくトークンを受け取るため、テキストをトークン ID に変換するには トークナイザーツール を使用します。いくつかの例を見ていきましょう。
例 1: 「time」を除外
Completions エンドポイントをプロンプト「Once upon a」で呼び出すと、補完は「 time」で始まる可能性が非常に高くなります。
単語「time」は ID 2435 にトークン化され、単語「 time」(先頭にスペースがあります)は ID 640 にトークン化されます。これらを -100 として logit_bias に渡すことで、次のように補完に出現しないよう禁止できます:
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.」を生成します。
logit_bias を使ってそのトークンを実質的に禁止したため、単語「time」はどこにも出てこないことに注目してください。
例 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」が出現しないことが多く、一方で 10 のようなより高い logit_bias 値では、補完に単語「 microwave」が頻繁に出現しすぎることが分かったためです。
