token 是什么?
token 是模型读写文字的最小单位,可以理解为“字词碎片”。英文里一个 token 大约是几个字母;中文、代码和各种符号的切法不同,不同模型的分词方式也不同,同样意思的中文通常比英文用的 token 多一些。所以别靠字数估算,实际数字以每次调用返回的 usage 和控制台 用量 为准。
输入 token 和输出 token 有什么区别?
- 输入 token:你发给模型的所有东西,包括系统提示、你的问题、之前的对话历史、上传的文件、编程工具读进来的代码。
- 输出 token:模型写回来的内容。输出单价通常比输入单价高好几倍。
所以“问题很短但贴了一大段代码”,花的主要是输入;“让它写一篇长文”,花的主要是输出。
计费公式和示例
单次费用 = 输入 token ÷ 1,000,000 × 输入单价 + 输出 token ÷ 1,000,000 × 输出单价
下面用整数举例(示例数字,不是真实价格):假设某模型输入 10 元、输出 50 元每 100 万 token,一次调用输入 4,000 token、输出 1,000 token。
| 部分 | 算法 | 费用 |
|---|---|---|
| 输入 | 4,000 ÷ 1,000,000 × 10 元 | 0.04 元 |
| 输出 | 1,000 ÷ 1,000,000 × 50 元 | 0.05 元 |
| 单次合计 | 0.09 元 | |
| 一天这样调用 500 次 | 45 元 |
真实单价看下表(人民币,每 100 万 token),代入公式就能估算:
现在的真实价格
按模型页上的价格估算:每次对话 2,000 个输入 token、500 个输出 token。实际扣费以控制台为准。
| 模型 | 每次对话 | 1,000 次对话 |
|---|---|---|
| GEM 3.8 Flash | ¥0.0016 | ¥1.63 |
| TT-6 Luna | ¥0.0039 | ¥3.92 |
| TT-6.1 Terra | ¥0.0027 | ¥2.67 |
| HK-5.5 | ¥0.0013 | ¥1.28 |
| GEM 4 Argon | ¥0.03 | ¥31.14 |
| TT-6.1 Sol | ¥0.0053 | ¥5.34 |
为什么对话越长越贵?
模型本身不记得之前聊过什么。每发一条新消息,客户端都要把整段历史一起再发一次,这些历史全部算输入 token。第 1 轮可能只有几百 token 输入,聊到第 30 轮,哪怕你只问“那这个呢?”,输入也可能已经上万 token。
所以换话题就开新对话,比在一个对话里一直聊便宜得多。
Claude Code 为什么特别费 token?
Claude Code、Cline 这类编程代理完成一个任务要来回很多步:读文件、想方案、改代码、跑测试、看报错、再改。每一步都是一次 API 调用,每次都带上系统提示、工具定义、已读过的文件和前面所有步骤的结果。一个“帮我修这个 bug”的任务,背后可能是几十次调用,每次输入几万 token。
- 一个任务结束就
/clear,别让旧任务的上下文跟着下一个任务一起发。 - 对话变长时用
/compact压缩历史。 - 在提示里直接指出相关文件和函数,减少它“到处翻”的步骤。
- 写一份简短的
CLAUDE.md说明项目结构,比让它每次自己探索省。 - 简单任务换便宜的模型,见 Claude、GPT、Gemini、DeepSeek 怎么选。
怎么查自己花了多少?
- 登录 控制台,概览页能看到当前余额。
- 点左侧 用量,列表是最近 50 次调用,每条有模型名、输入 token、输出 token 和这次的费用。
- 按时间对照你刚才做的事,找出最贵的那几次,看是输入多还是输出多。
- 输入多就精简上下文、开新对话;输出多就在提示里要求简短,或者设
max_tokens上限。
用量页位置:控制台左侧菜单 用量。同一个账号建了多个 Key(比如 Claude Code 一个、Cursor 一个)的,对照调用时间就能看出哪个工具花得多。
代码里怎么拿到 token 数?
每次调用的返回里都带 usage 字段,可以自己记日志或做预算控制:
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.macloudai.com/v1", api_key=os.environ["MACLOUD_API_KEY"])
r = client.chat.completions.create(
model="gem-3.8-flash",
messages=[{"role": "user", "content": "用一句话解释什么是 token"}],
max_tokens=200,
)
print(r.choices[0].message.content)
print("输入 token:", r.usage.prompt_tokens, "输出 token:", r.usage.completion_tokens)
把 token 数代入上面的公式和模型页单价,就能算出这次花了多少。完整接口说明见 接入文档。