#
分词器
分词器是一种将文本分解为称为令牌的较小单元的工具。这些令牌可以是单个单词,甚至是单词的一部分,例如前缀、后缀或标点符号。经验法则是,一个令牌通常对应于 3~4 个字符的文本。
SillyTavern 提供了一个"最佳匹配"选项,它尝试根据所使用的 API 提供商使用以下规则来匹配分词器。
文本补全 API (可覆盖):
- NovelAI Clio:NerdStash 分词器。
- NovelAI Kayra:NerdStash v2 分词器。
- 文本补全:API 分词器(如果支持)或 Llama 分词器。
- KoboldAI Classic / AI Horde:Llama 分词器。
- KoboldCpp:模型 API 分词器。
如果您得到不准确的结果或希望进行实验,可以为 SillyTavern 设置一个覆盖分词器,以便在向 AI 后端形成请求时使用:
- 无。每个令牌估计为 ~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 模型系列及其微调版本使用。如果您使用 Mistral Nemo/Pixtral 模型,请选择此项。
- Yi 分词器。由 Yi 模型使用。如果您使用 Yi 模型,请选择此项。
- Gemma 分词器。由 Gemini/Gemma 模型使用。如果您使用 Gemma 模型,请选择此项。
- DeepSeek 分词器。由 DeepSeek 模型(如 R1)使用。如果您使用 DeepSeek 模型,请选择此项。
- API 分词器。查询生成 API 以直接从模型获取令牌计数。已知支持的后端:文本生成 WebUI (ooba)、koboldcpp、TabbyAPI、Aphrodite API。如果您使用支持的后端,请选择此项。
聊天补全 API (不可覆盖):
- OpenAI:通过 tiktoken 的模型相关分词器。
- 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-Tokenizers 存储库手动下载分词器。下载 JSON 文件并将它们放在数据根目录的 _cache 子目录中,默认路径为 ./data/_cache。如果 _cache 目录不存在,请创建它。之后,重新启动 SillyTavern 服务器以重新初始化分词器。
如果所需的分词器模型未缓存且下载被禁用,将使用回退分词器(Llama 3)进行计数。
#
令牌填充
适用于:文本补全 API
SillyTavern 将始终为聊天补全模型使用匹配的分词器,因此不需要令牌填充。
除非 SillyTavern 使用运行模型的远程后端 API 提供的分词器,否则在提示生成期间假设的所有令牌计数都是基于所选的
由于在接近模型定义的最大上下文大小时,分词结果可能不准确,提示的某些部分可能会被修剪或删除,这可能会对角色定义的连贯性产生负面影响。
为防止这种情况,SillyTavern 分配一部分上下文大小作为填充,以避免添加比模型可容纳的更多的聊天项目。如果您发现即使选择了最匹配的分词器,提示的某些部分仍然被修剪,请调整填充以使描述不被截断。
您可以输入负值进行反向填充,这允许分配超过设置的最大令牌数量。