我最近在改一段会自动重试的调用代码,改到一半停住了:一次请求超时之后,这一笔钱到底算不算?
我一开始的判断特别朴素——没拿到结果就不该收钱,跟点了菜没上就该退单是一个道理。我没打算真去触发一次超时机试试,那是要真花钱的。于是我把这一页从头翻到尾,把几种「没跑完」的情形一条条抄了下来,抄完才发现,判断线压根不在我这边。
六种「没跑完」,判断线其实只有一条
我把页面上写明的情形拆成了六行,每一行只问一个问题:模型开始往下生成了吗?
我主动不等了(客户端中断)——生成了一部分,输入 token 和已生成的 token 照收;
客户端超时中断——同上,照收;
非流式输出的超时——生成了一部分但没拼成完整回复,客户端一个字都收不到,输入 token 和生成但未输出的 token 照收;
服务端中断(比如命中审核)——已经生成的那部分照收;
RPM、TPM 超限报错——压根没有开始生成,一分不收;
精调任务失败且不导出产物——训了一部分,不收,还能重试。
六行抄完我只有一个感觉:原来这事跟我拿没拿到答案毫无关系。收不收费,看的是那台机器有没有真的开始往外吐字。超限报错的请求连门都没进,所以六行里只有它是 0 元。
为什么是这条线,页面上没写。我自己的理解是钱花在算力上——模型一旦真的跑起来,卡就在转,转过的那一段没法退回来。这是我的猜测,不是页面上的话。
顺带说一句跟重试有关的。我原本以为遇上超限报错就换个接入点接着试,查下来不是这么回事:同一个主账号下,同一个模型的限流是共享的,不区分版本,多开几个接入点或者换账号轮询,结果照样是超限报错。想绕过去,只有控制发送速率和去提配额这两条路。
非流式超时那一行,我看完改了自己的写法
这一行我读了两遍。非流式要等模型全部生成完才一次性返回,中途请求中止或超时,服务端生成了一部分但没生成完整回复,也就没法把内容返回过来。页面原话是这样的:本次请求客户端收不到模型生成信息,但会产生输入 token 和生成但未输出的 token 费用。
翻成大白话:你一个字都没看见,钱照收。
我拿自己常用的那档规格算了一遍。以豆包 Seed 2.1 pro 为例,产品页上写的是输入 6 元每百万 token、输出 30 元每百万 token。一次喂进去 20 万 token 的长文档,光输入就是 1.20 元;假设输出到 3000 token 时被超时掐断,输出再添 0.09 元,合计 1.29 元,换来的是零个字。这 20 万 token 我是用它自带的 Token 计算器估的,不是自己数字数——同一段文字在不同模型的分词策略下切出来的数并不一样。
输入越短,白跑这一趟越便宜:同样一次中断,1 万 token 的输入只有 0.06 元,20 万 token 是它的 20 倍。长文档才是重灾区。
真正让我停下来的不是这一块二,是下一句:重试不是接着上次的上下文往下续,它是全新的一次请求,输入费要重新付一遍。我那段代码里重试三次,遇上长文档连着超时,输入费就是 3.60 元。重试次数写在代码里就是一行数字,写在账单上是要乘的。
所以我改了三处。能开流式就开流式——同样是被掐断,流式至少把前面那一截吐给你了,钱花下去还剩下点东西,非流式是一点不剩。客户端超时别卡太紧,长生成任务按分钟级给;尤其是带思维链的深度思考模型,回复更长、生成更慢,二三十秒的默认值根本盖不住完整生成时间,Agent 那类场景给到三十分钟以上才稳。再就是给模型设推理限额,页面上的说法是调用量到了限额,平台会自动关停对应的模型服务,费用预期能钉死。
精调那边的规矩,跟推理是反着的
这一段我原本没打算看,顺手往下翻才发现的。
任务训练失败分两种:不导出产物的,不计费,还能重试;导出产物的,得先把任务停了,平台按停止时已经训练的 token 数计费,而且不再支持重试。
也就是说,那个看起来更「认真」的勾选项,恰恰把免费重来这条路给堵上了。我以前下意识觉得勾上导出才保险,现在会反过来:先用不导出把数据、步数、模板跑通,确认没问题了再去勾导出。
手动停止又是另一回事:不管产物后面导不导出,都按已经训练的 token 数收。这条没有例外,也没有「反正没导出就不算」的口子可钻。
欠费之后,账单还在往前走
最后这段是我没料到的。页面上有人问:账户欠费了,为什么还在持续出账?回答给了两条原因。
一条是推账时延:欠费是从账单出具起算的,而账单出账通常有 1 到 2 小时的延迟,这段时间里系统按实际使用量正常出账。另一条是关停延迟:欠费之后还有一段「欠费—关停」的窗口,页面上写的是约 2 小时。
两个数字叠起来,从你把余额真正跑穿那一刻算起,最多还有大约 4 个小时的钱在继续滚。
不过我在另一页上读到的又是别的数字:按量推理这边写的是欠费时长不超过 1 分钟还能正常用,超过 1 分钟平台会通知并关停服务;而「约 2 小时」那句针对的是按小时后付费的模型单元和 TPM 保障包,那段期间资源还给你留着、还能用,钱也照出。两处口径不一样,我读完的判断是看自己用的是哪种付费方式,别混着看。我没找到把这两个数统一起来的说明,真要抠这个时间点,以控制台那一行为准。
页面上还给了个我觉得更实用的东西:如果希望严格控制费用预期、避免推账和关停延迟带来的额外花销,可以给模型设置推理限额。模型单元和 TPM 保障包这类按小时计费的东西,确定不再用了就到接入点详情页退订,别让它躺在账号里继续跑。
顺带交代一句时间:这几页我这次看是 2026-10-03,页面上的更新时间没有逐条标注,价格与规则以你控制台当时显示为准。
你那段调用代码里,重试次数填的是几?我把它从 3 改成了 2,顺手把流式也开了——你要是有更好的写法,评论区说一句,我照着改。
本文含 AI 辅助创作内容:资料检索与初稿由 AI 完成,观点梳理、数据核验与编校由人工完成。