OpenAI 兼容 API 如何选择模型?
简答:OpenAI 兼容 API 选模型,先按任务筛掉不适合的模型,再核对当前目录中的准确 model ID、端点和能力,最后用同一组样例比较质量、延迟、失败率与实际成本。不要把“目录里有模型”直接等同于“支持 Responses、工具调用、视觉或流式输出”;这些能力需要在目标服务上逐项验证。截至 2026 年 11 月 3 日,模型名称、别名、价格和可用端点都应以当前目录、控制台和服务商文档为准。
定义:OpenAI 兼容 API 的模型选择,是在明确任务需求后,从当前可调用目录中筛选候选 model ID,并验证接口能力、质量、速度、成本和稳定性的过程。
先看这张表:不同任务应该优先核对什么
没有一个模型对所有任务都最优。OpenAI 原生文档将模型选择放在质量、成本、延迟和具体工作流之间权衡;兼容 API 还要额外确认服务商是否实现了对应端点和参数。下表是选型起点,不是固定型号推荐。
| 任务 | 优先关注 | 候选筛选方法 | 上线前验证 |
|---|---|---|---|
| 普通聊天与问答 | 响应质量、延迟、上下文 | 优先选择通用文本模型,再用真实问题测试 | 检查多轮上下文、流式输出和最大输出限制 |
| 代码生成与修改 | 代码正确率、长上下文、工具调用 | 选择代码或通用推理能力较强的候选 | 用固定仓库任务测试编译、测试和补丁质量 |
| 复杂推理与 Agent | 多步规划、函数调用、失败恢复 | 优先核对 Responses 或目标服务对应的工具协议 | 验证工具参数、错误处理和中断后的状态 |
| 长文本处理 | 上下文窗口、输入成本、输出上限 | 查看当前目录的上下文规格,不能只看宣传名称 | 用接近真实长度的输入测试截断和超时 |
| 视觉或多模态 | 输入模态、图片格式、分辨率和价格 | 筛选明确标注视觉或图片输入的候选 | 实际发送一张测试图片,确认请求格式和响应字段 |
| 结构化输出 | JSON Schema、函数调用、字段稳定性 | 确认兼容层是否支持目标结构化参数 | 测试缺字段、类型错误和拒答场景 |
| 批量自动化 | 单位任务成本、吞吐、限速和失败重试 | 优先比较轻量模型与批处理能力 | 按“每个成功任务”而不是单次请求计算成本 |
OpenAI 的模型目录可用于核对原生模型的定位、模型 ID、输入输出能力和当前规格;这些信息不能自动推导第三方兼容服务的可用性。使用兼容接口时,还要以目标服务的当前模型目录和接口说明为准。
参考:OpenAI 模型选择指南、OpenAI 模型目录、当前模型目录页面。
五步选出可调用的模型,而不是只选一个名字
- 先写清硬条件。记录任务类型、是否需要图片、是否需要工具调用、预估输入长度、可接受延迟、输出长度和预算上限。如果必须使用视觉、结构化输出或工具调用,这些应先作为硬条件,而不是等请求失败后再排查。
- 从当前目录复制准确 model ID。在目标服务的模型广场、
/models返回结果或控制台中复制完整 ID,不要凭记忆拼接供应商前缀、版本号或别名。目录存在只说明服务可能展示该模型,最终仍要用最小请求确认账号、端点和权限是否可用。 - 逐项核对接口能力。分别确认使用的是 Chat Completions、Responses 还是其他协议,并核对工具调用、视觉输入、流式事件、结构化输出和参数名称。原生 OpenAI 文档中的 Responses API、认证和错误说明只适用于原生 API;兼容实现可能只覆盖其中一部分。
- 用同一组样例横测。至少准备 10 个接近真实工作的样例,固定提示词、输入和输出要求,记录任务成功率、人工质量分、首字节延迟、总耗时、输入输出 token、错误类型和每个成功任务的成本。不要只测一个“看起来效果很好”的问题。
- 上线前保留替代方案。为主模型设置可验证的备用候选,但不要假设不同模型的参数、上下文和工具协议完全相同。切换前确认请求体能被备用模型接受,并记录实际使用的 model ID、请求 ID、最后事件和脱敏错误日志。
OpenAI 的模型选择资料强调,应使用代表性任务进行实验,并在质量、速度、输出用途和使用频率之间取舍。对于兼容 API,这个原则还应扩展为“在目标服务上实测”,因为同一个模型名称在不同服务中的端点、参数和可用能力可能不同。
model、base_url 和 API Key 分别解决什么问题
model 指定本次请求使用的模型;base_url 指定请求发往哪个 API 入口;API Key 用于认证和计量。三者缺一不可,但它们不能互相替代:model 写错通常表现为模型不存在或不可用,base_url 写错可能请求到了错误的服务,Key 错误则可能返回认证或权限错误。
最小配置可以抽象为:
base_url:从目标服务的接入文档复制,不要把完整请求路径和版本路径重复拼接。api_key:只放在服务端环境变量或安全密钥管理系统中,不要写进前端、仓库、镜像、截图和命令历史。model:从当前可用目录复制完整值,保留大小写、斜杠、点号和版本后缀。- 请求方法:先使用目标服务明确支持的最小端点,不要一开始就加入工具、图片、复杂结构化输出或流式参数。
如果使用 OpenAI 官方 SDK,官方文档展示了通过客户端调用 Responses API 的基本形状;接入兼容服务时,SDK 的请求形状可以作为参考,但实际 base URL、model ID、认证方式和支持字段仍需以兼容服务文档为准。参考:OpenAI SDK 与 CLI 文档、OpenAI API Reference 总览。
价格、速度和质量怎么比较:不要只看单价
模型价格通常按输入和输出 token 分开计算,兼容服务还可能存在不同的计费口径、缓存计费、最低计费单位或额外服务费用。价格页只能帮助你建立预算,不能替代真实任务成本核算。OpenAI 的成本优化文档指出,减少请求和 token、选择足够用的较小模型,通常有助于降低成本和延迟;但在兼容 API 上,具体价格应查看当前服务商价格页或账单。
建议用下面的公式核算:
单次请求估算成本 = 输入 token ÷ 1,000,000 × 输入单价 + 输出 token ÷ 1,000,000 × 输出单价 + 其他已明确列出的费用
公式中的价格和 token 数必须来自当前账单、响应 usage 字段或服务商文档;不要把示例数字当成任何具体模型的真实价格。更实用的指标是“每个成功任务成本”:如果便宜模型经常需要重试、人工修改或二次调用,最终成本未必更低。
横测时至少记录四类数据:一是任务质量,例如正确率、格式合规率和人工评分;二是速度,例如首字节延迟和完整响应时间;三是资源,例如输入、输出和缓存 token;四是稳定性,例如 4xx、429、5xx、超时和流式中断次数。OpenAI 的模型优化资料也提醒,模型行为会随模型快照和模型系列变化,因此应保留测试集,模型或目录变化后重新评估。
参考:OpenAI 成本优化指南、OpenAI 模型优化指南。
最小验证请求:先确认模型能用,再测试高级能力
第一轮验证只做一件事:发送短文本,确认认证、base URL、model ID 和基础响应都正常。不要在第一步同时加入工具调用、视觉输入、长上下文和流式处理。
使用兼容服务时,可以按服务商文档替换以下占位符:
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://YOUR-COMPATIBLE-ENDPOINT/v1"
)
response = client.chat.completions.create(
model="COPY_FROM_CURRENT_MODELS_LIST",
messages=[
{"role": "user", "content": "只回复:模型连接测试成功"}
]
)
print(response.choices[0].message.content)这段代码中的 endpoint 和 model 只是占位符,不能直接当作某个服务的固定地址或模型名。成功判定应包括:HTTP 状态正常、响应体能解析、返回的模型或请求信息符合预期、文本内容可读取,并且服务商账单或用量记录能够对应到这次请求。若服务商只实现 Responses API 或其他协议,应改用其文档中的最小示例,不要强行套用 Chat Completions。
第二轮再分别测试流式输出、结构化输出、工具调用、图片输入和较长上下文。每增加一种能力,都要单独记录请求体、响应体和错误体,避免把基础认证问题与高级参数兼容问题混在一起。
模型 ID 或能力不匹配时,按顺序排查
- 400 或模型参数错误:先确认 model 是否从当前目录复制,检查斜杠、大小写、版本后缀和请求字段;再确认该端点是否支持这个模型。
- 401:检查 API Key 是否为空、是否误用了其他服务的 Key,以及服务端是否真的读取了当前环境变量。
- 403:检查账号、组织、区域或项目权限;兼容服务的权限规则不能由 OpenAI 原生文档直接推断。
- 404:区分 base URL、请求路径和 model ID。不要把完整路径重复拼接,也不要把模型广场中的展示链接当成 API 请求路径。
- 429:查看响应体和
Retry-After,确认是限速、余额、并发还是上游容量问题;重试要设置次数上限、抖动和总截止时间。 - 超时或流式中断:记录请求 ID、最后收到的事件和脱敏日志,区分正常结束、达到输出上限、服务端错误与连接断开。普通重试不是断点续传,重试前还要判断请求是否具有副作用。
排查时不要先更换模型。先确认凭据、URL、路径、模型 ID、请求体和响应体,只有在这些要素都正确后,才比较模型能力或切换备用模型。
生产环境的稳妥做法:主模型、备用模型和重新核验
可以为稳定任务设置主模型和备用模型,但降级策略必须建立在测试结果上。备用模型至少要通过同一组最小请求和关键能力测试;如果主模型支持工具调用而备用模型不支持,不能只替换 model 字段就认为降级完成。
- 保存当前使用的 model ID、服务商、base URL、请求时间和请求 ID。
- 为模型目录、价格、限速和能力变化设置定期复核,而不是永久相信一次测试结果。
- 对高成本或高风险任务设置预算、输出上限和并发上限。
- 发生切换时记录原因,例如 429、超时、模型不可用或质量不达标。
- 变更模型后重新运行代表性测试,比较质量、延迟、token 和每个成功任务成本。
如果你只需要普通聊天,先从当前目录中选一个明确支持文本输入输出的候选;如果需要代码、视觉、工具调用或结构化输出,则把对应能力作为硬条件逐项验证。最终答案不是“哪个模型名字最好”,而是“哪个当前可调用候选在你的任务集上达到质量、速度、成本和稳定性的平衡”。
常见问题
OpenAI 兼容 API 选模型,能不能直接使用模型广场里的名称?
不能直接假设可以。应从目标服务当前模型目录、/models 返回结果或控制台复制准确 model ID,再用最小文本请求验证账号、端点和模型是否实际可调用。目录展示不等于当前账号一定有权限。
模型名称前面要不要加供应商前缀?
没有统一答案。有的兼容服务要求供应商前缀,有的使用原生模型 ID,也有服务使用自定义别名。不要自行添加或删除前缀,以目标服务当前文档和模型目录中的完整值为准。
模型越贵,是否一定更适合 OpenAI 兼容 API?
不一定。复杂推理、代码或高风险任务可能需要更强模型,但普通分类、提取和高频自动化往往更关注速度和单位任务成本。应使用固定样例比较质量、延迟、失败率和每个成功任务成本。
为什么模型支持 Chat Completions,却不一定支持 Responses?
OpenAI 兼容 API 可能只实现部分协议。模型可用性、端点支持、工具调用、视觉输入、流式事件和结构化输出是不同维度,必须按目标端点逐项验证,不能仅凭模型名称推断。
模型返回 404,是模型不存在还是 URL 写错?
两者都有可能。先分别检查 base URL、请求路径和 model ID,确认没有重复拼接版本路径,也没有把模型页面链接当成 API 路径;随后查看响应体和请求日志定位具体字段。
价格应该看模型目录还是账单?
模型目录和价格页可用于建立预估,但最终应以当前服务商价格说明、响应 usage 和账单为准。兼容服务的计费口径可能与原生 API 不同,示例价格不能当作实际报价。