一个Key调用多个大模型

📅 2026-11-03 · 分类:教程

前阵子做个内容审核的小服务,想对比几家模型的效果:DeepSeek 便宜、通义中文语感好、GLM 对长文本处理稳。想法很朴素,真动手就烦了——四家平台各注册一遍,实名、绑卡、申请额度,然后四套 SDK、四种鉴权方式、四个 .env 变量。代码里 if model == "qwen" 这种分支越写越丑,换个模型测效果要改半小时配置。后来改用 OpenAI 兼容协议的中转,一个 Key 通吃,代码从四个客户端收敛成一个。

准备工作

就三样:一个支持多模型的聚合服务账号(拿到 Key 和 base_url)、Python 环境装 openai 库、知道你要调的模型名。基础配置最好放环境变量,别写死在代码里:

第一步:改 API 地址

关键就一行 —— base_url 指向中转服务,其余跟调 OpenAI 一模一样:

client = OpenAI( api_key=os.environ["API_KEY"], base_url=os.environ["BASE_URL"], ) `

旧代码里的 openai.api_base 或各家的私有 SDK 全删掉,统一走这个 client。如果原来用的是 DashScope 或各家原生 SDK,把请求体换成 chat/completions 的消息格式就行,字段基本对齐。

第二步:切换模型只改 model 参数

这是最舒服的地方,同一个函数换字符串就是换模型:

print(chat("deepseek-chat", "写个正则匹配手机号")) print(chat("qwen-plus", "写个正则匹配手机号")) `

模型名以服务商文档为准,一般是 deepseek-chat、qwen-plus、glm-4 这类。想批量跑对比,直接遍历列表,结果塞进表格里,比开四个网页手工复制粘贴靠谱得多。

第三步:处理差异,别当成完全等价

踩过的坑说几个:一是 max_tokens 各模型上限差很多,Qwen 系列小的只有几千,写死 8192 会直接报错;二是 function calling 和 JSON mode 不是每家都完整支持,涉及工具调用时先确认模型能力;三是流式返回的 chunk 结构个别模型有细微差别,做个 try/except 兜住,错误信息里通常会带模型名前缀,按前缀路由日志更清楚。建议维护一张模型能力表,模型名做成配置项而不是散落在代码里。

几句建议

先用小流量把几个模型在真实 prompt 上跑一遍,别只看榜单,很多任务上的差距和宣传标准差得远。上下文长度和限流按最保守的那家设默认值,避免切换时炸。我自己现在用的是充站,一个 Key 里 DeepSeek、通义、GLM、Kimi 都能直接点,按量计费,省掉了挨家注册绑卡的功夫,测新模型时改个字符串就能上,对做对比实验的场景挺省心。

← 返回文章列表