Yady API
「你和 AI 每多聊一句,账单就翻倍涨」——无状态 API 把完整对话历史重发一遍,成本随轮次平方级暴涨

「你和 AI 每多聊一句,账单就翻倍涨」——无状态 API 把完整对话历史重发一遍,成本随轮次平方级暴涨

次阅读

浏览、点赞、踩均为真实统计:同一访客对同一篇文章每天只计一次浏览,点赞与踩一人一票,可改票也可撤回。

← 返回技术博客

一个几乎所有 API 调用方都忽略、却悄悄吃掉预算的成本暗线:你和 AI 多聊一句,账单就不止多涨一点——它可能是翻倍涨。

配图 1
配图 1

原因藏在「无状态」三个字里。绝大多数聊天接口本身不记得上一句说了什么,于是你的应用只能每一轮都把整段对话历史,原样重发一遍。轮次越多,重发的量越大;而成本,就这么随轮次平方级滚了起来。

一、你的对话在「滚雪球」:每多聊一句,成本就指数级往上翻

先建立一个直觉。假设一轮对话平均 500 token,你的应用老老实实把历史全带上:

  • 第 1 轮:发出去 500 token;
  • 第 10 轮:前面 9 轮的历史 + 本轮,发出去约 5,000 token(是第 1 轮的 10 倍);
  • 第 20 轮:发出去约 10,000 token(公开实测里,第 20 轮的成本常是第 1 轮的 12 倍);
  • 第 50 轮:发出去约 25,000 token(是第 1 轮的 50 倍,有评测观察到甚至接近 400 倍的量级)。

注意一个反直觉的点:你这轮真正「新说」的话,可能始终只有 500 token。但账单按「发出去的总数」算——历史被反复重发、反复计费。这就是业内说的 context window bloat(上下文膨胀):对话越长,单轮成本越高,而且不是线性,是平方级往上翻

更扎心的是:这种涨法跟你换不换更便宜的模型无关。单价再降,只要历史照发不误,总账单照样失控。

二、为什么会涨这么凶?三道「历史税」叠在一起

把暴涨拆开看,其实是三道税叠在一起:

  • 重发历史税(最重的一道):无状态接口不存记忆,应用端被迫每轮回传完整上下文。这是平方级成本的源头。
  • 输入输出分别计价税:输出 token 单价通常是输入的 2–5 倍。对话越长,模型「接话」生成的输出也越长,贵的部分被放大。
  • 长上下文跳价税:不少模型对超长输入有「长上下文溢价」——比如超过某个阈值后,输入单价直接翻倍。对话滚到后期,恰好撞上这条线。

三条叠起来,一个 50 轮的客服对话,真实账单可能比「只算本轮新内容」高出 几十倍到上百倍。更麻烦的是:这笔钱不是上游或中转站「多收」的,是你的应用自己把历史一遍遍发出来、被如实计费的。

诚实边界先讲在前面:中转站按「你实际发来的 token 数」计费,它看不见、也拆不开你消息里「哪些是历史、哪些是本轮新话」。历史重发是应用层的事,不是中转站能替你解决的。 但中转站能帮你做两件关键的事——看清它、卡住它。

三、中转站帮不上这个忙,但能帮你「看清 + 卡住」

既然问题在应用层,中转站能做的不是「自动帮你压缩历史」(那会改你的业务语义),而是给你可见性护栏

  • 逐笔明细可归因:每一次调用都留一行账——时间、模型、输入 token、输出 token、request_id、单价、金额。你一眼就能看出「第几轮 token 数突然翻倍」,把暴涨点精准定位到具体一次调用,而不是面对一张看不懂的总账单。
  • 固定 1.27× 倍率:单价可预期,暴涨的是你的用量、不是我们的单价。你不会被「峰谷 + 分词器 + 长上下文」多重变量糊里糊涂叠加,至少单价这条线是钉死的。
  • 按密钥额度上限 / 环境隔离:给测试环境、某个 Agent 设一个硬顶。对话万一陷入死循环无限滚雪球,到顶就停,不会一觉醒来烧穿整月预算(New API 原生能力,按 key 配额度)。
  • 阶梯充值折扣:用量越大折扣越多,但前提是你要先「把用量控制在合理区间」,折扣才补得回浪费。

一句话:中转站不替你压缩历史,但让你看得见暴涨、也卡得住失控。

四、四步把对话成本砍掉 50%–90%

真正省钱在应用层,这里给四步可落地的收敛动作:

  • 第一步:别无脑重发全量历史。上「滑动窗口」或「摘要压缩」。 只保留最近 N 轮 + 一段阶段性摘要,而不是把整段聊天原样回传。实测能把上下文量砍掉一大半。
  • 第二步:开 prompt caching(提示缓存)。 把不变的系统提示、长文档、固定背景放进缓存区,命中缓存的输入单价能打到 1–2 折。这是「历史里不变的部分」最该去的地方。
  • 第三步:用结构化记忆替代裸对话。 把用户偏好、已确认事实抽成结构化字段(名字、订单号、已决策项),每轮只带增量,而不是整段自然语言历史。四种记忆策略里,结构化记忆最省。
  • 第四步:接上中转站的明细 + 额度护栏。 用逐笔明细盯住「哪一轮开始暴涨」,给高风险 Agent 设密钥额度上限。看到异常立刻收口,而不是等月底对账才发现有对话跑了三天三夜。

---

把「单价」和「用量」分开看,你会发现自己其实一直在为重复发送的历史买单——而这部分,模型再便宜也救不了。把「逐笔可见 + 额度护栏 + 应用层收敛」三件事做齐,对话成本砍掉 50%–90% 是行业里反复验证过的结果。

配图 2
配图 2
延伸阅读:上一轮《「模型越来越便宜,账单却越来越贵」》聊 Agent Tokenmaxxing(多步工作流放大用量);本轮聊「对话历史重复计费」(单轮内部的历史滚雪球)——一个是横向多步、一个是纵向多轮,但都指向同一句话:单价跌,救不了失控的用量。