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