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

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

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

更新日期:8 days ago

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

此參數接受一個 JSON 物件,將 token 對應至相關的偏差值,範圍由 -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 將這些 token 設為 -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}
)

現在,提示詞「很久以前」會產生補全結果「在一個陰沉的午夜,我孱弱疲憊地沉思着。」

請注意,當中完全沒有「時間」一詞,因為我們實際上已使用 logit_bias 禁止該 Token。

範例 2:以特定的 logit bias 值引導輸出

我們以食譜產生器的提示詞,再看另一個範例。

許多食譜都建議使用鍋具,但假設我們沒有鍋。我們不希望補全結果產生「pot」一詞。「Pot」經 Token 化後的 ID 是 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,因為我們發現設為 1 時,補全結果往往不會出現「microwave」;但若採用 10 等較高的 logit_bias 值,「 microwave」又會過於頻繁地出現在補全結果中。

這篇文章對你有幫助嗎?