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}
)现在,提示词“从前有一个”生成了补全内容:“夜半阴郁,当我沉思时,虚弱而疲惫。”
请注意,其中完全没有“时间”一词,因为我们已使用 logit_bias 有效地禁用了这个 Token。
示例 2:使用针对性的 logit 偏置值引导生成
下面再来看一个使用食谱生成器提示词的示例。
许多食谱都会建议使用锅,但假设我们没有锅。我们希望补全内容中不要生成“锅”这个词。“Pot”分词后对应的 Token ID 为 1787,因此可以像下面这样设置 logit_bias,使生成内容中不再出现它。
logit_bias={1787:-100}现在,我们的补全可能会改为包含单词“saucepan”。完美!
示例 3:提高某个词的出现概率
假设我们想提高某个词出现的可能性。
例如,假设我们运营着一个提供微波炉食谱的网站,因此希望确保食谱中出现“微波炉”一词。“Microwave”分词后对应的 Token ID 为 27000。我们可以像下面这样设置一个正的 logit_bias,提高该 Token 出现的可能性:
logit_bias={27000:5}现在,补全内容中更有可能出现“微波炉”一词。
我们将 logit_bias 设为 5,因为我们发现,将 logit_bias 设为 1 时,补全内容中往往不会出现“微波炉”一词;而设为 10 之类更高的 logit_bias 值时,“ 微波炉”一词又会过于频繁地出现。
