环境检查

把你产品里的 AI 请求分三类:即时问答、后台批处理、付费高价值任务。三类不要共用一个默认模型。

任务推荐路由成本风险
标题改写小模型优先量大,单次低
客服草稿中等模型 + fallback失败会影响留存
合同分析强模型优先长上下文贵
agent 调工具逐步升级重试会放大费用

我的习惯是先在代码里定义「任务类型」,而不是直接到处写 model name。后面换模型、调预算、做 A/B 才不会满仓库搜索。

操作步骤

第一步,配置 LiteLLM Router。把可选模型、权重、超时和重试放在一个地方。不要让业务代码知道供应商细节。

第二步,在 LangChain 调用时补 metadata:tenant_idfeatureplanrequest_id。这些字段以后会救命,因为你真正要看的不是全站总成本,而是某个客户是否把你的毛利吃掉。

第三步,把 LangSmith cost tracking 接上。确认 trace 里出现真实模型名和 token 用量。如果模型名被网关改写,就手动映射价格表。

第四步,给每个套餐设预算阈值。免费用户走小模型,Pro 用户关键路径用强模型,超出月额度后降级或提示排队。

常见失败原因

  • Router fallback 次数过多,失败请求也计入成本
  • LangSmith 里模型名缺失,成本显示为 0 或 unknown
  • prompt cache 命中率没记录,误以为某个模型很贵
  • 用户上传长 PDF,没有截断和摘要层
  • 后台任务重跑,没有幂等 key

跨地区协作

多模型路由常会牵涉外部 endpoint、团队成员本地调试和 CI。我的做法是:本地只保留网关地址,不把每家 key 散到电脑;生产环境按租户打日志。需要快速验证 Claude、OpenAI 兼容接口时,可以接入独立开发者可用的 Claude / OpenAI API 中转,把产品逻辑跑通,再决定是否自建。

已上线后的成本清单

  • 每天看 top 20 高成本请求
  • 每周看不同套餐毛利
  • 每月更新模型单价表
  • 给 agent 工具调用设置最大步数
  • 对长上下文先摘要再调用
  • 对失败请求保留 request id,方便复盘

路由分层实践

我会把模型池分成三层,而不是按供应商分。第一层是「批量便宜层」,负责改写、分类、标签、摘要;第二层是「交互默认层」,负责客服草稿、短问答、代码解释;第三层是「高价值层」,只给付费用户、复杂任务和人工确认后的重试。

每一层都要有退出条件。比如摘要超过 8K token,先切块;工具调用超过 6 步,停止并要求用户确认;连续两次 fallback,返回可读错误,而不是继续烧钱。这个规则比具体模型名更重要,因为模型价格会变,用户行为不会按你的预算来。

计费口径也要早定。我的建议是业务库记录「这次请求应向用户收多少额度」,观测系统记录「这次请求真实花了多少成本」。两套数字不要混在一起。前者服务产品权益,后者服务毛利分析。很多独立开发者亏钱,就是把真实成本藏在平均值里,直到某个重度用户把账单打穿。

上线后还要看失败成本。有些请求最后返回失败,但前面已经消耗了一轮长上下文和一次 fallback。退款时用户只记得失败,你的账单却已经发生。所以报表里单独拉一列 failed_cost,超过阈值就优先修稳定性,而不是继续调提示词。这个指标早一天建立,后面少很多糊涂账。

相关阅读