上个月做客服对话总结,DeepSeek 便宜,适合跑几千条批处理;通义千问对中文长文本更稳,用来处理用户上传的长文档;偶尔还得拿 GPT 对一下效果。于是注册了三个平台,实名认证三遍,绑了三张卡的账单。SDK 文档风格各不相同,环境变量配了一堆。
真正麻烦的是额度。DeepSeek 剩 40 块用不完,通义的免费额度先耗光了,GPT 那边不敢多充。月底财务问 AI 花了多少钱,只能打开三个后台挨个截图加总。这种分散状态在小团队里尤其难受——没人专门管,谁用谁充,最后账都对不上。
后来把调用统一到一个聚合接口上,一个 Key 搞定,代码里改个字符串就能切模型。下面说具体怎么做。
需要一个 OpenAI 兼容的聚合服务,拿到两样东西:API Key 和 base_url。客户端不用换,Python 装 openai 就行,Node 用 openai 包也一样。选服务时重点看两点:是不是标准 OpenAI 协议、计费明细是否透明。
client = OpenAI(
api_key=os.getenv("AGG_KEY"),
base_url="https://api.example.com/v1" # 聚合站给的地址
)
`
关键就是这一行。原来指向 api.deepseek.com,现在指向聚合站。因为 SDK 认的是 OpenAI 协议,DeepSeek、通义、Kimi 这几家基本都做了兼容,所以地址一换请求就通了,业务代码一行不用动。
print(ask("把这段总结成三点", model="qwen-plus"))
print(ask("写个正则校验手机号", model="deepseek-chat"))
`
模型名按聚合站的写法填,一般就是 deepseek-chat、qwen-plus、gpt-4o-mini 这种。如果某个模型不支持 temperature 之类的参数,聚合层通常会做映射;个别差异得单独处理,但概率不高。
别把模型名硬编码在业务里。维护一张表,按场景取:跑批走便宜的,长文走中文强的,需要英文推理再切另一个。
改路由不改代码,换模型成本降到一次配置。
别一上来就把所有模型塞进生产。先挑两个小任务对比一周,看质量和账单再决定。重要链路留降级:主模型超时就 try/except 切备用模型名,同一个 Key 下换个字符串的事。
另外挑聚合站时,优先选计费和额度在一个后台能看全的。我用的是充站,按量扣费,余额和每笔调用都在一起,省了来回切账号对账的功夫。多模型本身不难,难的是别让管理成本超过它带来的收益。