SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor

ChatGPT API 与 Plus 订阅:中文用户哪边更省钱

订阅买的是 ChatGPT 应用和它的配额,API 买的是 token。把每月用量代入单价算一遍,你就知道 20 美元该交给哪一边,以及中文为什么让分界线更早到来。

ChatGPT API 和 Plus 订阅,买的不是同一件东西

比较 ChatGPT API 和 Plus 订阅的成本,第一步是分清两边卖的是什么。订阅买的是 ChatGPT 这个应用:网页版、手机端、记忆、联网搜索、Deep Research、Agent 模式,外加一份按时间窗口计算的消息配额。API 买的是 token,调一次付一次钱,既不含网页版,也不含订阅里的任何配额。两边可以用同一个邮箱登录,钱包是分开的。

所以「哪个更便宜」这句话本身问不出答案。你得先说清楚每月拿它做什么,答案才唯一。下面把那道算术写出来,你把自己的数字代进去就行。

关于本文的数字:API 单价取自 OpenAI 官方定价页,2026 年 9 月 28 日查得。该页面本身不标注更新日期,所以下单前请再看一眼。订阅价格随地区和方案变动,官网的订阅页要登录才显示你所在市场的报价,文中的每月 20 美元只是常见档位的举例,以你账户结算页显示的金额为准。

把问题变成一道算术

公式只有一行:月成本 = 月输入 token 数 × 输入单价 + 月输出 token 数 × 输出单价。单价按每百万 token 报价,所以代入时记得除以一百万。命中缓存的输入按另一档更低的单价计,这一项后面单独讲。

ChartOpenAI 文本模型单价(每百万 token,美元,2026-09-28 查自官方定价页)
The data behind this chart
[
  {
    "label": "gpt-5.6-luna",
    "input_usd": "0.20",
    "cached_input_usd": "0.02",
    "output_usd": "1.20"
  },
  {
    "label": "gpt-5-mini",
    "input_usd": "0.25",
    "cached_input_usd": "0.025",
    "output_usd": "2.00"
  },
  {
    "label": "gpt-5",
    "input_usd": "1.25",
    "cached_input_usd": "0.125",
    "output_usd": "10.00"
  },
  {
    "label": "gpt-5.6-sol",
    "input_usd": "4.00",
    "cached_input_usd": "0.40",
    "output_usd": "20.00"
  }
]

这 4 个型号覆盖了大多数人的选择区间。最便宜的 gpt-5.6-luna 输入 0.20 美元、输出 1.20 美元;旗舰的 gpt-5.6-sol 输入 4.00 美元、输出 20.00 美元。两端差了一个数量级以上。

注意每一行里输出都比输入贵,而且贵好几倍。原因是这两件事的算法代价不同:输入可以一次性并行处理完,输出必须一个 token 一个 token 地生成,前一个不出来后一个就算不出来。这个结构不是 OpenAI 独有的,输入与输出 token 的价差 在 Claude 那边同样存在,也同样决定了你该优化哪一头。想压账单,先压输出长度,而不是先压上下文。

另外 gpt-5.6-sol 的这档价格在页面上标注为促销价,官方写明「至少持续到 2026 年 11 月 21 日」。做长期预算时,别把促销价当成固定成本。

一轮中文对话到底花多少钱

先定义一轮:你发一段话,模型回一段。加上系统提示和前面几轮累积的上下文,一轮的输入通常落在 1500 token 上下,输出 700 token 左右。这是估算口径,不是测量结果,你的真实数字要从 API 返回的 usage 字段里读。口径不同,下面的结论会整体平移,但相对关系不变。

Chart按每轮 1500 输入 token + 700 输出 token 估算(美元)
The data behind this chart
[
  {
    "label": "gpt-5.6-luna",
    "per_1k_turns_usd": "1.14",
    "turns_per_20_usd": "17,500"
  },
  {
    "label": "gpt-5-mini",
    "per_1k_turns_usd": "1.78",
    "turns_per_20_usd": "11,300"
  },
  {
    "label": "gpt-5",
    "per_1k_turns_usd": "8.88",
    "turns_per_20_usd": "2,250"
  },
  {
    "label": "gpt-5.6-sol",
    "per_1k_turns_usd": "20.00",
    "turns_per_20_usd": "1,000"
  }
]

一千轮对话在 gpt-5.6-luna 上花 1.14 美元,在 gpt-5 上花 8.88 美元。换个说法更直观:同样是 20 美元,用 luna 能聊 17,500 轮,用 gpt-5 能聊 2,250 轮,用 sol 只剩 1,000 轮。

这就是分界线。你每月的对话轮数低于这个数,API 更便宜;高于这个数,订阅更便宜。但真实的分界线比算术结果更偏向订阅,因为那 20 美元还附带网页版、文件上传、语音、联网这些 API 根本不卖的东西。要把 API 做成一个能用的聊天界面,你得自己写前端、自己存历史、自己做文件解析,这部分工时不在表里。

中文比英文更费 token,分界线因此更早到来

模型不按字数计费,按 token 计费。英文里一个 token 大致相当于四个字符;中文通常一个 token 只对应一到两个汉字。表达同样的意思,中文的 token 数一般明显高于英文,账单也就更高。结果是上面那条分界线,对中文用户来说会更早到达:你比英文用户更快用完同样的额度。

不要凭感觉估,量一下:

pip install tiktoken
import tiktoken

enc = tiktoken.get_encoding("o200k_base")
text = "把你真实的提示词原样贴进来,包括系统提示和历史消息"
print(len(enc.encode(text)))

用 get_encoding("o200k_base") 而不是 encoding_for_model("gpt-5.6-sol"),因为后者依赖库内的型号映射表,遇到很新的型号名会抛出 KeyError: 'gpt-5.6-sol',而这只说明你的 tiktoken 版本旧,不说明型号不存在。

更准的办法是不估算。每次调用的响应里都带 usage,直接读:

curl https://api.openai.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-5.6-luna", "input": "用一句话解释什么是反向代理"}' \
  | jq '.usage'

正常情况下你会看到 input_tokens、output_tokens,以及嵌在 input_tokens_details 里的 cached_tokens。把这三个数乘上表里的单价,就是这一次调用的真实成本。如果 jq 报 null,先把 | jq '.usage' 去掉看完整响应,多半是 key 无效或型号名写错,错误信息就在 body 里。

小模型、提示缓存和批量,能把 API 这边压到什么程度

有三件事会直接改写上面的表格,而且都是 API 独有的,订阅那边没有对应物。

第一是换小模型。同一个任务在 gpt-5.6-luna 和 gpt-5.6-sol 上的成本差一个数量级以上。分类、抽取、格式转换、改写这类任务,小模型通常够用。建议先用小模型跑通,确认效果不达标再往上换,反过来做的人会为调试阶段的每一次试错付旗舰价。要横向比一比别家的同档报价,把 Claude 和 ChatGPT 的 API 单价摆在一起 会更清楚哪一档真的便宜。

第二是提示缓存。命中缓存的输入,sol 只按 0.40 美元计,约为普通输入价的十分之一。2026 年 9 月的官方规则是:提示至少 1024 token 才可能命中(GPT-5.6 及之后的型号);匹配方式是前缀匹配;GPT-5.6 及之后缓存存活 30 分钟,且 30 分钟是唯一可选值;默认开启,不需要申请。响应里的 input_tokens_details.cached_tokens 告诉你命中了多少。

如果这个字段一直是 0,最常见的两个原因是:提示不足 1024 token,压根没资格进缓存;或者你把时间戳、会话 ID、当前时间这类每次都变的内容放在了提示最前面。前缀匹配意味着开头变一个字符,后面整段全部失效。固定内容放前面,变动内容放后面,这一条改完账单就会动。

第三是 Batch API。把请求写成 .jsonl,一行一个请求提交,价格是同步调用的 50%,官方承诺 24 小时内完成,单个批次最多 50,000 个请求,输入文件不超过 200 MB。代价是拿不到实时响应,所以它只适合离线任务:批量翻译、批量分类、跑评测集。交互式聊天用不上。

把这三件事叠起来,一个脚本化的中文处理任务,成本可以压到你第一次按旗舰型号估算出来的几十分之一。

预充值会过期,订阅按月扣:现金流不一样

订阅是每月扣一次,不想用就停,停了就不扣。API 这边多数个人开发者走预充值:先买额度,用完再买。这里有一条容易吃亏的规则:购买的额度自购买之日起一年后过期,OpenAI 明确表示不能延长过期时间。为了「省事」一次充一大笔,等于给自己制造沉没成本。

实际做法是按一两个月的用量充值,开自动充值,把单次充值金额设小、触发阈值设低。这样余额永远够用,又不会有一大笔钱躺在账上等着过期。

还有一点对小团队重要:预充值是先付钱后用服务,订阅是月初付一整月,哪怕这个月只用了三次。要报销、要发票、要走预算审批的团队,这决定了你该走哪条流程,而不只是哪个便宜。这道题换成 Claude 也是同一道,Claude 的订阅与 API 成本对照 里的算法可以照搬过来,只需要换掉单价。

什么时候选订阅,什么时候选 API

按使用形态分,比按价格分准得多。

  1. 你每天坐在对话框前面,一边聊一边改,用到文件上传、联网、语音、Deep Research:选订阅。这些是应用层能力,API 不卖,你自己复刻它们的工时远超差价。
  2. 你的用量是脚本化或突发性的,比如每周跑一次批量翻译,或者把模型接进自己的服务:选 API。订阅的配额也不允许给程序用。
  3. 你在评估效果,要跑几百条对比:选 API,配 Batch,成本可能只是一个月订阅的零头。
  4. 团队里好几个人每天都在用:先按人头算订阅,再挑出那些其实是脚本在跑的用量,单独搬到 API 上去。两边同时开不是骑墙,人和程序本来就是两类用户。

如果你还在多家订阅之间摇摆,各家订阅档位的逐项对照 比单看价格更有用,因为同样的月费买到的配额和能力差别很大。

两边都按美元计价,人民币金额怎么算

订阅和 API 都以美元标价、以美元结算。你看到的人民币金额由发卡行的当日汇率决定,多数银行还会加收一笔跨境交易手续费,所以同一笔 20 美元,不同的卡扣出来的人民币并不一样。

这不是 OpenAI 的定价问题,是你的支付通道问题。外卡与银联的受理情况、是否需要 3-D Secure 验证、发票和税号怎么填、能不能对公付款,这几件事要按你自己的渠道逐个确认。本文不给人民币报价,因为任何写死的汇率第二天就是错的,而一个过期的汇率比没有汇率更容易让人算错预算。

怎么盯住账单不失控

订阅的成本上限是确定的:每月一笔,封顶。API 没有天然上限,一个死循环就能在一夜之间把额度跑光。四条动作,做完这四条你才敢把 key 交给程序。

  1. 在组织设置里设月度预算上限和提醒阈值。超过上限后请求会被拒绝,这是唯一的硬刹车。
  2. 每个用途开一把独立的 API key,分到不同的 project。账单按 project 拆开看,你才知道钱花在哪个功能上。
  3. 把每次调用返回的 usage 写进日志。月底和官方账单对不上时,这是你唯一的证据。
  4. 给每个请求设上限。控制住输出长度,就控制住了账单里最贵的那一半。

最后回到开头那句话:订阅和 API 是两个产品,不是一个产品的两种付款方式。先确定自己做什么,再算这道题,数字会自己给出答案。

FAQ

ChatGPT Plus 的订阅额度能用在 API 上吗?

不能。订阅和 API 是两套独立计费。Plus 的消息配额只在 ChatGPT 应用里有效,任何 API 调用都从你的 API 额度里扣,即使两边用同一个邮箱登录。反过来也一样,充了 API 额度不会让网页版多发一条消息。你想同时用好这两边,就得同时付两笔钱。

每月 20 美元的订阅,换成 API 大概能聊多少轮?

按一轮 1500 输入 token、700 输出 token 估算:gpt-5.6-luna 约 17,500 轮,gpt-5 约 2,250 轮,gpt-5.6-sol 约 1,000 轮。单价为 2026 年 9 月 28 日查自官方定价页。这个对比只算 token 钱,不含网页版、文件上传、联网这些 API 不提供的能力,所以实际决策时分界线要再往订阅那边挪一些。

中文对话是不是比英文更费钱?

是。计费单位是 token 不是字数,英文一个 token 大致四个字符,中文常常一个 token 只对应一到两个汉字,同样意思的一段话中文 token 数更高。用 tiktoken 的 o200k_base 编码把你真实的提示词数一遍,就能看到具体差多少。结论是中文用户比英文用户更早触到「订阅更划算」的那条线。

OpenAI 的 API 预充值额度会过期吗?

会。购买的额度自购买之日起一年后过期,官方说明中写明不能延长过期时间。促销额度、免费赠送额度和企业协议额度的期限可能不同,要在组织账单页里看每一笔额度自己的说明。实际做法是按一两个月用量充值并开启自动充值,不要为了省事一次充一大笔。

提示缓存为什么一直没有生效?

响应里的 input_tokens_details.cached_tokens 长期为 0,通常是两个原因。一是提示不足 1024 token(GPT-5.6 及之后型号的门槛),没有资格进缓存。二是你把时间戳、会话 ID 或当前时间放在了提示开头,而缓存按前缀匹配,开头变一个字符后面整段就全部失效。把固定内容移到最前面,变动内容放到末尾,再看这个字段。