什么是OpenAI代币以及如何计算它们?

什么是代币?

令牌可以被认为是单词的片段。在 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 ”生成标记值:

什么是OpenAI代币以及如何计算它们?
什么是OpenAI代币以及如何计算它们?

在上面的第一个示例中,“red”的标记“2266”包含一个尾随空格。

什么是OpenAI代币以及如何计算它们?
什么是OpenAI代币以及如何计算它们?

‘Red’ 的标记“2296”(带有前导空格并以大写字母开头)不同于带有小写字母的“red”的标记“2266”。

什么是OpenAI代币以及如何计算它们?
什么是OpenAI代币以及如何计算它们?

在句子开头使用“红色”时,生成的标记不包含前导空格。令牌“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%。

什么是OpenAI代币以及如何计算它们?

注意:要在Playground中查看完成概率,请从Show Probabilities下拉列表中选择Full Spectrum 。

由于我们的 AI Baking Assistant 对鸡蛋过敏很敏感,因此我们可以使用我们的标记知识在logit_bias参数中设置偏差,以阻止模型生成包含单词“鸡蛋”的任何变体的响应。

首先,使用这个标记器工具来识别我们需要为其设置偏差的标记。

什么是OpenAI代币以及如何计算它们?
什么是OpenAI代币以及如何计算它们?

代币:

  • 尾随空格的单数:’egg’ – “5935”

  • 带尾随空格的复数形式:’ eggs’ – “9653”

  • 为 ‘Egg’ 或 ‘Eggs’ 生成的子词标记 – ‘gg’:“1130”

logit_bias参数接受介于 -100 到 +100 之间的偏差值,极值会导致相关令牌的禁止 (-100) 或排他选择 (100) 。

将 logit 偏差添加到提示中将修改单词“鸡蛋”(及其变体)被包含在我们的香蕉面包提示的响应中的可能性。上面的提示生成一个不包含任何鸡蛋的响应!

虽然我们不能保证它会生成最好的无蛋香蕉面包食谱,但 AI 烘焙助手满足了它对用户鸡蛋过敏的考虑。

ChatGPT中国体验版点击进入https://yundongfang.com/chatgpt.php

正文完
 0