使用OpenAI tiktoken计算tokens数
#### 注:作为参考吧,计算的结果并非和API完全相同。
### 概述
`tiktoken` 是 OpenAI 的开源分词器。
假设字符串:
`"tiktoken is great!"` 编码 `"cl100k_base"`
分词器可以分解为一个数组;
`["t", "ik", "token", " is", " great", "!"]`
由于GPT用 tokens 理解文本,所以将字符串分解为tokens非常重要。
了解字符串分解为tokens的数量,可以:
1. 字符串是否太长,超出文本模型处理的范围
2. OpenAI API调用的价格是多少
### Encodings 编码器
编码指定如何将文本转换为 tokens,不同的模型使用不同的编码。
`tiktoken` OpenAI模型支持三种编码:
| Encoding name | OpenAI models |
| ----------------------- | --------------------------------------------------- |
| `cl100k_base` | `gpt-4`, `gpt-3.5-turbo`, `text-embedding-ada-002` |
| `p50k_base` | Codex models,`text-davinci-002`, `text-davinci-003` |
| `r50k_base` (or `gpt2`) | GPT-3 models like`davinci` |
各个模型的编码器获取方式 `tiktoken.encoding_for_model()` :
```
encoding = tiktoken.encoding_for_model('gpt-3.5-turbo')
```
注意下 `p50k_base` 和 `r50k_base` 类似,对于非编码 non-code 应用,返回结果通常是相同的。