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}
)現在,提示詞「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」這個字過於頻繁地出現在補全中。
