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.」という補完結果が生成されます。
単語「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」が現れないことが多い一方、10 などの高い logit_bias 値では、単語「 microwave」が補完結果に現れる頻度が高くなりすぎたためです。
