词元是什么?Token 与字数、用量和上下文预算的关系
说明词元可能是字词片段或标点,用中文与代码输入解释计数差异,区分输入、输出和思考用量,并给出核算请求的方法。
先理解这个概念
词元Token是语言模型处理文本时使用的离散单位,可以对应一个字、一个词的一部分或标点等片段,取决于分词器。它不等于固定数量的中文字或英文单词。输入预算与生成用量常以词元计量,但模型和接口口径可能不同,核算时应使用目标模型的计数方式,并检查实际返回的用量信息。
同一文本在不同模型中可能计数不同
例如一段中文说明和一段相同字数的程序代码,不应默认占用相同词元。空格和大小写也可能改变切分。没有指定分词器时,说这份材料准确等于多少Token缺少前提,网上常见的字数估算只能用于粗略规划。
词元通常还会映射到模型词表中的编号,但编号不是跨模型通用的字典。一个编号在不同编码中可能含义不同。模型内部使用这些表示计算,不能把词元编号大小解释为词语重要程度或事实可信度。
请求用量不只是屏幕上的回答字数
完整请求可能包含角色标记和工具定义,资料文件也需要相应处理。只对用户输入的一句话计数,可能遗漏其他内容。OpenAI官方计数资料区分纯文本与完整请求,实际接入时应选择对应方法,再与服务返回的用量核对。
部分推理模型还会使用不作为最终答案展示的思考词元。短回答因此不一定意味着很少用量。缓存输入也有单独统计方式,不能把缓存命中理解为完全没有处理成本;具体计量与价格需按所用服务当前说明核查。
先估算再核对实际使用更容易排错
可以用目标模型计数工具检查一份代表性输入,再预留输出空间。若应用长期增加历史消息,计数也会随之改变。这里说明核算步骤,没有调用付费接口测量成本,也不给出所有语言通用的固定换算比例。
遇到超限错误时,应区分上下文容量、输出上限与每分钟速率限制。减少单次输入可能解决前者,却未必解决并发过高。记录完整请求的计数和停止原因,才能避免把三个不同问题都笼统归为Token不够。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。