大语言模型 API Token 消耗深度剖析

大语言模型 API Token 消耗深度剖析

在调用大语言模型(LLM)API 时,Token 统计不仅是计费的唯一依据,更是评估模型推理深度、响应延迟及上下文窗口管理的关键指标。本文旨在通过源码解析,帮助开发者彻底理解 Token 的消耗逻辑。


一、 数据结构源码定义

以下是基于主流 API(如 OpenAI 协议)的底层类定义,展示了 Token 消耗的层级结构:

python 复制代码
from typing import Optional
from pydantic import BaseModel

class PromptTokensDetails(BaseModel):
    """输入 token(Prompt)的详细组成"""
    audio_tokens: Optional[int] = None    # 提示词中的音频输入 token 数
    cached_tokens: Optional[int] = None   # 提示词中命中缓存的 token 数

class CompletionTokensDetails(BaseModel):
    """输出 token(Completion)的详细组成"""
    accepted_prediction_tokens: Optional[int] = None  # 预测内容被模型采纳的 token 数
    audio_tokens: Optional[int] = None                # 模型生成的音频输出 token 数
    reasoning_tokens: Optional[int] = None            # 模型生成的推理/思考 token 数
    rejected_prediction_tokens: Optional[int] = None  # 未被采纳的预测 Token 数

class CompletionUsage(BaseModel):
    """单次请求的完整用量统计"""
    prompt_tokens: int              # 输入总 token 数
    completion_tokens: int          # 输出总 token 数
    total_tokens: int               # 总计消耗 (Prompt + Completion)
    
    prompt_tokens_details: Optional[PromptTokensDetails] = None
    completion_tokens_details: Optional[CompletionTokensDetails] = None

二、 Prompt 消耗组成 (输入端)

prompt_tokens 代表模型在生成第一个字符前必须"阅读"的信息总量。在 RAG(检索增强生成)场景中,这部分的成本控制至关重要。

Prompt 构成详表

组成部分 对应源码字段 物理意义 计费与性能影响
缓存 token cached_tokens 复用了之前请求中已处理过并存储在服务器缓存中的内容。 核心优化点。通常有显著价格折扣,且能极大提升首字响应速度 (TTFT)。
音频 token audio_tokens 输入中包含的语音数据、音频采样转换而来的等效 token。 适用于多模态原生语音交互。
常规输入 (隐式计算) 包含 System Prompt、历史上下文、用户当前提问等。 按标准输入单价全额计费。

三、 Completion 消耗组成 (输出端)

completion_tokens 反映了模型的"思考成本"和"表达成本"。现代高性能模型(如 DeepSeek-R1, GPT-4o)的输出 Token 由多部分组成,即使最终看到的文字很少,产生的 Token 也可能非常多。

Completion 构成详表

组成部分 对应源码字段 物理意义 是否在最终答案中可见
推理 token reasoning_tokens 模型在给出答案前进行的逻辑推演、思维链(CoT)内容。 通常不可见(后台运行)
已接受预测 accepted_prediction_tokens 预测输出(Predicted Outputs)技术中模型猜对并采纳的 token。 可见
被拒绝预测 rejected_prediction_tokens 预测输出中猜错的部分。虽未采纳,但已产生计算消耗。 不可见
音频 token audio_tokens 模型直接生成的语音数据转换而来的等效 token。 以声音形式输出
标准文本 (隐式计算) 模型根据推理结果输出的最终文字答案。 可见

四、 核心逻辑总结

1. 计算公式

  • 总消耗公式
    total_tokens = prompt_tokens + completion_tokens
  • 输入细分公式
    prompt_tokens = cached_tokens + audio_tokens + text
  • 输出细分公式
    completion_tokens = reasoning + accepted_pred + rejected_pred + audio + text

2. 开发者调优建议

  • 警惕推理陷阱 :在处理复杂逻辑时,reasoning_tokens 消耗极快。对于不需要深度逻辑的任务,建议降级使用非推理模型以节省开支。
  • 利用缓存优化 :在 RAG 架构中,尽量保持 Prompt 头部(如大型知识库或 System Prompt)稳定,以提高 cached_tokens 命中率,从而降低 50%-90% 的输入成本。
  • 窗口溢出风险 :请记住,无论是隐藏的"推理 token"还是被丢弃的"预测 token",都会占用模型的上下文窗口总上限 。如果任务中断,请检查是否因推理过长导致触发 length 限制。
相关推荐
江畔柳前堤4 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
阿里云大数据AI技术4 小时前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客4 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
阿里云大数据AI技术5 小时前
从算力到智能体,面向 Agentic AI 的基础设施演进
人工智能·agent
hangyuekejiGEO5 小时前
GEO技术服务选型指南
大数据·人工智能·python
阿里云大数据AI技术6 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
维基框架6 小时前
GitHub源码处理提速 一趟扫描反而更慢
人工智能·github
冬奇Lab6 小时前
代码库知识库系列(05):向量检索 vs 知识图谱——加了调用图并没有变更好
人工智能
AKAMAI6 小时前
你的源服务器可能是你做出的最昂贵决定
运维·人工智能·云计算
冬奇Lab6 小时前
【无标题】
人工智能·开源