大语言模型 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 限制。
相关推荐
阿木实验室11 小时前
AI融入硬件产品的思考和实战:LQ10图数传的AI智能配置
ai·无人机·图数传
ZPC821011 小时前
model bingxing
网络·人工智能·网络协议·机器人
柒和远方11 小时前
从等待到流式:LLM 流式输出的原理、协议与工程实践
javascript·llm
甲维斯11 小时前
Fable5手搓“美图秀秀”和“QQ截图”
人工智能
Dragon Wu11 小时前
ComfyUI SUPIR图片扩图插件集成报错解决
ai
xo1988201111 小时前
鸿蒙 AI 自动化开发:让 AI 学会自己编译、自己调试
人工智能·自动化·harmonyos
heroboyluck11 小时前
AI工程师第四课 - 深度学习入门
人工智能·python·深度学习·llama
武子康11 小时前
OpenAI 把 Codex 接进 Claude Code:Coding Agent 从单兵工具进入协作系统
人工智能·openai·claude
延凡科技11 小时前
延凡科技综合监控预警处置平台—— 一体化视频AI安防闭环系统设计与功能实现[特殊字符]️
数据库·人工智能·科技·安全·能源
王莎莎11 小时前
论文命中不是终点,Related Works 才是科研 Agent 的第二跳
人工智能·设计