做产品 PMaker
空格的键盘空格的键盘
大模型

调用一个模型需要什么

调用一个模型需要什么 | 大模型 | 做产品

调用一个模型需要什么

你不用会写代码,但得知道工程师在说什么。一次模型调用需要的东西少得出奇:往哪发、用哪个模型、算谁的钱——就这三样。

你会遇到的现象

  • 工程师说「换个模型很快」,你不确定该不该信

  • 某天早上效果和账单突然都变了,没人改过代码

  • 看到有人把密钥写在前端页面里,不知道这有多严重

三件套

**① base_url ——「往哪发」。**模型服务的地址。用官方就填官方的,用云平台就填云平台的,用自建网关就填你自己那台。

**② 模型名 ——「用哪个」。**一串标识符,指定这次要哪个模型来干活。同一个地址下通常有几十个模型可选。

**③ API Key ——「算谁的钱」。**一串密钥,既是身份凭证也是账单归属。谁拿着它,谁就能用你的额度。

除此之外就是这次要发的内容本身(提示词、历史对话)和一些调用参数。**接入这件事,本身没什么复杂的。**复杂的从来是接入之后:怎么控成本、怎么处理失败、怎么验收质量。

为什么都兼容同一套格式

这是接入时最省事的一条常识:绝大多数模型平台,都兼容同一套接口格式(业内通称「OpenAI 兼容格式」)。

原因不难理解。这套格式先出现、生态工具最多,后来者如果自己搞一套,客户迁移过来就要重写代码——谁也不想给自己设这个门槛。于是大家都选择兼容。

这件事对你的实际意义很大:**换厂商往往只需要改 base_url 和模型名两个字段。**所以当工程师说「换个模型很快」,多数时候他没夸口。

但有两个前提你得追问。**第一,提示词要重调。**接口通了不等于效果一样,不同厂商对同一段提示词的反应差别很大,通常需要针对性调整。**第二,非通用功能不一定兼容。**各家的工具调用、结构化输出、缓存机制细节不同,用得越深,迁移成本越高。

所以真正的建议是:**从第一天起,把模型调用封装在你自己的一层里。**业务代码只调你自己的接口,具体用哪家在那一层里决定。这样换厂商、加备用、做降级,都只改一个地方。

模型名里的坑

模型名看着只是个字符串,里面有几个值得留意的地方。

**版本号和日期后缀。**很多模型名带具体版本或日期,比如某个模型的 2026 年 7 月版。指定到具体版本,行为就是稳定的。

**-latest 这类别名要小心。**它指向该系列的最新版本,厂商一发新版,你的调用自动切过去。听起来省事,实际上意味着:某天早上你的效果、延迟和账单可能全变了,而你们没改过任何代码。

这在产品上是个真麻烦——问题很难排查,因为所有人都确信「我们什么都没动」。

建议:生产环境固定到具体版本,升级当成一次正常发版来做——先用你那组固定样例跑一遍,确认没退步再切。测试环境可以用 latest,提前知道下一版会有什么变化。

模型名里最贵的一个坑

固定到具体版本 …-2026-07

行为一直是稳定的

用 -latest 别名 …-latest

厂商发了新版 效果 · 延迟 · 账单,全变了

时间 →

而你们没有改过任何一行代码

生产环境固定到具体版本,升级当成一次正常发版:先用固定样例跑一遍,确认没退步再切。 测试环境可以留 latest,好处是能提前知道下一版会有什么变化。

这个问题在产品上格外难查,因为所有人都确信「我们什么都没动」——排查会先绕过代码、绕过配置,最后才想到模型别名指向变了。

密钥的底线

这一条没有商量余地:API Key 绝对不能出现在前端。

网页的 JavaScript、App 的安装包,都是用户可以拆开看的。密钥放进去,等于公开贴出来。别人拿到之后就能拿你的额度随便跑,账单归你——而且这类事故通常几小时就能烧掉一大笔钱。

正确做法是:**密钥只存在你自己的后端,前端调你的接口,由你的后端去调模型。**这一层中转是必须的,没有例外。

顺带一提,有了这一层之后,你还能免费拿到几样很有用的东西:限流(防止单个用户刷爆你的额度)、用量统计(哪个功能花了多少钱)、审计日志(出问题能查)、统一降级(主模型挂了自动切备用)。这些都是产品迟早要用上的。

还有两条一起记住:密钥要能随时作废重发(怀疑泄露就立刻换,别犹豫),以及不同环境用不同的密钥(测试环境泄露不至于影响线上)。

常用调用参数 三件套之外,那些真正影响产品体验的旋钮。

从哪里拿到模型 base_url 填谁,取决于你走哪条渠道。

选型与降级 封装了这一层之后,才谈得上自动降级和按任务分档。