0%

langchain 入门指南(三)- token的计算

在上一篇文章中,我们知道了,ChatOpenAI 对象调用 invoke 方法返回的的信息中, 包含了输入的 token 数量以及输出的 token 数量。

那么它到底是怎么计算的呢?

titoken

tiktoken 是 OpenAI 开发的开源的快速 token 切分器。

跟人类不一样,GPT 都是以 token 的形式来阅读文本的。而不同数量的 token,消耗的资源是不一样的,同样的,花费的 RMB 也是不一样的。

另一方面,我们也可以通过计算输入的 token 数量来了解是否太长而超出了模型处理能力。

使用 tiktoken 可以快速的计算出文本的 token 数量:

1
2
3
4
5
6
7
8
9
10
11
12
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}')

输出:

1
2
[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

不同模型的上下文长度及价格

参考文档:

  1. 零一万物:https://platform.lingyiwanwu.com/docs
  2. OpenAI:https://platform.openai.com/docs/models
  3. 智谱清言:https://open.bigmodel.cn/dev/howuse/model