分词器
分词器是一种将一段文本分解为更小的单元(称为 token)的工具。这些 token 可以是单个单词,甚至可以是单词的一部分,例如前缀、后缀或标点符号。根据经验,1个token一般对应3~4个角色文本。
SillyTavern 提供“最佳匹配”选项,尝试根据所使用的 API 提供程序使用以下规则来匹配标记生成器。
文本补全 API (可重写):
- NovelAI Clio:NerdStash 分词器。
- NovelAI Kayra:NerdStash v2 分词器。
- 文本补全:API 分词器(如果支持)或 Llama 分词器。
- KoboldAI Classic / AI Horde:Llama 标记器。
- KoboldCpp:模型 API 标记器。
如果您得到的结果不准确或希望进行实验,您可以设置一个 覆盖分词器 供 SillyTavern 在向 AI 后端形成请求时使用:
- 没有。每个 token 估计约为 3.3 角色,四舍五入到最接近的整数。 如果您的提示词在高上下文长度上被切断,请尝试此操作。 KoboldAI Lite 使用了这种方法。
- Llama 标记器。 Llama 1/2型号系列使用:Vicuna、Hermes、Airoboros等。 如果您使用 Llama 1/2 模型,请选择。
- Llama 3 分词器。由 Llama 3/3.1 型号使用。 如果您使用 Llama 3/3.1 型号,请选择此选项。
- NerdStash 标记器。由NovelAI 的Clio 模型使用。 如果您使用 Clio 模型,请选择。
- NerdStash v2 分词器。由NovelAI 的Kayra 模型使用。 如果您使用 Kayra 模型,请选择。
- Mistral V1 分词器。由较旧的 Mistral 模型系列及其微调使用。 如果您使用较旧的 Mistral 型号,请选择此选项。
- 米斯特拉尔尼莫分词器。由 Mistral Nemo 模型系列及其微调使用。 如果您使用 Mistral Nemo/Pixtral 模型,请选择此选项。
- 易分词器。彝族模型使用。 如果您使用 Yi 模型,请选择。
- Gemma 分词器。由 Gemini/Gemma 型号使用。 如果您使用 Gemma 模型,请选择。
- DeepSeek 分词器。由 DeepSeek 模型(例如 R1)使用。 如果您使用 DeepSeek 模型,请选择。
- API 标记器。查询生成 API 以直接从模型获取 token 计数。支持的已知后端:文本生成 WebUI (ooba)、koboldcpp、TabbyAPI、Aphrodite API。 选择是否使用受支持的后端。
聊天补全 API (不可覆盖):
- OpenAI:依赖于模型的分词器 抖音.
- Claude:依赖于模型的分词器 WebTokenizers.
- OpenRouter:Llama、Mistral、Gemma、Yi 各自模型的标记器。
- Google AI Studio:Gemma 分词器。
- AI21 API:Jamba 标记器(需要一次性下载)。
- Cohere API:Command-R 或 Command-A 分词器(需要一次性下载)。
- MistralAI API:Mistral V1 或 V3 分词器(需要一次性下载)。
- DeepSeek API:DeepSeek 分词器(需要一次性下载)。
- 后备分词器:GPT-3.5 Turbo 分词器。
额外的分词器
由于它们的大小,这些标记器不包含在默认安装中。第一次使用时需要一次性下载。
- Qwen2 分词器。
- Command-R / Command-A 分词器。由聊天补全中的 Cohere 源使用。
- Mistral V3 (Nemo) 分词器。由 MistralAI 源在聊天补全(Nemo 和 Pixtral 模型)中使用。
- DeepSeek(deepseek-chat)分词器。由聊天补全中的 DeepSeek 源使用。
如果您不想使用互联网下载,则 config.yaml 中存在选择退出选项: enableDownloadableTokenizers。设置为 false 禁用下载。
您还可以从以下位置手动下载分词器: SillyTavern-分词器 存储库。下载 JSON 文件并将其放入 _cache 数据根的子目录,路径是 ./data/_cache 默认情况下。创建 _cache 目录(如果不存在)。之后,重新启动 SillyTavern 服务器以重新初始化标记器。
如果所需的分词器模型未缓存且下载被禁用,则将使用后备分词器 (Llama 3) 进行计数。
令牌填充
适用于:文本补全 API
SillyTavern 将始终使用聊天补全模型的匹配标记器,因此不需要 token 填充。
除非 SillyTavern 使用运行模型的远程后端 API 提供的分词器,否则在提示词生成过程中假定的所有 token 计数都是根据所选的值进行估计的 分词器 类型。
由于在接近模型定义的最大值的上下文大小上标记化的结果可能不准确,因此提示词的某些部分可能会被修剪或删除,这可能会对角色定义的一致性产生负面影响。
为了防止这种情况,SillyTavern 分配上下文大小的一部分作为填充,以避免添加超出模型可容纳的聊天项目。如果您发现即使选择了最匹配的分词器,提示词的某些部分也会被修剪,请调整填充以使描述不会被截断。
您可以输入负值进行反向填充,这允许分配超过设置的最大数量的 token。