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

OpenAI APIでlogit biasを使ってトークンの出現確率を調整する

logit bias パラメータを使ってモデルの出力を調整する方法を学びましょう

更新日: 13 hours ago

Logit_bias は、モデルが生成する出力において、指定したトークンが出現する可能性(尤度)を調整するオプションのパラメータです。

このパラメータは、トークンを関連するバイアス値に対応付ける JSON オブジェクトを受け取ります。値は -100(多くの場合、そのトークンが生成されるのをブロックします)から 100(そのトークンを排他的に選択し、生成されやすくします)までです。-1 や 1 のような中程度の値は、トークンが選ばれる確率をより小さい幅で変化させます。

このパラメータはテキストではなくトークンを受け取るため、テキストをトークン ID に変換するには tokenizer tool を使うのがよいでしょう。いくつか例を見ていきます。

例 1:'time' を除外する

プロンプト “Once upon a,” で Completions エンドポイントを呼び出すと、補完は非常に高い確率で “ 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.” という補完が生成されます。

logit_bias を使ってそのトークンを事実上禁止しているため、“time” という単語がどこにも出てこないことに注目してください。

例 2:狙った logit bias 値で方向性を与える

レシピ生成のプロンプトを使って、別の例を見てみましょう。

多くのレシピでは鍋(pot)を使うことが提案されますが、鍋がないとしましょう。補完の一部として 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” が頻繁に出すぎる結果になったためです。

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