What happens if my LLM provider goes down in the middle of a project?
先说结论:厂商出故障时,你的项目会不会跟着停,取决于故障发生之前你有没有准备好第二条路。没有任何一家厂商能保证永远不宕机,故障可能是整站不可用、也可能是某个模型限流、还可能是返回变慢到超时。网关能帮你的是在故障发生时把请求换到另一条路,但它换不了你的额度、也保证不了同样的质量。本文先讲故障的几种样子,再讲项目侧应该提前准备什么。
厂商故障通常有哪些样子?
故障通常有四种样子,应对方法各不相同。第一种是整站不可用:请求直接报错,重试也没用,只能换厂商。第二种是单个模型限流:你的调用量触到了上限,换个模型或者等一等就能恢复。第三种是返回变慢:请求没有报错,但延迟长到触发你自己的超时,效果和报错一样。第四种是静默降级:返回成功了,但实际 served 的模型变了、质量也变了,你不比对就发现不了。把故障先分类,再谈应对,否则“加个重试”这种笼统的办法会在第四种故障面前完全失效。
网关的回退到底能帮到哪一步?
带回退路由的网关会在首选模型报错或额度用完时,把请求重试到另一个模型或厂商。托管网关把这条链作为服务的一部分提供,自托管网关则让你在配置里自己定义回退顺序。回退能解决的是“有没有路走”,解决不了的是“路的质量是不是一样”:回退的模型可能更弱、风格可能不同、价格结构也可能不同。所以回退链不能只配不管,要写清楚每一档回退的目标是什么、降级到哪一档就应该停下来报警,而不是一路静默降级到最差的一档还继续跑。
项目进行到一半时,故障会造成什么损失?
损失要分三层看。第一层是当下中断:正在跑的任务停了,需要重跑或者补跑,时间和调用成本都要重算。第二层是状态丢失:如果任务的中间结果只存在内存或者单次调用里,故障后就得从头来,越到项目后期这一层的代价越大。第三层是交付失信:对外承诺了时间点,故障导致延期,这个损失不是技术能补回来的。提前想清楚这三层,才能决定每一层值得花多少成本去防:第一层靠回退,第二层靠落盘和断点续跑,第三层靠提前留出缓冲和对外沟通。第二层的代价最容易被低估:任务跑到一半才发现中间结果没落盘,故障恢复就等于全部重做;越是长任务,落盘的粒度越要细,宁可多写几次中间结果,也不要在故障后从头再来一次。
应该提前准备哪些防故障的措施?
措施有五项,按重要性排。第一是回退链:首选、备选、保底三档写清楚,降级到保底档就报警停手。第二是断点续跑:长任务按步骤落盘,故障后从断点继续,而不是从头重跑。第三是超时与重试策略:超时设多长、重试几次、重试间隔怎么拉长,都要在故障之前定好,而不是故障时现想。第四是状态隔离:关键任务的中间结果不要只依赖单次调用,重要节点先落盘再往下走。第五是人工接管开关:自动回退跑偏时,人能一键切到手动模式,而不是眼睁睁看着它继续降级。
怎么测试你的防故障措施真的管用?
测试的办法是故意制造故障,而不是等故障来找你。第一,故意让首选模型失败一次,看回退是不是按配置的顺序走、最终 served 的模型有没有被如实告知。第二,把超时设得很短跑一次,看超时后的重试会不会重复扣费或者重复写结果。第三,断网或者停掉网关跑一次,看任务能不能从断点续跑、中间结果有没有丢。第四,模拟保底档也失败的场景,看报警和人工接管开关是不是真的能用。这四项测试都通过的方案,才算在故障面前站得住。
选厂商和网关时,故障应对应该占多大权重?
故障应对应该和模型质量、价格放在同一个级别来评估,因为项目中期的故障成本远高于平时的单价差异。评估时要问三件事:厂商过去的故障有没有公开说明、网关的回退链能不能由你自己配置、以及回退后 served 的模型会不会被如实记录。只看平时表现选厂商,等于只在晴天试车;故障应对能力只有在故障时才显形,但选型时就必须把它算进去。便宜但没有回退的方案,在关键项目里往往是最贵的。还有一个评估点是故障说明的公开程度:出过故障并公开说明原因和改进措施的厂商,比从不提故障的厂商更值得信任,因为前者至少证明了它的故障处理流程是真实跑通过的。
网关本身出故障时怎么办?
网关本身也是会出故障的一环,这一点最容易被忽略。托管网关停了,你通过它的所有调用都会停;自托管网关停了,影响范围是你自己的全部服务。所以项目里要留一条绕过网关的直连路径:平时不用,但关键时刻能切过去。这条路径要定期演练,长期不用的备用路径在真正需要时常常已经失效。演练的内容很简单:切到直连、跑通一次关键调用、再切回来,并且确认切换过程没有丢状态。
这篇判断有哪些局限?
本文只讲了故障应对的判断方法,没有替任何一家厂商或网关的可用性背书,因为故障记录会随时间变化,今天的表现不能保证下个季度的表现。回退链的具体配置要结合你的任务类型来定,本文给的是框架而不是现成的配置。另外,故障造成的商业损失因项目而异,本文没有给出通用的损失估算方法,落到具体项目时要按自己的交付承诺来算。
简而言之,项目中期的故障应该怎么防?
防故障的核心是故障之前就准备好第二条路:回退链写清楚三档和报警点,长任务按步骤落盘支持断点续跑,超时重试策略提前定好,再留一条定期演练的直连备用路径。平时用故意制造的故障去测试这套措施,确认回退顺序、served 模型记录和人工接管开关都真实可用。做到这些,厂商故障就从“项目停摆”降级成“一次可处理的降级”,而不是等到故障发生时才临时想办法。
来源与延伸阅读:FreeModel 关于页:它是什么、不是什么、FreeModel、实测免费网关对比、十四家网关公开模型清单实读、网关对比、网关排名指南。