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

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

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

更新日: 3 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.」を生成します。

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」が頻繁に出現しすぎることが分かったためです。

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