简短答案
大模型答不准自己的版本号是正常现象,不代表你调用错了模型。model 参数主要是给 API 服务端做路由的。模型本身不一定能看到这个字段,也不一定在训练数据中知道发布后的正式名称。官方网页能答对版本,通常是因为产品层注入了 system prompt,告诉模型当前身份。
通过 API 调用时,如果你没有在 system message 中写明模型身份,模型可能会根据训练数据猜一个旧名称。
什么时候会遇到
- 你调用了新模型,但它回答自己是旧版本
- 官网能答对版本,API 调用却答错
- 同一个模型在不同工具里自我介绍不一致
- 你想确认 API gateway 是否真的调用了指定模型
- 用户把“你是什么模型?”当作模型验证方法
为什么会这样
模型名称通常在训练完成后才确定。模型训练时学到的是语言、代码和知识模式,不一定包含发布后的最终版本名。 API 请求里的model 字段用于告诉服务端应该把请求路由到哪个模型。这个字段不是普通对话内容,模型不一定会把它当成自己的身份信息。
官方网页会在产品层添加隐藏提示词,类似“你是某某模型”。通过 API 调用时,默认不会自动加入这些身份提示。
如何验证真实调用的模型
不要只问模型“你是什么版本”。更可靠的验证方式是看请求链路和响应字段。
示例响应:
如何让模型按指定身份回答
如果你的产品需要模型在回答中说明自己的身份,可以在 system message 中明确写入:常见误区
- 用“你是什么模型?”作为唯一验证方法。
- 看到模型答错版本,就认为 provider 替换了模型。
- 认为
model参数一定会进入模型上下文。 - 忽略 dashboard 调用日志和响应中的
model字段。 - 在 system message 中写了模型身份后,就以为实际模型也被切换了。