一个Key调用多个大模型

📅 2026-10-08 · 分类:教程

一个 Key 调用 DeepSeek、通义千问:把模型切换压到一行配置

上周要做模型对比,让同一段 prompt 在 DeepSeek、通义千问、Kimi 上各跑一遍,看哪个写 SQL 更靠谱。按常规做法,得先去三家官网注册、实名、充值,各拿一个 Key,代码里写三套客户端。折腾一下午,真正跑测试的时间不到十分钟。

更烦的是后面维护。每个平台余额独立,哪个快用完得单独去后台看;SDK 参数还不统一,有的叫 max_tokens,有的换个名字。想砍掉一个模型,代码里得翻半天。

其实现在大部分国产模型都提供了 OpenAI 兼容接口。请求格式、返回格式跟 OpenAI 那套一致,SDK 根本不用换,只改两个地方——base_url 和 model。

准备工作就两样:一个聚合网关的地址,一个 Key。这个 Key 背后挂着多个模型,不用分别注册,也不用管各家的实名和计费。

第一步,配置进环境变量,别硬编码:

第二步,客户端只写一套。 Python 里还是熟悉的 openai 包:

client = OpenAI( base_url=os.getenv("OPENAI_BASE_URL"), api_key=os.getenv("OPENAI_API_KEY"), )

resp = client.chat.completions.create( model="deepseek-chat", messages=[{"role": "user", "content": "写个分页查询"}], ) print(resp.choices[0].message.content) `

注意 base_url 结尾的 /v1,漏了直接 404,这个坑踩过不止一次。

第三步,切换模型就是换 model 这个字符串。 想批量对比,套个循环:

for m in models: r = client.chat.completions.create( model=m, messages=[{"role": "user", "content": prompt}], ) print(m, r.choices[0].message.content) `

同一份代码,换个名字就换了模型,不用 import 新库,不用重读文档。

几个实际会遇到的点。模型名要按网关文档写,不是你印象里的名字,写错报的是 model not found。流式输出、function calling 各家支持程度不一样,DeepSeek 和通义基本都齐,小众模型可能只有基础对话,先试再上生产。Key 别提交到 Git,这个不用多说。

最后给两条建议。 做对比测试时,先用便宜的小模型把链路跑通,确认 prompt 和结果解析没问题,再换贵的跑正式数据,一轮下来账单能差好几倍。额度用完的时候,直接在充站补一下就行,不用回各家后台挨个充值——一个入口管住所有模型的余额,这才是聚合 Key 最省事的地方。

← 返回文章列表