在上一篇文章中,我们知道了,ChatOpenAI
对象调用 invoke
方法返回的的信息中,
包含了输入的 token
数量以及输出的 token
数量。
那么它到底是怎么计算的呢?
titoken
tiktoken
是 OpenAI 开发的开源的快速 token 切分器。
跟人类不一样,GPT 都是以 token 的形式来阅读文本的。而不同数量的 token,消耗的资源是不一样的,同样的,花费的 RMB 也是不一样的。
另一方面,我们也可以通过计算输入的 token
数量来了解是否太长而超出了模型处理能力。
使用 tiktoken
可以快速的计算出文本的 token 数量:
import tiktoken encoding = tiktoken.encoding_for_model("gpt-3.5-turbo") chinese = """LangChain为各种组件提供了标准的、可扩展的接口和外部集成,可用于构建LLMs。""" tokens = encoding.encode(chinese) print(tokens) num_of_token_in_chinese = len(encoding.encode(chinese)) print(f'chinese: {chinese}, num of token: {num_of_token_in_chinese}')
输出:
[27317, 19368, 18184, 7305, 226, 87502, 41127, 14558, 29172, 84844, 35287, 31944, 12870, 228, 9554, 5486, 31540, 15355, 102, 77413, 9554, 30177, 40526, 34208, 48915, 34048, 43167, 13153, 3922, 31540, 11883, 35304, 78935, 26892, 4178, 22365, 1811] chinese: LangChain为各种组件提供了标准的、可扩展的接口和外部集成,可用于构建LLMs。, num of token: 37
不同模型的上下文长度及价格
参考文档:
- 零一万物:https://platform.lingyiwanwu.com/docs
- OpenAI:https://platform.openai.com/docs/models
- 智谱清言:https://open.bigmodel.cn/dev/howuse/model