【AIGC】大语言模型千问、gpt、智谱token盘算-tiktoken、get_tokenizer等 ...

打印 上一主题 下一主题

主题 789|帖子 789|积分 2367

一、token盘算

编码(encode)是指将文本映射为token的数字列表,解码(decode)是指将token的数字列表转化为文本。
给定一个文本字符串(比方"tiktoken is great!")和编码算法方式cl100k_base, 可以分词为["t", "ik", "token", " is", " great", "!"],再根据辞书查出数字列表[122,232,5343,3424,5456,12446]。
留意,各大模型一样平常都提供了盘算token数的工具,可在调用模型前先盘算token。缘故原由:


  • 克制token过长,引发错误
  • 可用来预估自己的花费
1.1 OpenAI

gpt系列都可用tiktoken实现token盘算
  1. import tiktoken
  2. # 具体tokenizer模型
  3. enc = tiktoken.get_encoding("o200k_base")
  4. assert enc.decode(enc.encode("hello world")) == "hello world"
  5. # 具体的chat模型
  6. enc = tiktoken.encoding_for_model("gpt-4o")
  7. enc.encode(text) #  获取字典值,[31935, 64559, 99320, 56007, 100629, 104795, 99788, 1773]
  8. len(enc.encode(text)) # 获取长度,8
复制代码
编码算法和openai模型间的对应关系:
Encoding nameOpenAI modelscl100k_basegpt-4, gpt-3.5-turbo, text-embedding-ada-002, text-embedding-3-small, text-embedding-3-largep50k_baseCodex models, text-davinci-002, text-davinci-003r50k_base (or gpt2)GPT-3 models like davinci 1.2 通义千问

  1. # 运行前请 pip install tiktoken
  2. from dashscope import get_tokenizer  # dashscope版本 >= 1.14.0
  3. # 获取tokenizer对象,目前只支持通义千问系列模型
  4. tokenizer = get_tokenizer('qwen-turbo')
  5. input_str = '通义千问具有强大的能力。'
  6. # 将字符串切分成token并转换为token id
  7. tokens = tokenizer.encode(input_str)
  8. print(f"经过切分后的token id为:{tokens}。")
  9. # 经过切分后的token id为: [31935, 64559, 99320, 56007, 100629, 104795, 99788, 1773]
  10. print(f"经过切分后共有{len(tokens)}个token")
  11. # 经过切分后共有8个token
  12. # 将token id转化为字符串并打印出来
  13. for i in range(len(tokens)):
  14.     print(f"token id为{tokens[i]}对应的字符串为:{tokenizer.decode(tokens[i])}")
复制代码
1.3 GLM类模型

GLM类模型,zhipu没有公开任何token盘算工具和方式,在此不做讨论
1.4 其他

待补充
参考

NLP(五十五)tiktoken的使用
官方-tiktoken
官方-tiktoken使用
通义千问计量计费阐明

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表