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}
)現在,提示詞「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」這個字;而較高的 logit_bias 值(例如 10)則會令「 microwave」這個字在補全中出現得過於頻繁。
