中转 API 的 model 字段可以伪造吗?模型偷换验证实战
中转层可以轻易改写 model 字段。要确认底层模型,必须把声明、协议结构和能力证据放在一起看。
model 字段不是模型身份证
OpenAI 兼容响应中的 model、Anthropic 响应中的模型标识,本质上都是服务器返回的普通字符串。只要请求经过中转,网关就能在把 JSON 发给客户端前改写它。下面这种逻辑甚至不需要理解模型内容:
const upstream = await callCheaperModel(request);
upstream.model = request.model;
return upstream;
因此,请求 claude-opus-* 后看到相同字符串,只能说明中转愿意这样声明,不能证明底层真的运行了该模型。
偷换通常发生在哪一层
最简单的是固定映射:所有高价模型名都转到一个便宜模型。更隐蔽的是按时间、账号、请求长度或并发量动态路由;新用户和短测试走真模型,长期使用或高峰期切换到便宜上游。还有一种是混合路由,同一 Key 的连续请求随机落到不同渠道,所以偶尔检测正常、偶尔质量骤降。
这也是为什么一次问“你是谁”不能得出可靠结论。系统提示可以规定自我介绍,中转也可以对常见检测提示做特殊处理。
第一组证据:协议结构
不同模型服务在流式事件、usage、stop reason、工具调用和错误体上存在稳定差异。中转可以模仿其中一部分,但要完整保持所有边界条件成本更高。
检查时不要只看成功响应。主动制造一个无害的参数错误、请求不存在的模型,再比较错误码、字段名和消息结构;开启与关闭流式输出,比较最终 usage 是否一致;要求工具调用,检查参数是结构化对象还是被降级成普通文本。
单一字段可以改,整套协议在多个分支下都保持一致更难。
第二组证据:能力边界
选择能拉开模型差异、同时可客观评分的任务:严格 JSON Schema、必须触发的工具调用、图片细节识别、多文件关系定位、固定长度的上下文回忆。避免只用开放式写作或常识问答,因为答案风格受随机性影响大,人工判断容易带偏见。
每项至少重复三次,并记录成功率而不是挑最好的一次。若标称旗舰模型在结构化输出、工具调用和长上下文上持续落后,同时协议证据也异常,偷换或能力裁剪的可能性明显提高。
第三组证据:一致性
把同一请求同时发给一个可信基准接口和待测中转,固定模型、temperature、最大输出和系统提示。不要比较答案是否逐字一致,而是比较:
- 是否遵守相同的输出约束;
- 是否支持相同工具与内容类型;
- usage 的量级是否合理;
- 延迟和输出速度是否出现异常分层;
- 拒答边界和知识表现是否长期偏离。
模型生成有随机性,单题差异不是证据。多项可复现偏差才有意义。
一次实战应该怎么记录
建立一张表,每行是一次请求,至少包含时间、请求模型、返回 model、协议、HTTP 状态、首 token 延迟、总耗时、工具调用是否成功、结构化输出是否通过、签名状态和异常摘要。分早中晚各采样,持续两到三天。
如果只有 model 字段一致,而工具、结构、签名和长上下文均异常,可以将它标记为“声明一致、证据不一致”;不要直接写成百分之百假模型。准确的风险表述既更专业,也避免把网络波动误判成欺诈。
CheckToken 如何处理 model 字段
CheckToken 会读取返回字段,但不会把它当成唯一结论。主响应还会进入指纹、非流结构和签名分析,并与流结构、工具调用、结构化输出、知识与多模态探针交叉评分。
如果你只想验证 Key 是否能用,最小请求已经足够;如果购买的是高价模型或中转明确承诺官方来源,就需要运行完整检测并展开每项证据。总分用于快速筛查,具体争议仍应回到可复现的原始结构和对照实验。
判断原则
可信结论应该满足三个条件:证据来自不同维度、实验可以重复、表述不超过证据能证明的范围。model 字段可以作为一个输入,但永远不应该成为模型真伪的最终答案。
相关阅读
立即免费检测你的 API Key
立即使用 CheckToken 检测