OpenAI
このページは機械翻訳されています。元の英語の記事を表示

OpenAI API で logit bias を使用してトークン確率を変更

logit bias パラメーターを使用してモデル出力を変更する方法を学ぶ

更新日: 6 days ago

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」が補完結果に現れる頻度が高くなりすぎたためです。

この記事は役に立ちましたか?