在配置 Claude Code、Cursor、ChatGPT 客户端、Codex、LangChain、OpenAI SDK,或者各种 OpenAI-compatible API 网关时,很多开发者都会卡在同一个字段上:

Base URL

它看起来只是一个接口地址,但一旦填错,问题会非常分散:可能是 401 Unauthorized,也可能是 403 Forbidden404 Not Found429 Too Many Requests,还可能提示“模型不存在”“请求失败”“无法连接服务”。

更麻烦的是,不同工具对 Base URL 的要求并不完全一致。有的要求只填域名,有的要求带 /v1,有的配置项看起来像 Base URL,实际却要求完整 Endpoint。

这篇文章重点解决一个实际问题:

在 Claude Code、Cursor、OpenAI SDK、Anthropic API 网关或 OpenAI-compatible 服务里,Base URL 到底应该填到哪一层?


1. Base URL 是什么?

Base URL 可以理解为 API 请求的“基础地址”。

客户端不会只依赖 Base URL 发请求,它通常会在 Base URL 后面继续拼接具体接口路径,例如:

  • /chat/completions
  • /models
  • /embeddings
  • /messages
  • /v1/messages
  • /v1/chat/completions

以 OpenAI-compatible 风格接口为例,一个完整请求大概长这样:

https://api.example.com/v1/chat/completions

可以拆成三部分:

https://api.example.com      /v1        /chat/completions
        域名                 版本号          具体接口路径

所以,Base URL 不一定等于完整请求地址。

常见可能填写的形式有三种:

https://api.example.com
https://api.example.com/v1
https://api.example.com/v1/chat/completions

真正要判断的是:

当前工具会不会自动补 /v1
当前工具会不会自动补 /chat/completions/models/messages 这类具体路径?


2. Base URL、Endpoint、Model、API Key 的区别

在配置 Claude Code、Cursor 或 SDK 时,通常会遇到几个容易混淆的字段。

字段 作用 示例
Base URL API 请求的基础地址 https://api.example.com/v1
Endpoint 完整接口地址 https://api.example.com/v1/chat/completions
API Key 鉴权密钥 sk-xxx 或平台生成的密钥
Model 调用的模型名称 gpt-xxxclaude-xxx 或服务商模型名

最常见的错误是:

  • 把完整 Endpoint 填进 Base URL
  • 把 API Key 填进 Base URL
  • Base URL 对了,但模型名填错
  • 工具已经自动补 /v1,用户又手动写了一次 /v1

3. 三种常见填写方式

3.1 只填域名

有些工具或平台已经封装好了 API 版本和具体路径,只要求你填写服务域名。

示例:

https://api.example.com

如果工具内部会自动拼接 /v1/chat/completions,那么最终请求会变成:

https://api.example.com/v1/chat/completions

这是正常的。

但如果你手动写成:

https://api.example.com/v1

工具又自动补一次 /v1,最终可能变成:

https://api.example.com/v1/v1/chat/completions

这种情况通常会导致 404 Not Found

比较容易只填域名的场景:

场景 示例 注意点
文档明确写“服务域名” https://api.example.com 不要自行追加 /v1
配置项叫 HostDomain https://api.example.com 通常不是完整接口路径
本地代理已经映射好路径 http://localhost:3000 要确认代理内部如何转发

3.2 填到 /v1

很多 OpenAI-compatible 工具和 SDK 更常见的写法,是把 Base URL 填到版本层级。

示例:

https://api.example.com/v1

然后 SDK 或工具会继续拼接具体接口:

/chat/completions
/models
/embeddings

最终请求变成:

https://api.example.com/v1/chat/completions

OpenAI SDK 中也常见这种写法:

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.example.com/v1"
)

这里不要把 base_url 写成:

https://api.example.com/v1/chat/completions

因为 SDK 会根据你调用的方法自动拼接接口路径。

例如:

client.chat.completions.create(...)

SDK 会自己请求类似:

/v1/chat/completions

如果你提前把 /chat/completions 写进 base_url,就可能变成:

https://api.example.com/v1/chat/completions/chat/completions

3.3 填完整 Endpoint

完整 Endpoint 通常长这样:

https://api.example.com/v1/chat/completions

这种地址一般不应该填进 Base URL,除非配置项明确写的是:

  • Endpoint
  • Request URL
  • 接口地址
  • 完整请求地址

例如某些低代码工具、Webhook 工具、HTTP 请求组件,可能确实要求你填完整接口地址。

判断规则可以简单记成:

配置项名称 更可能填写 示例
Base URL / API Base / base_url 基础地址 https://api.example.com/v1
Endpoint / Request URL / 接口地址 完整路径 https://api.example.com/v1/chat/completions
Host / Domain / 服务域名 域名 https://api.example.com

4. Claude Code、Cursor、SDK 为什么填法不一样?

很多人会直接复制别人截图里的配置,但同一个服务,在不同工具里的填写方式可能不一样。

原因是:

不同工具自动拼接路径的程度不同。

一个 AI 工具发起请求时,至少需要这些信息:

Base URL
API Key
Model

其中:

  • Base URL 决定请求发到哪里
  • API Key 决定是否有权限
  • Model 决定调用哪个模型
  • Endpoint 决定实际访问哪个接口

有些工具内部已经写死了 OpenAI 风格路径,只让你替换前面的服务地址。

有些工具更底层,需要你填写带版本号的 API Base。

还有一些工具为了兼容 OpenAI、Anthropic、本地模型网关,会在不同模式下使用不同的路径规则。

所以同一个 API 服务,可能在 A 工具里填:

https://api.example.com

在 B 工具里填:

https://api.example.com/v1

这并不一定是谁错了,而是两个工具的路径拼接规则不同。


5. OpenAI-compatible 和 Anthropic API 网关的差异

OpenAI-compatible 通常表示请求格式尽量兼容 OpenAI API,例如:

/v1/chat/completions
/v1/models

Anthropic API 或 Claude Code 相关配置中,则可能涉及另一类路径,例如:

/v1/messages

或者工具内部封装后的 Anthropic-compatible 接口。

需要注意:

项目 OpenAI-compatible Anthropic / Claude 相关接口
常见聊天接口 /v1/chat/completions /v1/messages
常见模型名 gpt-xxx 或服务商模型名 claude-xxx 或服务商模型名
SDK 参数 常见 base_url 取决于工具或 SDK
鉴权方式 常见 Bearer Key 通常也需要 Key,但以文档为准

第三方兼容网关不等于官方服务。实际 Base URL、模型名、额度、线路、鉴权方式,都应该以服务商文档或控制台为准。

不要只看“兼容 OpenAI”或“兼容 Claude”这几个字,就默认路径、模型名、权限完全一致。


6. 推荐的配置顺序

为了减少排错成本,建议不要一开始就把所有参数都填上。

更稳的顺序是:

先确认接口类型
再确认 Base URL 层级
再验证 API Key
再确认模型名
最后配置高级参数

也就是:

1. 判断是 OpenAI 官方、OpenAI-compatible,还是 Anthropic-compatible
2. 判断工具要求域名、/v1,还是完整 Endpoint
3. 用最小请求测试接口连通性
4. 再填入 Cursor、Claude Code、Codex 或 SDK
5. 最后调整温度、上下文、代理、并发等参数

很多配置失败并不是 Base URL 本身复杂,而是所有参数一起改,最后无法判断到底是哪一项出错。


7. 用 curl 验证 OpenAI-compatible 接口

如果使用 OpenAI-compatible 服务,可以先测试模型列表接口。

curl https://api.example.com/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

如果接口正常,通常会返回模型列表。

如果模型列表接口不可用,也可以直接发一个最小聊天请求:

curl https://api.example.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_MODEL_NAME",
    "messages": [
      {
        "role": "user",
        "content": "ping"
      }
    ]
  }'

这里需要替换三项:

https://api.example.com/v1
YOUR_API_KEY
YOUR_MODEL_NAME

如果这个请求能正常返回结果,说明:

  • Base URL 大概率正确
  • API Key 可以通过鉴权
  • 模型名基本可用
  • 服务本身可访问

然后再把配置迁移到 Cursor、Claude Code、Codex 或其他客户端里,会更容易定位问题。


8. 用 curl 验证 Anthropic-compatible 接口

如果你配置的是 Claude Code 或 Anthropic-compatible 网关,需要特别注意接口路径和请求格式。

常见 Anthropic Messages API 风格可能类似:

curl https://api.example.com/v1/messages \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_MODEL_NAME",
    "max_tokens": 128,
    "messages": [
      {
        "role": "user",
        "content": "ping"
      }
    ]
  }'

但不同兼容网关的鉴权 Header、版本字段、路径规则可能不同。

所以这里不要机械照抄,要重点确认服务商文档中的几项:

Base URL
Endpoint
鉴权 Header
模型名
是否需要版本 Header

如果服务商提供的是 OpenAI-compatible Claude 接入方式,那也可能继续使用:

/v1/chat/completions

而不是:

/v1/messages

最终以服务商文档为准。


9. 环境变量配置示例

很多命令行工具和 SDK 支持通过环境变量读取配置。

常见 OpenAI-compatible 配置形式:

export OPENAI_API_KEY="YOUR_API_KEY"
export OPENAI_BASE_URL="https://api.example.com/v1"

有些工具使用的是:

export OPENAI_API_BASE="https://api.example.com/v1"

或者:

export BASE_URL="https://api.example.com/v1"

Claude 或 Anthropic 相关工具可能使用:

export ANTHROPIC_API_KEY="YOUR_API_KEY"
export ANTHROPIC_BASE_URL="https://api.example.com"

具体变量名要看工具文档。

需要重点确认两件事:

1. 工具实际读取的是哪个环境变量名
2. 该变量要求填写域名、/v1,还是完整 Endpoint

如果配置了多个环境变量,还要注意优先级。例如:

export OPENAI_BASE_URL="https://api.a.com/v1"
export OPENAI_API_BASE="https://api.b.com/v1"

不同工具可能读取不同变量,导致你以为改了配置,实际请求还是发到了旧地址。


10. 常见报错与排查方法

Base URL 配错时,错误信息不一定直接提示“URL 错误”。可以先根据状态码排查。

报错 优先检查 常见原因 修正方向
401 Unauthorized API Key Key 错误、没填、格式不对 重新生成 Key,确认工具是否自动加 Bearer
403 Forbidden 权限 服务未开通、账号无权限、区域或策略限制 检查账号状态、模型权限、服务权限
404 Not Found Base URL / Endpoint / Model 多写 /v1、少写 /v1、路径写太长、模型名不存在 对照工具规则和服务商文档
429 Too Many Requests 频率和额度 请求太快、并发过高、额度不足 降低频率,检查额度和限流规则

其中 404 最容易误判。

它可能是 Base URL 错了,例如:

https://api.example.com/v1/v1/chat/completions

也可能是 Endpoint 拼重复了:

https://api.example.com/v1/chat/completions/chat/completions

还可能是模型名不支持。

例如你配置:

Base URL: https://api.example.com/v1
Model: gpt-4o-mini

如果第三方服务并不支持 gpt-4o-mini 这个模型名,即使 Base URL 完全正确,也可能返回模型不存在或 404

所以排查 404 时,不要只看 URL,也要同时检查模型名。


11. 五个高频误区

11.1 重复写 /v1

错误情况:

工具自动补 /v1
用户又填写 https://api.example.com/v1
最终变成 https://api.example.com/v1/v1/...

如果文档要求填写服务域名,应填写:

https://api.example.com

而不是:

https://api.example.com/v1

11.2 把完整接口路径当成 Base URL

错误示例:

https://api.example.com/v1/chat/completions

如果配置项叫 Base URL,多数情况下应填写:

https://api.example.com/v1

具体的 /chat/completions 通常由 SDK 或工具自动拼接。


11.3 只改 Base URL,不改模型名

第三方 OpenAI-compatible 或 Anthropic-compatible 服务不一定支持官方模型名。

有些服务会使用自定义模型名或模型别名。

Base URL 对了,但模型名错了,请求仍然会失败。

建议直接到服务商控制台或文档确认可用模型名,不要凭经验填写。


11.4 把 API Key 当成 Base URL

Base URL 是网址,通常以:

https://

开头。

API Key 是密钥,通常是一串字符,例如:

sk-...

两者不能混用。


11.5 把一个工具的配置套到所有工具

同一个 API 服务,在不同工具里可能有不同填法:

工具类型 可能要求
SDK 通常填 .../v1
桌面客户端 可能填域名或 /v1
浏览器插件 可能填完整 Endpoint
命令行工具 可能通过环境变量读取
本地代理 取决于代理如何映射路径

不要只复制别人的配置截图,关键要看当前工具如何拼接路径。


12. 不同场景下怎么填

场景 填写建议 容易犯错点
OpenAI 官方 API + SDK 通常使用 https://api.openai.com/v1 不要写完整 /chat/completions
OpenAI-compatible 第三方接口 + SDK 通常使用服务商提供的 .../v1 地址 模型名不一定等于 OpenAI 官方模型名
Cursor 等可视化工具要求 OpenAI Base URL 优先看是否要求带 /v1 重复 /v1 很常见
工具要求 API Host 或服务域名 通常只填域名 不要自行追加版本号
工具要求 Endpoint URL 可能需要完整接口路径 不要把 Endpoint 和 Base URL 混用
Claude Code 接入自定义网关 按网关文档确认 Base URL、Endpoint、模型名和鉴权方式 不要默认等同于 Anthropic 官方接口
本地代理或自建网关 按网关暴露的路径填写 注意网关是否已经映射 /v1

一个实用判断规则是:

如果工具会拼具体接口路径,Base URL 就不要写到 /chat/completions。
如果工具会自动补 /v1,Base URL 就不要再写 /v1。
如果工具什么都不补,才需要填写更完整的 Endpoint。

13. 最小自检清单

配置前可以按这个清单检查:

1. 当前接口是 OpenAI 官方、OpenAI-compatible,还是 Anthropic-compatible?
2. 工具配置项叫 Base URL、Endpoint,还是 Host?
3. 工具是否自动补 /v1?
4. 工具是否自动补 /chat/completions 或 /messages?
5. API Key 是否正确?
6. 鉴权 Header 是否符合要求?
7. 模型名是否是服务商支持的模型名?
8. 当前账号是否有该模型权限?
9. 是否触发额度或频率限制?

建议先用 curl 跑通最小请求,再填入工具。

不要一开始就同时配置代理、插件、函数调用、上下文长度、并发、温度等高级参数。


14. 总结

Base URL 不是越完整越好,而是要填到工具期望的层级。

配置 Claude Code、Cursor、Codex、OpenAI SDK 或自定义 API 网关时,可以按这个顺序判断:

先看接口类型:OpenAI-compatible 还是 Anthropic-compatible
再看配置项名称:Base URL、Endpoint 还是 Host
再看工具规则:是否自动补 /v1 和具体接口路径
然后验证:API Key、模型名、权限、额度和限流

如果只记一句话:

Base URL 的正确写法,取决于工具会帮你自动拼接多少路径。

如果需要了解 ClaudeAPI 这类第三方 Claude API 兼容接入服务,可看作者主页,具体配置与可用能力以官网最新说明为准。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐