Token 是什么?

Token 是模型处理内容时使用的计量单位。对文本模型,它通常对应一段文本经过分词后的片段;对支持图片、音频、视频或文件的多模态模型,媒体也会被转换为模型内部的计费表示。Token 数量不是字符数,也不是请求体的字节数,同一段内容在不同模型上的 Token 数量可能不同。

Token 是用量单位,不等于金额。费用还取决于模型、计费项单价、协议支持的字段以及是否使用缓存等因素。预估值只能用于预算,最终应以响应 usage、请求日志和账单明细核对。

一次调用包含哪些 Token?

Token 来源说明
用户输入用户提交的问题、指令、文档片段等
系统提示词定义模型角色、输出格式和业务规则的内容
历史上下文多轮对话中为保持上下文而携带的历史消息
工具说明与参数Agent、插件或函数调用场景中的工具定义和调用参数
模型输出模型生成的回答、代码、摘要和结构化结果

图片、音频、视频和文件也可能产生输入用量,但具体的计费单位和返回字段由目标模型决定。不要因为请求中包含一个文件,就直接把文件大小换算成 Token;文件大小、媒体时长与模型计费 Token 之间通常不是线性关系。

输入 Token 和输出 Token

大模型计费通常会区分输入 Token 和输出 Token:

计费项说明
输入 Token模型读取和处理的内容,包括用户输入、历史上下文、系统提示词、工具说明和部分媒体输入
输出 Token模型生成的文本或结构化内容;部分生图模型也可能把图片输出折算为输出 Token

不同模型的输入、输出单价可能不同,部分推理模型还会返回思考或推理相关用量。不能假设输出一定比输入贵,也不能假设所有模型都会返回相同的字段;以具体模型的价格项和响应格式为准。

预估用量和实际用量

请求发送前可以根据文本长度、历史消息和媒体参数估算成本,但预估不一定等于最终用量:

  • 模型可能对图片、音频、视频使用专门的媒体 Token 规则。
  • 多轮对话通常会重复发送历史消息,每一轮的输入用量都会重新计算,除非命中缓存或由服务端提供其他复用机制。
  • 实际输出取决于模型何时结束生成,max_tokens 只是上限。
  • Agent 可能在一次用户操作中发起多次模型请求,业务侧应按请求总量核算。

对账时优先查看以下字段(字段名会随协议不同而变化):

输入:input_tokens 或 prompt_tokens
输出:output_tokens 或 completion_tokens
总量:total_tokens
缓存:input_tokens_details.cached_tokens 或 prompt_tokens_details.cached_tokens

如果响应没有提供某个字段,不要用字符数、文件大小或请求次数自行替代;应查看该模型的接口说明或账单明细。

为什么同样的问题费用不同?

不同模型在能力、上下文长度、推理效果、响应速度和资源消耗上存在差异,因此价格也可能不同。可以根据任务复杂度选择模型:

任务类型推荐策略
简单分类、标签判断、格式转换优先使用低成本模型
常规问答、摘要、改写使用通用模型,平衡效果与成本
复杂推理、代码生成使用高性能模型,保证结果质量
长文档分析使用支持长上下文的模型,并控制输入范围
图片、视频、音频理解限制媒体数量、时长、分辨率、FPS 或分析区间
图片、视频生成根据输出尺寸、质量、时长和数量选择模型与档位
批量任务优先控制上下文、媒体参数、输出长度和并发重试

如何减少不必要的 Token?

  • 缩短无关上下文:不要默认携带完整历史对话或整篇文档,只传入与问题相关的内容。
  • 控制输出长度:通过提示词或 API 参数限制最大输出 Token,例如要求“用 5 条要点回答”或“控制在 300 字以内”。
  • 精简系统提示词:删除重复规则、低频示例和无关说明,减少每次调用携带的固定内容。
  • 按任务选择模型:简单任务使用低成本模型,复杂任务再切换到高能力模型。
  • 减少媒体输入:先裁剪视频区间、降低不必要的 FPS 或分辨率,图片先压缩到任务需要的清晰度。
  • 区分请求次数和执行次数:把 Agent 的子请求、失败重试和异步任务都纳入成本统计。
  • 定期查看用量明细:按 API Key、模型和时间维度查看消耗,定位主要成本来源。

小结

影响费用的不只是用户输入了多少字,还包括系统提示词、历史上下文、工具调用、模型输出长度和模型单价。建立 Token 意识后,可以更有针对性地优化提示词、模型选择和调用链路。