大语言模型 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 限制。
相关推荐
极客互动API16 小时前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
空堂与归16 小时前
token畅享?FreeToken单卡5090跑满血DeepSeek_V4Flash
人工智能·free token
AI码农小姐姐16 小时前
AI漫剧用什么软件制作?知漫剧小说导入成片教程
人工智能
ycjunhua16 小时前
Spring AI 2.0 GA:ToolCallingAdvisor 重构与 Java Agent 新范式
java·人工智能·spring
二川bro17 小时前
零门槛上手DeepSeek Harness,从零自制arxiv搜索插件
人工智能
cxr82817 小时前
数学的本质:关系、模式与不变量的结构世界
人工智能·算法·机器学习
东莞和裕包装17 小时前
如何管控广州定制纸箱生产中的啤切精度与印刷色差质量问题
大数据·运维·网络·人工智能
AIDANHANG17 小时前
放开靠时间戳对日志前先核请求ID跨服务传播与采样关联
前端·人工智能
牛肉胡辣汤17 小时前
手握实战经验,分享AI工程落地的踩坑与收获
人工智能
2601_9632827717 小时前
山地复杂环境对讲机通信失效实战排查与组网优化方案
人工智能·语音识别