英文的 Token 占用相对中文较少,主要有以下原因:
如果想要直观查看 GPT 如何切分 token,可以打开:https://platform.openai.com/tokenizer。但请注意,这个网站仅用于 GPT3 对于 token 的计算,方便我们理解概念。目前所使用的 3.5 和 4.0 采用的是另一种编码方式,通过这个工具测算的结果不一定准确。基于这个需求,可以参考官方的开源计算方式:https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb ,在本地部署之后可以精确计算目前 4.0 的 token 消耗。
如果我们想要直观的查看GPT是如何切分token的话,我们可以打开:[https://platform.openai.com/tokenizer](https://platform.openai.com/tokenizer)在下图可以看到实时生成的tokens消耗和对应字符数量(基于GPT3)在这里值得注意的是,英文的token占用相对于中文是非常少的,这也是为什么很多中文长prompt会被建议翻译成英文设定,中文输出的原因。请注意,这个网站仅用于gpt3对于token的计算,方便我们理解概念。而目前我们所使用的3.5和4.0采用的已经是另一种编码方式,通过下面这个工具测算的结果不一定准确,所以不能把它当做目前的token计算工具来100%参考。(GPT3用的编码是p50k/r50k,GPT3.5是cl100K_base)基于这个需求,我找到了官方的开源计算方式:https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb在本地部署之后可以精确计算目前4.0的token消耗:可以进行准确的计算。
请注意,GPT3和GPT3.5/4的token计算方式是不一样的。(GPT3用的编码是p50k/r50k,GPT3.5是cl100K_base)在这里值得注意的是,英文的Token占用相对于中文是少很多的,这也是为什么很多中文长Prompt会被建议翻译成英文设定,然后要求中文输出的原因。四、Token限制对Prompt编写有什么影响当你理解了前面的一、二、三之后,这个问题的答案应该已经在你脑子里有雏形了:1、理解Token限制,形成“当前消耗了多少Token ”的自然体感,显然会有利于你在连续对话的时候把握一次有效记忆的长度。这样你就不会傻乎乎在超过9000 Token的时候还在继续问最初的问题,然后得到一个失忆的回答,自己也很懵。2、编写Prompt的时候你需要珍惜你的Token s,尽可能秉承奥卡姆剃刀原理,能不多说一句废话就不多说一句,句子、措辞,都值得精简。尤其是在连续多轮对话中,精简有效的表达习惯是非常重要的。五、基于上述原理有哪些Tips1、熟练使用中英文切换。Prompt本身太长了的话,建议用英文设定,要求它用中文输出即可,这样一来可以把省出来的Token留给更多次数的对话。
确定单词的边界:对于英语等使用空格分隔的语言,这相对简单,就像读英文时,我们可以很容易地通过空格知道一个单词结束和另一个开始的地方。对于中文这样的语言,事情就复杂多了,因为中文写作是连续的,没有明显的间隔。这时,我们需要通过其他方法来确定哪些字应该组成一个有意义的词组。使用词典和规则:基于词典的方法:就像查字典一样,我们通过一个大列表(词典)来查找和匹配文本中的词汇。这种方法简单但有局限,因为新词或罕见词可能不在词典中。基于规则的方法:这种方法使用特定的规则来判断字和字之间的关系,比如语法和上下文信息,来确定它们是否应该组成一个词。统计和学习方法:使用统计数据来学习哪些字或字母通常会在一起出现。这种方法通过分析大量的文本数据,学习并预测单词的边界。混合方法:实际应用中,通常会将上述几种方法结合起来,以提高分词的准确性和适用性。简单来说:英文:基于空格和标点符号分词。中文:使用算法识别词汇边界。