OpenAI兼容接口三项参数怎么填:base_url、model和API Key
简答:OpenAI 兼容接口中,base_url 填服务商提供的接口根地址,model 填该平台模型列表返回的 ID,API Key 填同一账号创建的密钥;再检查路径、权限和限流。
定义:OpenAI 兼容接口通常指使用相近请求格式、认证方式和资源路径,使现有客户端或代码能够连接不同服务端的接口。
先按这张表填写 OpenAI 兼容接口
更新于 2026 年 10 月 22 日。本文帮你完成配置 OpenAI 兼容接口前的三项核对:确认接口根地址、复制真实模型 ID、使用匹配的 API Key。服务商没有明确说明的字段,不要凭经验补写。
| 字段 | 应填写什么 | 不要填写什么 | 核对方法 |
|---|---|---|---|
base_url | 服务商提供的接口根地址,是否包含 /v1 以客户端和服务商文档为准 | 通常不要直接填完整的 /chat/completions 路径 | 确认客户端最终请求是否会重复拼接版本路径 |
model | 平台实际开放的模型 ID | 中文名称、网页标题、厂商名称或自行猜测的名称 | 优先从服务商控制台或 /v1/models 返回结果复制 |
API Key | 同一服务商控制台创建的密钥原文 | 不要把已经带上的 Bearer 再粘贴进密钥字段 | 确认密钥属于当前 base_url 对应的账号和权限体系 |
一眼照填的占位示例是:base_url=https://api.example.com/v1、model=从模型列表复制的真实ID、API Key=控制台复制的密钥原文。这里的域名和模型值只是格式占位,不代表可直接调用的服务。
OpenAI 官方接口文档把模型列表请求写成 GET /v1/models,聊天请求写成 POST /v1/chat/completions;兼容接口是否完全支持这些路径,仍应以对应服务商文档为准,可参考模型列表接口说明和聊天请求接口说明。
按最终请求地址判断 /v1 是否重复
base_url 最容易出错的地方,是把接口根地址、版本路径和具体资源路径混在一起。可以先画出最终请求地址:
- 接口根地址:服务商提供的主机和版本前缀,例如
https://api.example.com/v1。 - 模型列表资源:在根地址后拼接
/models,形成.../v1/models。 - 聊天资源:在根地址后拼接
/chat/completions,形成.../v1/chat/completions。
如果客户端会自动添加 /v1,你填入的地址就可能不应再包含 /v1;如果客户端只是在 base_url 后拼接资源路径,则通常需要由你确认版本前缀。没有客户端官方说明时,不能把“必须带”或“绝对不能带”作为通用规则。
排查时查看客户端日志或开发者工具中的最终 URL。若出现 /v1/v1/,优先检查版本路径是否被填写两次;若出现 /chat/completions/chat/completions,说明根地址中已经包含资源路径,或客户端又自动拼接了一次。除非客户端文档明确要求完整端点,否则优先填接口根地址。
本站的AI 搜索可见性审计和AI 引用观察记录协议都强调先固定可复查的输入和输出;配置接口时也应记录“填写值、最终 URL、返回状态码”三项,而不是只看客户端界面是否保存成功。
用 curl 先验证模型列表,再验证最小请求

下面示例运行环境为 Linux、macOS 或已安装 curl 的终端。先把密钥放进当前会话环境变量,不要把真实密钥写进脚本、网页、公开仓库或截图。
export BASE_URL='https://api.example.com/v1'
export API_KEY='把控制台复制的密钥放在这里'
export MODEL_ID='把模型列表返回的 id 放在这里'
curl "$BASE_URL/models" \
-H "Authorization: Bearer $API_KEY"如果服务商提供模型列表接口,先观察返回 JSON 中的 id 字段,再把完整值赋给 MODEL_ID。不要把展示名称、中文别名或截断后的字符串当作模型 ID。官方模型列表示例使用 Authorization: Bearer 认证,并返回模型对象列表,可对照模型列表参考。
确认模型列表请求成功后,再发送一条非流式短请求。这里使用双引号包裹 JSON 字符串,是为了让 shell 展开 $MODEL_ID;如果用单引号包住整个 JSON,变量会按字面量发送,容易得到模型不存在的错误。
curl "$BASE_URL/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d "{\"model\":\"$MODEL_ID\",\"messages\":[{\"role\":\"user\",\"content\":\"请只回复:配置成功\"}]}"官方聊天接口示例同样使用 JSON 请求体、model 和 messages 字段;curl 的 --data 会按命令行提供的内容发送数据,因此引号和变量展开必须先在本地 shell 中确认。可分别参考聊天接口参考与curl 手册。
如果服务商没有提供模型列表接口,原文未说明时不要假设一定存在;改为从控制台的模型详情或服务商接口文档复制模型 ID,并保留一条能复现的最小请求。
按返回结果排查 401、403、404、429 和 model not found
| 现象 | 优先检查 | 下一步 |
|---|---|---|
401 Unauthorized | API Key 是否为空、过期、复制不完整,Authorization 是否重复添加 Bearer | 重新生成或复制密钥,并确认它属于当前 base_url 的账号 |
403 Forbidden | 密钥身份是否有效,但没有访问该模型或接口的权限 | 检查账号权限、项目范围和模型访问资格 |
404 Not Found | base_url、版本路径或资源路径是否拼接错误 | 记录最终 URL,重点检查 /v1 重复、缺失和完整端点重复 |
429 Too Many Requests | 请求频率、并发量或账号限流 | 降低请求频率;若响应提供 Retry-After,按其要求等待 |
model not found | model 是否为真实 ID,或该 Key 是否有模型权限 | 重新查询模型列表并复制 id,确认三项参数属于同一服务体系 |
状态码只能帮助定位方向,不能单独证明具体配置项。MDN 对 401 的定义是缺少有效认证凭据,对 403 的定义是服务器理解身份但拒绝访问;404 表示请求资源不存在,429 表示请求过多。可查看401 说明、403 说明、404 说明和429 说明。
建议固定以下排查顺序:第一步看最终请求 URL;第二步单独验证 API Key;第三步查询或确认模型 ID;第四步确认账号权限;第五步检查频率和服务端状态。这样可以避免在模型名、路径和密钥之间反复猜测。
接入前的五项安全与兼容性自查
- 同一服务体系:base_url、model 和 API Key 应来自同一服务商、同一账号或同一模型权限体系。把一个平台的地址、另一个平台的密钥和第三个平台的模型名混用,不能视为有效配置。
- 密钥不进前端:浏览器代码、公开仓库、日志、截图和聊天记录都不应暴露真实 API Key。前端调用应经过你控制的后端接口,并由后端保存密钥。
- 先非流式后流式:首次验收先使用短文本和非流式请求,确认认证、路径、模型和 JSON 格式都正常,再测试流式输出。
- 记录版本与原文:模型 ID、路径规则和字段支持可能变化,保存查阅日期、服务商文档地址和实际响应,后续更换客户端时更容易复现。
- 不要扩大结论:一个兼容接口能处理聊天请求,不代表它支持图片、工具调用、嵌入、流式或所有参数;能力必须逐项以接口文档和实际响应确认。
如果你还在做 AI 内容或搜索实验,可继续查看GEO 内容审计清单,把“请求是否成功”和“结果是否符合内容目标”分成两类指标记录。
常见问题
OpenAI 兼容接口的 base_url 到底要不要加 /v1?
不能一概而论。先确认客户端是否自动拼接 /v1,再查看最终请求 URL;出现 /v1/v1/ 时通常是重复填写。
model 应该填模型名称还是模型 ID?
应填平台实际接受的模型 ID,优先从模型列表返回的 id 或服务商控制台复制,不要填中文展示名或网页标题。
API Key 前面要不要手动加 Bearer?
通常字段只填密钥原文,客户端会自动生成 Authorization: Bearer 请求头;只有客户端明确要求完整认证字符串时才按其说明填写。
为什么三个参数都填了还是 model not found?
优先检查模型 ID 是否拼写完整、是否属于当前接口,以及 API Key 是否拥有该模型权限;地址、密钥和模型不匹配也会导致此错误。
出现 401 和 403 时应该先查什么?
401 先查密钥是否有效和认证头格式,403 再查账号是否有接口或模型权限;不要先修改模型名称。