什么是代币?
令牌可以被认为是单词的片段。在 API 处理提示之前,输入被分解为标记。这些标记并没有准确地在单词开始或结束的地方被分割——标记可以包含尾随空格甚至子词。以下是一些有助于理解令牌长度的经验法则:
-
1 个令牌 ~= 4 个英文字符
-
1 个令牌 ~= ¾ 字
-
100 个标记 ~= 75 个单词
或者
-
1-2 句话 ~= 30 个标记
-
1 段 ~= 100 个代币
-
1,500 个单词 ~= 2048 个标记
要获得有关令牌如何堆叠的更多上下文,请考虑以下内容:
-
韦恩·格雷茨基 (Wayne Gretzky) 的名言“你错过了 100% 的未投球”包含 11 个标记。
-
OpenAI 的章程包含 476 个代币。
-
美国独立宣言的抄本包含 1,695 个标记。
单词如何拆分为标记也取决于语言。例如“Cómo estás”(西班牙语中的“你好吗”)包含 5 个标记(10 个字符)。较高的 token-to-char 比率会使为英语以外的语言实现 API 的成本更高。
要进一步探索标记化,您可以使用我们的交互式Tokenizer 工具,它允许您计算标记的数量并查看文本如何分解为标记。或者,如果您想以编程方式对文本进行标记化,您可以探索库,例如 Python 的transformers包或 node.js 的gpt-3-encoder包。
令牌限制
根据使用的模型,请求最多可以使用 4097 个在提示和完成之间共享的令牌。如果您的提示是 4000 个令牌,您的完成最多可以是 97 个令牌。
该限制目前是一种技术限制,但通常有创造性的方法可以在限制内解决问题,例如压缩您的提示,将文本分成更小的部分等。
代币定价
API 以不同的价位提供多种模型类型。每个模型都有一系列的功能,davinci是最有能力的,ada是最快的。对这些不同模型的请求定价不同。您可以在此处找到有关代币定价的详细信息。
探索代币
API 根据语料库数据中的上下文处理单词。GPT-3 接受提示,将输入转换为标记列表,处理提示,并将预测的标记转换回我们在响应中看到的单词。
对我们来说两个相同的词可能会生成不同的标记,具体取决于它们在文本中的结构。考虑 API 如何根据文本中的上下文为单词“ red ”生成标记值:
在上面的第一个示例中,“red”的标记“2266”包含一个尾随空格。
'Red' 的标记“2296”(带有前导空格并以大写字母开头)不同于带有小写字母的“red”的标记“2266”。
在句子开头使用“红色”时,生成的标记不包含前导空格。令牌“7738”与该词的前两个示例不同。
观察:
令牌出现的可能性越大/频率越高,分配给它的令牌编号越低:
-
在所有 3 个句子中,为这段时间生成的标记都是相同的(“13”)。这是因为,在上下文中,句号在整个语料库数据中的使用非常相似。
-
为“红色”生成的令牌根据其在句子中的位置而有所不同:
-
句子中间的小写字母:'red' - (token: “2266”)
-
句子中间大写:'Red' - (token: “2297”)
-
句子开头大写:'Red' - (token: “7738”)
-
使用令牌知识更好地设计提示
以空格结尾的提示
现在,由于我们知道标记可以包含尾随空格字符,因此请牢记以空格字符结尾的提示可能会导致输出质量较低。这是因为 API 已经在其令牌字典中包含尾随空格。
使用 logit_bias 参数
可以在logit_bias参数中设置特定标记的偏差,以修改指定标记出现在完成中的可能性。例如,考虑一下我们正在构建一个人工智能烘焙助手,它对其用户的鸡蛋过敏反应敏感。
当我们使用提示“ The ingredients for banana bread are ”运行 API 时,响应将包含“鸡蛋”作为第二种成分的概率为 26.8%。
注意:要在Playground中查看完成概率,请从Show Probabilities下拉列表中选择Full Spectrum 。
由于我们的 AI Baking Assistant 对鸡蛋过敏很敏感,因此我们可以使用我们的标记知识在logit_bias参数中设置偏差,以阻止模型生成包含单词“鸡蛋”的任何变体的响应。
首先,使用这个标记器工具来识别我们需要为其设置偏差的标记。
代币:
-
尾随空格的单数:'egg' - “5935”
-
带尾随空格的复数形式:' eggs' - “9653”
-
为 'Egg' 或 'Eggs' 生成的子词标记 - 'gg':“1130”
logit_bias参数接受介于 -100 到 +100 之间的偏差值,极值会导致相关令牌的禁止 (-100) 或排他选择 (100) 。
将 logit 偏差添加到提示中将修改单词“鸡蛋”(及其变体)被包含在我们的香蕉面包提示的响应中的可能性。上面的提示生成一个不包含任何鸡蛋的响应!
虽然我们不能保证它会生成最好的无蛋香蕉面包食谱,但 AI 烘焙助手满足了它对用户鸡蛋过敏的考虑。