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 傳入 -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}
)現在,提示詞「很久很久以前」產生的續寫結果是「在淒涼的午夜,當我沉思時,虛弱而疲憊。」
請注意,當中完全找不到「時候」一詞,因為我們已使用 logit_bias 有效禁止產生這個 Token。
範例 2:使用指定的 logit bias 值引導生成結果
我們再以食譜生成器的提示詞來看另一個範例。
許多食譜都建議使用鍋子,但假設我們手邊沒有鍋子。我們不希望續寫結果中生成「鍋子」一詞。「鍋子」會被 Token 化為 1787,因此可以如下設定 logit_bias,使生成結果不出現這個詞。
logit_bias={1787:-100}現在,我們的補全可能改為包含「saucepan」這個字。完美!
範例 3:提高某個詞出現的機率
假設我們想提高某個詞出現的機率。
例如,我們經營的網站可能提供可用微波爐製作的食譜,因此想確保食譜中會出現「微波爐」一詞。「微波爐」會被 Token 化為 ID 27000。我們可以設定正的 logit_bias,提高這個 Token 出現的機率,如下所示:
logit_bias={27000:5}現在,續寫結果更有可能包含「微波爐」一詞。
我們將 logit_bias 設為 5,因為我們發現設為 1 時,續寫結果通常不會出現「微波爐」一詞;但若將 logit_bias 設為 10 等較高的值,續寫結果又會太常出現「 微波爐」一詞。
