Logit_bias 是一个可选参数,用于修改指定 Token 出现在模型生成输出中的可能性。
此参数接受一个 JSON 对象,将 Token 映射到关联的偏置值,范围从 -100(在大多数情况下会阻止生成该 Token)到 100(专门选择该 Token,使其更有可能被生成)。像 -1 和 1 这样的中等值,会以较小幅度改变某个 Token 被选中的概率。
由于该参数接收的是 Token 而不是文本,你需要使用分词器工具将文本转换为 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": "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”在补全中出现得过于频繁。
