快速开始
如何配置 Base URL
说明 Base URL 是什么,如何在 cURL、OpenAI SDK、Codex CLI 和兼容客户端中配置 OfApp.cn,并避免漏写或重复拼接 /v1。
Base URL 决定请求发往哪个 API 入口。API Key 决定“你是谁”,模型名决定“调 用哪个模型”,Base URL 决定“请求去哪里”。很多接入问题不是模型不可用,而 是最终 URL 拼错了。
使用 OfApp.cn 时,本站教程默认把 Base URL 当作完整版本化地址使用:
export OPENAI_BASE_URL="https://api.ofapp.cn/v1"如果某个工具会自动追加 /v1,则应按照工具说明填写
https://api.ofapp.cn,避免最终请求变成
https://api.ofapp.cn/v1/v1/...。具体写法以工具当前文档和 OfApp.cn 官方
说明为准。
| 项目 | 内容 |
|---|---|
| 阅读时间 | 约 7 分钟 |
| 更新时间 | 2026-07-03 |
| 适合人群 | 第一次接入 OfApp.cn 的开发者、配置 OpenAI SDK 的团队、使用 Codex CLI 或兼容客户端的人 |
| 核心收益 | 弄清 Base URL、API Key、模型名和端点路径的分工,避免漏写 /v1 或重复拼接 /v1/v1 |
| 你会得到 | 配置原则、请求流向图、填写决策表、环境变量模板、Models API 验证、SDK 示例、客户端排错和上线前检查 |
| 不适合做什么 | 替代 OfApp.cn 控制台里的模型、价格、额度和能力确认 |
| 原则 | 说明 |
|---|---|
| 明确最终请求 URL | 你要知道实际请求会落到哪个端点,例如 /v1/chat/completions。 |
只保留一处 /v1 |
环境变量、SDK 配置和工具配置里不要重复追加版本路径。 |
不在末尾加 / |
避免拼出双斜杠,排错时更清晰。 |
| 放进环境变量 | 本地、测试、生产可分别配置,代码不需要写死服务商地址。 |
| 与 Key 和模型分开 | Base URL 不是 API Key,也不是模型名。三者分别检查。 |
| 先最小请求验证 | cURL 成功后,再接 SDK、Codex 或其他客户端。 |
应该填哪一种
Section titled “应该填哪一种”不同工具对 Base URL 的定义不完全一样。配置前,先确认它要你填写“完整版本 化 Base URL”,还是只填写“服务商 host”。
| 场景 | 推荐填写 | 说明 |
|---|---|---|
| 本站 cURL 示例 | https://api.ofapp.cn/v1 |
后面直接拼 /chat/completions 等端点。 |
| OpenAI JavaScript SDK | https://api.ofapp.cn/v1 |
通过 baseURL 传入完整入口。 |
| OpenAI Python SDK | https://api.ofapp.cn/v1 |
通过 base_url 传入完整入口。 |
会自动追加 /v1 的客户端 |
https://api.ofapp.cn |
避免形成 /v1/v1。 |
| 自己写封装函数 | 统一读取环境变量 | 不要在多个函数里手写不同地址。 |
如果不确定,打印或记录脱敏后的最终请求 URL:只看域名、路径和状态码,不打 印完整 Authorization header。
最终 URL 自检
Section titled “最终 URL 自检”配置 Base URL 时,不要只看环境变量本身,还要看 SDK 或客户端拼出来的最终 URL。下面这张表能快速定位多数路径问题。
| 你配置的 Base URL | 代码或工具追加的端点 | 最终 URL 是否正常 |
|---|---|---|
https://api.ofapp.cn/v1 |
/chat/completions |
正常:https://api.ofapp.cn/v1/chat/completions |
https://api.ofapp.cn |
/v1/chat/completions |
正常:https://api.ofapp.cn/v1/chat/completions |
https://api.ofapp.cn/v1 |
/v1/chat/completions |
异常:会变成 /v1/v1/chat/completions |
https://api.ofapp.cn |
/chat/completions |
异常:缺少 /v1 |
https://api.ofapp.cn/v1/ |
/chat/completions |
不推荐:可能拼出双斜杠,排错更乱 |
环境变量模板
Section titled “环境变量模板”把 Base URL、API Key 和模型名分开配置,排错时会轻松很多。
export OPENAI_BASE_URL="https://api.ofapp.cn/v1"export OPENAI_API_KEY="sk-xxxx"export OPENAI_MODEL="以控制台可用模型为准".env.example 可以提交到仓库,但不要提交真实 .env:
OPENAI_BASE_URL=https://api.ofapp.cn/v1OPENAI_API_KEY=sk-xxxxOPENAI_MODEL=以控制台可用模型为准模型名、可用能力和价格请以 OfApp.cn 控制台或官方文档为准,不要凭旧示例猜 测。
Models API 验证
Section titled “Models API 验证”接聊天、图像、SDK 或 Codex 前,可以先验证入口和 Key 是否连通。Models API 不需要你先猜模型名,适合作为第一步连通性检查。
curl "$OPENAI_BASE_URL/models" \ -H "Authorization: Bearer $OPENAI_API_KEY"如果这一步失败,优先检查三件事:环境变量是否生效、Base URL 是否只包含一
次 /v1、API Key 是否复制完整。模型能力、可用范围和价格请回到 OfApp.cn 控
制台或官方文档确认。
cURL 验证
Section titled “cURL 验证”接 SDK 前,先用 cURL 验证最小请求。这样可以把“连接问题”和“业务代码问题” 分开。
curl "$OPENAI_BASE_URL/chat/completions" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "'"$OPENAI_MODEL"'", "messages": [{"role": "user", "content": "测试 Base URL 是否可用。"}] }'如果返回 404,先检查最终 URL 是否变成了
https://api.ofapp.cn/v1/v1/chat/completions 或缺少 /v1。
SDK 写法
Section titled “SDK 写法”JavaScript SDK 使用 baseURL,Python SDK 使用 base_url。两者都应从环境
变量读取,而不是在业务函数里写死。
import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, baseURL: process.env.OPENAI_BASE_URL,});import osfrom openai import OpenAI
client = OpenAI( api_key=os.environ["OPENAI_API_KEY"], base_url=os.environ["OPENAI_BASE_URL"],)如果 SDK 请求失败,先不要改复杂业务逻辑。回到 cURL 最小请求确认 Base URL、 API Key 和模型名都可用。
Codex 和客户端
Section titled “Codex 和客户端”Codex CLI、Claude Code、OpenClaw、桌面客户端或聚合客户端通常都有自己的 Base URL 配置入口。配置思路相同,但字段名可能不同。
| 工具类型 | 你要确认什么 |
|---|---|
| Codex CLI | 配置项是否要求 OpenAI Base URL,以及是否需要 /v1。 |
| Claude 兼容工具 | 它使用的是 OpenAI 风格端点,还是 Anthropic Messages 风格端点。 |
| 桌面聊天客户端 | UI 是否会自动拼接 /v1,以及 Key 是否存到本地。 |
| 自写脚本 | Base URL、Key、模型名、超时和重试是否都是配置项。 |
不要把不同协议混在一起排查。OpenAI 风格的 /v1/chat/completions 和
Claude/Anthropic 风格的 /v1/messages 请求体不同,路径不同,错误表现也
可能不同。
常见错误排查
Section titled “常见错误排查”| 现象 | 常见原因 | 处理 |
|---|---|---|
| 404 Not Found | 缺少 /v1,或重复拼接 /v1/v1 |
打印最终请求路径,对照本文表格。 |
| 401 Unauthorized | Key 缺失、复制错、环境变量没生效 | 重新读取环境变量,确认没有空格。 |
| 模型不存在 | 模型名不是当前账号可用模型 | 从 OfApp.cn 控制台复制,别猜。 |
| 本地成功生产失败 | 部署平台没有配置同名环境变量 | 检查 Secret 名称和部署日志。 |
| SDK 成功但客户端失败 | 客户端自动改写路径或协议不一致 | 查看客户端实际请求 URL 和端点类型。 |
OPENAI_BASE_URL只出现一处/v1。- API Key 只在服务端、终端或 Secret 中保存。
- 生产环境和本地环境分别配置,不共用测试 Key。
- 日志只记录状态码、端点和脱敏错误,不记录完整 Key。
- cURL 最小请求成功后,再接 SDK、Codex 或客户端。
- 代码里没有多个硬编码 Base URL。
- 模型名、能力和价格以 OfApp.cn 控制台或官方文档为准。
- OfApp.cn:用于确认 OfApp.cn 的统一入口、API Key、Base URL、Genius Playground 和相关生态入口。
- OfApp.cn API 文档:用于确认 OpenAI/Codex 生态 Base URL、Models API 验证方式和工具自动追加
/v1时的填写边界。 - OfApp.cn Genius Playground:用于确认网页端 Key、聊天、图像和参数入口。
- OpenAI CLI 文档:用于确认 OpenAI CLI 可以通过
OPENAI_BASE_URL指向兼容端点。
Base URL 要不要写模型名?
Section titled “Base URL 要不要写模型名?”不要。模型名放在请求体里的 model 字段中,具体可用模型以 OfApp.cn 控制
台为准。
Base URL 末尾要不要加斜杠?
Section titled “Base URL 末尾要不要加斜杠?”建议不要加。统一写成 https://api.ofapp.cn/v1,后续路径由 SDK 或请求代码
拼接,排查时也更容易发现双斜杠和重复 /v1。
为什么有的工具只填 https://api.ofapp.cn?
Section titled “为什么有的工具只填 https://api.ofapp.cn?”有些工具会自动追加 /v1。如果你再手动填写 /v1,最终路径可能变成
/v1/v1。遇到这种工具,应按它的说明填写 host,并用最小请求验证。
可以为不同环境使用不同 Base URL 吗?
Section titled “可以为不同环境使用不同 Base URL 吗?”可以。把 Base URL 放在环境变量中,本地、测试和生产环境分别配置,代码保持 一致。
404 一定是 OfApp.cn 不可用吗?
Section titled “404 一定是 OfApp.cn 不可用吗?”不一定。404 更常见的原因是路径错误、端点不匹配或重复 /v1。先确认最终请
求 URL,再检查 Key、模型名和服务状态。
- 如何获取 OfApp.cn API Key:先准备密钥。
- OpenAI-compatible API 快速开始:验证最终请求。
- 如何用 OpenAI SDK 接入:把 Base URL 放进 SDK。
- Codex CLI 接入 OfApp.cn:把 Codex 指向统一入口。
- 404 Not Found:排查路径和
/v1问题。 - 401 Unauthorized:排查 Key 和鉴权问题。
本站 API 示例统一使用 https://api.ofapp.cn/v1。配置 Base URL 时,关键是
确认最终请求 URL:不要漏写 /v1,也不要重复拼接 /v1/v1。把 Base URL、
API Key 和模型名放进环境变量,用 cURL 最小请求验证,再接 SDK、Codex CLI、
兼容客户端和自动化脚本。