Base URL and SDK Migration2026年7月14日Flatkey

OpenAI 兼容模型名称:避免别名、提供商和版本错误

一份实用清单,用于在迁移前验证 OpenAI 兼容的模型名称、提供商模型 ID、Flatkey 别名、端点系列和版本策略。

OpenAI 兼容模型名称:避免别名、提供商和版本错误

OpenAI 兼容模型名称是那些原本顺利的迁移悄然出问题的地方。SDK 接受一个 model 字符串,请求形状看起来很熟悉,base URL 也指向一个 OpenAI 兼容路由。然后生产环境就会看到 model_not_found、无声地回退到错误能力,或者把图像模型发送到聊天端点。

解决办法不是把每家提供商的目录都背下来。应将 OpenAI 兼容模型名称视为受控配置:每个字符串都隶属于一个提供商目录、一个端点家族、一条路由、一项版本策略和一份计费记录。在移动真实流量之前,先验证这五项。

Flatkey 在这里很有用,因为团队可以通过一个网关集中管理模型访问、路由、计费、使用分析和运维审核。但网关并不会让松散的模型字符串变得安全。本指南会在你更改 base URL、SDK 设置或生产别名前,给你一套验证 OpenAI 兼容模型名称的工作流。

为什么 OpenAI 兼容模型名称会漂移

“OpenAI-compatible” 描述的是一种 API 形态,而不是通用命名标准。兼容端点可能接受 OpenAI 风格的 JSON 和 SDK,同时仍然要求它自己的模型 ID。

这意味着这些字符串并不能互换:

字符串来自哪里 为什么会失败
提供商营销页面 展示的产品名称可能不是 API 模型 ID。
旧代码示例 模型可能已弃用、重命名,或仅适用于不同的端点。
另一个网关 网关别名只是本地路由配置,并非提供商范围内的事实。
不同的端点家族 聊天、Responses、嵌入、图像、音频和视频路由可能暴露不同的模型集合。
其他区域或工作区 有些提供商会让端点和模型目录依赖于区域、工作区或账号权限。

安全规则很简单:不要凭记忆批准 OpenAI 兼容模型名称。要根据当前目录、当前端点家族以及一次冒烟测试来批准。

模型名称验证工作流

在更改 OPENAI_BASE_URLbaseURLmodel、Flatkey 别名或生产路由策略之前,请使用此工作流。

步骤 问题 要保存的证据
1. 目录 当前提供商或 Flatkey 目录是否暴露了这个完全一致的模型字符串? 带时间戳的截图、API 回读或目录导出。
2. 端点家族 该模型是否启用于 chat/completionsresponses、图像、嵌入或其他路由? 特定路由文档和一次最小请求。
3. 别名所有者 应用使用的是直接的提供商 ID 还是网关别名? 配置文件、Flatkey 模型别名以及所有者/团队字段。
4. 版本策略 这个字符串是稳定版、带日期版、预览版、已弃用还是由提供商路由? 弃用说明、模型页面、变更日志或批准记录。
5. 运行时证明 实际应用环境是否成功调用了该路由? Curl 响应、SDK 响应、请求 ID 和使用记录。
6. 回滚 如果失败,你要恢复成哪个字符串和路由? 之前的配置、功能开关和回滚负责人。

这就是模型名称检查清单的核心价值:它把 OpenAI 兼容模型名称从临时字符串变成经过审查的部署输入。

可供借鉴的当前提供商示例

先用官方文档理解模式,然后在发布前验证你自己的账号或网关目录。

提供商路径 截至 2026 年 7 月 7 日检查的官方模式 迁移经验
OpenAI API 在 Chat Completions 和 Responses 中使用 model 字段,而 List models 端点会返回已认证账号可用的模型。当前 OpenAI 模型指南将 gpt-5.5 标识为最新家族,不过 API 示例仍可能显示较旧的示例字符串。 用文档确认契约,但用账号目录确认可用性。
Google Gemini OpenAI 兼容性 Google 文档说明了位于 https://generativelanguage.googleapis.com/v1beta/openai/ 下的 OpenAI 兼容 base URL,并给出了诸如 gemini-3.5-flash 这样的聊天示例。 不要把 Gemini 模型替换成看起来像 OpenAI 的名称。保留 Gemini ID。
xAI xAI 文档展示了使用 OpenAI SDK 的方式,base_url="https://api.x.ai/v1",并给出诸如 grok-build-0.1 的模型字符串示例。 SDK 可以是 OpenAI 形状,但模型字符串仍然是 xAI 特有的。
阿里云 DashScope DashScope 文档说明了面向 Qwen 模型的 OpenAI 兼容模式、特定区域或工作区的 compatible-mode/v1 URL,以及诸如 qwen-plus 的示例。 base URL、区域、工作区和模型名称是一组整体。要一起验证。
Flatkey Flatkey 的公开主页展示了位于 https://router.flatkey.ai/v1/chat/completions 的 OpenAI 风格路由,并围绕一个密钥、模型访问、路由、计费、使用分析和运维控制来定位产品。 用当前的 Flatkey 控制台或目录查找真实别名,然后对完全一致的路由进行冒烟测试。

这些示例说明,OpenAI 兼容模型名称应被视为特定于提供商的字符串。兼容性减少了客户端改动;它不会抹平目录差异。

构建一个已批准的模型映射

不要把原始模型字符串散落在应用代码、笔记本、自动化工具和支持脚本中。把已批准的 OpenAI 兼容模型名称放在一个小型映射里,并让每个服务都通过它路由。

type EndpointFamily = "chat" | "responses" | "embeddings" | "images" | "video";

type ApprovedModelRoute = {
  alias: string;
  providerModel: string;
  endpointFamily: EndpointFamily;
  baseURL: string;
  owner: string;
  reviewedAt: string;
  rollbackAlias: string;
};

export const models: Record<string, ApprovedModelRoute> = {
  support_chat: {
    alias: "support_chat",
    providerModel: process.env.FLATKEY_SUPPORT_CHAT_MODEL!,
    endpointFamily: "chat",
    baseURL: process.env.FLATKEY_BASE_URL ?? "https://router.flatkey.ai/v1",
    owner: "support-platform",
    reviewedAt: "2026-07-07",
    rollbackAlias: "support_chat_previous",
  },
};

这个映射将你应用中使用的名称与提供商或网关的模型字符串分开。这为采购、财务和事件响应人员提供了一个稳定的位置来询问:是谁批准了这个模型,它用于哪个端点,以及我们如何回滚它?

如需更广泛的目录治理,请结合使用AI 模型目录指南。如需进行基础 URL 迁移,请使用OpenAI 兼容 API 迁移指南

在迁移 SDK 之前对精确名称做冒烟测试

模型名称的冒烟测试应该小到可以人工检查。不要一开始就使用工具、流式传输、JSON schema 或框架封装器。先从你计划上线的路由、密钥和模型字符串开始。

export FLATKEY_API_KEY="sk-fk-..."
export FLATKEY_BASE_URL="https://router.flatkey.ai/v1"
export FLATKEY_MODEL="the-current-flatkey-model-alias"

curl -sS "$FLATKEY_BASE_URL/chat/completions" \
  -H "Authorization: Bearer $FLATKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "'"$FLATKEY_MODEL"'",
    "messages": [
      {"role": "user", "content": "Reply with exactly: model route ok"}
    ]
  }'

如果这一步失败,不要先调试 SDK。先检查模型字符串、端点家族、密钥作用域、路由和目录。如果成功,则保存响应正文、状态码、请求 ID(如果有)、时间戳、usage 对象,以及 Flatkey usage 回读信息。

然后通过 SDK 测试相同的 OpenAI 兼容模型名称:

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.FLATKEY_API_KEY,
  baseURL: process.env.FLATKEY_BASE_URL ?? "https://router.flatkey.ai/v1",
});

const response = await client.chat.completions.create({
  model: process.env.FLATKEY_MODEL!,
  messages: [{ role: "user", content: "Reply with exactly: sdk route ok" }],
});

console.log(response.choices[0]?.message?.content);

SDK 测试应使用相同的 base URL 根路径、相同的模型别名,以及相同的端点家族。如果 curl 能正常工作但 SDK 失败,请先检查环境变量,再修改模型名称。

将别名与提供商 ID 分开

别名不等同于提供商 ID。提供商 ID 是上游提供商或兼容提供商路由接受的字符串。网关别名则是你的网关映射到某个提供商模型、回退策略、价格组或账号的字符串。

两者都可能有效。问题出现在团队不再标注自己到底在用哪一个时。

请使用以下命名纪律:

字段 示例形式 规则
应用别名 support_chat 应用程序使用的稳定名称。
网关别名 support-chat-balanced 由网关或平台团队负责。
提供商模型 ID qwen-plusgemini-3.5-flash,或当前目录值 从提供商文档或目录中验证。
端点家族 chatresponsesimagesembeddings 必须与路由和解析器匹配。
版本状态 stable、preview、dated、deprecated 在生产流量前审查。

这使 OpenAI 兼容模型名称可审计。如果路由失败,你就能判断问题出在应用别名、Flatkey 别名、提供商模型 ID,还是端点家族。

避免端点家族不匹配

model_not_found 并不总是意味着字符串拼写错误。它也可能意味着该字符串在另一个路由上才有效。

聊天模型可能无法在 Responses 路由上使用。图像模型可能需要图像生成端点。视频模型可能要求不同的载荷家族。提供商兼容层可能会静默忽略不受支持的字段,或者只暴露提供商目录的一部分。

在添加可选参数之前,请回答这些问题:

  1. 我调用的这个路由是否已批准使用该模型?
  2. 这个端点期望的是 messagesinputprompt、图片、文件,还是其他请求结构?
  3. 所选 SDK 是否会在 base URL 后追加端点路径?
  4. 提供商是否要求特定于区域或工作区的 base URL?
  5. Flatkey 是否会在预发和生产环境中将这个别名路由到同一端点系列?

OpenAI 兼容 API 排错指南涵盖了更广泛的调试路径。对于模型名称问题,请尽量把故障范围缩小:一个路由、一个模型字符串、一个简短请求。

为版本和弃用变更制定计划

OpenAI 兼容的模型名称会随着时间变化。有些名称是稳定的系列,有些是带日期的快照,有些是预览模型,还有一些是由你们团队自己控制的网关别名。

为每一条生产模型路由建立评审节奏:

信号 操作
新的提供商模型系列 先只加入预发环境,再比较质量、成本、延迟和工具行为。
preview 或 beta 后缀 在用于生产前,必须明确负责人和回滚日期。
弃用通知 创建一个迁移任务,包含截止日期、替代方案、测试计划和路由负责人。
网关别名变更 在更新生产配置前,先运行冒烟测试和使用情况回读。
提供商区域变更 再次验证 base URL、工作区、目录、计费和延迟。

不要仅仅把这些决策埋在环境变量里。保留一份可供审阅的证据包,这样工程、运维和采购都能看清楚为什么这个模型被允许使用。

切换前在 Flatkey 中需要检查什么

把 Flatkey 当作运行控制点,而不是跳过验证的理由。

在将生产流量迁移之前,请确认:

  1. 你在控制台或入门笔记中看到的当前 Flatkey base URL。
  2. 应用程序将要发送的确切模型别名。
  3. 别名背后的提供商模型或路由。
  4. 端点系列,例如 Chat Completions 或 Responses。
  5. 该密钥或工作区的配额和支出限制。
  6. 在成功冒烟测试后的使用情况回读。
  7. 主路由失败时的回退行为。
  8. 上一条提供商路由或上一条 Flatkey 别名的回滚配置。

然后将运行侧情况与Flatkey 定价进行比较,并获取一个密钥用于测试路径。只有在迁移当天检查过之后,才应将定价和模型目录页面视为最新证据。

常见问题

OpenAI 兼容的模型名称是通用的吗?

不是。OpenAI 兼容的模型名称仍然是特定于提供商或网关的字符串。请求结构可以兼容,但模型目录仍然可能不同。

为什么我的 OpenAI 兼容路由会返回 model_not_found?

模型字符串可能拼写错误、账户不可用、在网关中被禁用、发送到了错误的端点系列、限定于另一个区域,或者已被弃用。请在当前目录中验证确切字符串,并运行一个最小化路由测试。

我应该使用直接的提供商模型 ID,还是 Flatkey 别名?

当你需要集中路由、计费、使用情况审查、回退控制或团队级治理时,请使用 Flatkey 别名。让该别名映射到一个已验证的提供商模型 ID,并记录负责人。

我可以从旧的提供商指南里复制模型名称吗?

只能作为起点。旧指南可能包含已退役、预览或仅作示例的字符串。请重新检查当前的提供商文档、当前的 Flatkey 目录,以及一次真实的冒烟测试。

模型名称变更评审中应该包含什么?

应包含旧字符串、新字符串、端点系列、base URL、提供商或 Flatkey 别名、负责人、来源文档、冒烟测试响应、使用情况回读、预期成本影响、回退行为和回滚计划。

结论

OpenAI 兼容的模型名称是迁移输入,不是无关细节。在更改生产流量之前,请验证目录、端点系列、别名负责人、版本策略和运行时证据。如果你把这些检查集中在 Flatkey 中,同一份模型名称证据就可以支持工程切换、事故复盘、使用量对账和采购审批。

当你准备好测试时,从一个密钥、一个 base URL、一个端点系列和一个已批准的模型别名开始。这是让 OpenAI 兼容模型名称在生产中变得“无聊”的最快方式。