返回博客

成本优化深度解析

一次 API 请求用多少 token?在 3 个任务上实测

来自 DeepSeek-V4-Flash 的真实用量数字:一个简短问题、一段摘要和邮件转 JSON,包含 1,000 次请求的成本以及用于你自己提示词的脚本。

作者:CheapTokens Team发布于 更新于 5 分钟阅读

卡片显示 API 响应的 usage 字段:prompt_tokens 23,completion_tokens 87,total_tokens 110
本页内容
  1. 一个快速问题
  2. 一段摘要,以及你没读到的 token
  3. 输入一封邮件,输出干净的 JSON
  4. 三者并排
  5. 在你自己的提示词上试试
  6. 从哪里开始

问一次 AI API 请求要花多少钱,你通常会听到“看情况”。确实如此,但你没法据此做预算。于是我们选了三个日常任务,在 2026 年 10 月 23 日通过 CheapTokens API 发给 DeepSeek-V4-Flash,并记下每次 usage 字段显示的内容。

简而言之:一个快速问题用了 110 个 token,一段摘要用了 396 个,把一封邮件转成 JSON 用了 299 个。下面是每个请求的样子、返回的内容以及花费。

一个快速问题#

我们从人们常问聊天助手的问题开始:用两三句话说明 git merge 和 git rebase 的区别。

动画:一个关于 git merge 和 git rebase 的问题发给 DeepSeek-V4-Flash,出现三句话的回答,然后是用量行:23 个提示 token,87 个补全 token,共 110 个
2026 年 10 月 23 日的真实请求和回答

问题用了 23 个 token,回答用了 87 个。这是首先值得注意的:回复几乎比问题长四倍,而输出是更贵的一侧,目前在 MiniMax-M2.7 上每 1M 输出 token 为 $0.15,输入为 $0.05。按这些价格计算,这样一次请求花费 $0.000014。一千次则是 $0.0142。

如果你想在屏幕上亲自看看这些数字,这就是那个确切的请求:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "user", "content": "What is the difference between git merge and git rebase? Answer in two or three sentences."}
    ],
    "max_tokens": 2048,
    "temperature": 0.2
  }'

计数位于响应末尾的 usage 块中:prompt_tokens 是你发送的内容,completion_tokens 是模型写出的内容,total_tokens 是两者之和。

一段摘要,以及你没读到的 token#

第二个任务:把一份简短的事故报告浓缩成两句话。团队整天都在把这类东西交给模型处理:工单、报告、冗长的邮件线程。这是提示词:

text
Summarize this incident report in two sentences.

On Tuesday between 14:05 and 14:50 UTC the checkout API returned errors for about 6% of requests. The cause was a configuration change deployed at 13:58 that lowered the database connection pool from 50 to 5 connections per instance. Under normal load nobody noticed, but when the afternoon traffic peak arrived, requests queued for a free connection and timed out after 30 seconds. The on-call engineer saw the growing p99 latency at 14:12, found the change in the deploy log at 14:31 and rolled it back at 14:44. To prevent a repeat, the pool size is now validated in CI against a minimum value, and an alert fires when more than 20 requests wait for a connection for two minutes.

以及回答:

周二,一次将数据库连接池从 50 减少到 5 的配置变更导致下午高峰期间约 6% 的请求出现结账 API 错误,直到 14:44 回滚。为防止再次发生,现在在 CI 中验证连接池大小,并在连接等待时间超过阈值时触发警报。

两句话,331 个字符,146 个输出 token。对于这么少的文本来说似乎很多,而响应解释了原因:usage 多了一个字段 reasoning_tokens: 76。在回答之前,模型花了 76 个 token 进行思考。它们属于那 146 个(250 输入 + 146 输出 = 共 396 个),所以大约一半的输出用于不属于回答文本的推理,并且像任何其他输出 token 一样计费。

规划预算时值得知道:在模型停下来思考的任务上,输出可能明显大于你得到的文本。一千段这样的摘要花费 $0.0344。

输入一封邮件,输出干净的 JSON#

第三个任务:一封需要变成数据库记录的订单确认邮件。

动画:左边是一封订单邮件,右边是 DeepSeek-V4-Flash 从中提取的 JSON:订单 ID、商品、价格、运费、总计、承运商、追踪号和送达日期;用量:199 个提示 token 和 100 个补全 token
我们发送的邮件和返回的 JSON,为便于阅读已格式化

模型准确返回了我们要求的键,周围没有任何多余内容,没有“这是你的 JSON”。总计与邮件一致,送达日期返回为 2026-11-03,已经是我们要求的格式。输入 199 个 token,输出 100 个。

突出的是密度:276 个字符的 JSON 用了 100 个 token,而 git 回答用 87 个 token 处理了 421 个字符的纯文本。引号、花括号和逗号也是 token,所以结构化输出每字符的成本高于散文。一千封这样的邮件:$0.025。

三者并排#

任务 输入 token 输出 token 1,000 次请求
快速问题 23 87 $0.0142
摘要 250 146 $0.0344
邮件转 JSON 199 100 $0.025

成本是根据这些 token 计数按当前 MiniMax-M2.7 价格计算的,所以价格变化时它们仍然正确。

1,000 次请求中钱花在哪里:输入 vs 输出
  • 摘要:输出$0.0219
  • 邮件转 JSON:输出$0.015
  • 快速问题:输出$0.0131
  • 摘要:输入$0.0125
  • 邮件转 JSON:输入$0.01
  • 快速问题:输入$0.0012

输出在每个任务中都胜出,甚至包括我们发送的比收到的多的摘要。所以影响账单最简单的杠杆是回答的长度:“用两三句话”或“只返回 JSON”确实起作用。

作为规模参考:一个每天回答 2,000 个快速问题(每个都像第一个)的支持机器人,在 MiniMax-M2.7 上每月花费约 $0.852。真实聊天每轮都会重新发送其历史记录,所以输入随每条消息增长,但对于一次性问题,这就是全部账单。

在你自己的提示词上试试#

你的提示词会得到不同的数字,花一分钟就能知道。这个脚本发送每个提示词,跳过被截断的回答,并打印 token 数和 1,000 次请求的成本:

python
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.cheaptokens.dev/v1", api_key=os.environ["CHEAPTOKENS_API_KEY"])

MODEL = "MiniMaxAI/MiniMax-M2.7"
PRICE_IN, PRICE_OUT = 1.00, 4.00  # USD per 1M tokens: example values, use the current ones from the price list

PROMPTS = [
    "What is the difference between git merge and git rebase? Answer in two or three sentences.",
    # add your own prompts here
]

for prompt in PROMPTS:
    r = client.chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": prompt}],
        max_tokens=2048,
        temperature=0.2,
    )
    if r.choices[0].finish_reason != "stop":
        print("cut off at max_tokens, raise the limit:", prompt[:40])
        continue
    tin, tout = r.usage.prompt_tokens, r.usage.completion_tokens
    per_1000 = (tin * PRICE_IN + tout * PRICE_OUT) * 1000 / 1_000_000
    print(f"{tin} in, {tout} out, 1,000 requests = ${per_1000:.4f} | {prompt[:40]}")

把当前价格填入 PRICE_IN 和 PRICE_OUT:对于 MiniMax-M2.7,每 1M 输入 token 为 $0.05,每 1M 输出 token 为 $0.15。第一个提示词是我们测试中的那个;不同模型之间的 token 计数略有差异,所以预期数字与 23 输入和 87 输出处于同一范围。你需要 openai 包(pip install openai)以及 CHEAPTOKENS_API_KEY 中的密钥。

如果某个数字看起来奇怪:finish_reason: length 表示回答达到了 max_tokens(为什么回答会中途停止);较大的 reasoning_tokens 解释了输出大于文本的原因;输入和输出价格的完整公式在输入 vs 输出 token中。

从哪里开始#

总的来说,将输入和输出合计,CheapTokens 上的 MiniMax-M2.7 在上述三个任务上都比 OpenRouter 的参考价格便宜。它有 180K 上下文、最多 8,192 个 token 的回答,并且任何时段价格相同。充值余额、创建密钥,并发送本页顶部的 curl 请求:文档涵盖密钥和基础 URL,DeepSeek 页面有模型目录,定价有实时价格表。