使用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 应用,返回结果通常是相同的。