OpenAI
此頁面由機器翻譯。查看原文英文文章

使用 logit bias 配合 OpenAI API 改變 token 機率

了解如何使用 logit bias 參數修改模型輸出

更新日期:12 days ago

Logit_bias 是一個可選參數,用來修改指定 token 在模型生成輸出中出現的可能性。

此參數接受一個 JSON 物件,將 token 對應到相關的 bias 值,範圍由 -100(在大多數情況下會阻止該 token 被生成)到 100(只選擇該 token,令它更有可能被生成)。像 -1 和 1 這類中等數值,則只會較輕微地改變 token 被選中的機率。

由於此參數接收的是 token,而不是文字,因此你會想使用tokenizer 工具把文字轉換成 token ID。讓我們看幾個例子。

例子 1:移除「time」

如果我們以提示詞「Once upon a,」呼叫 Completions 端點,補全文字很大機會會以「 time.」開始。

「time」這個字會 token 化為 ID 2435,而「 time」(前面有空格)則會 token 化為 ID 640。我們可以在 logit_bias 中把這些設為 -100,禁止它們出現在補全中,如下所示:

completion = client.chat.completions.create( 
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "你會完成使用者的句子。"},
"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 有效禁止了該 token。

例子 2:用針對性的 logit bias 數值提供方向

讓我們再看另一個例子,使用食譜生成器提示詞。

很多食譜都建議使用鍋,但假設我們沒有鍋。我們會想避免補全文字生成 pot 一字。『Pot』會 token 化為 1787,所以我們可以如下設定 logit_bias,把它從生成結果中移除。

logit_bias={1787:-100}

現在,我們的補全文字可能會改為包含「saucepan」一字。完美!

例子 3:提高某個字出現的機會

假設我們想提高某個字出現的可能性。

例如,也許我們正在營運一個提供微波爐食譜的網站,所以我們想確保食譜中會出現「microwave」一字。Microwave 會 token 化為 ID 27000。我們可以設定正的 logit_bias 來提高此 token 出現的可能性,如下所示:

logit_bias={27000:5}

現在,我們的補全文字更有可能包含『microwave』一字。

我們把 logit_bias 設為 5,因為我們發現把 logit_bias 設為 1 時,往往未能令「microwave」出現在補全文字中;而像 10 這樣較高的 logit_bias 數值,則會令「 microwave」過於頻繁地出現在補全文字中。

這篇文章對你有幫助嗎?