/v1/chat/completions、/v1/responses、/v1/messages 到底有什么区别?模型不可用很多时候是端点选错了
你的工具类型应该使用OpenAI-compatible API 工具OpenAI Responses API 工具Anthropic / Claude 原生工具如果模型明明存在,却提示不可用,不要只盯着模型名。模型名 + endpoint + 请求 schema这三者是否一致。很多所谓“模型不可用”的问题,本质上只是端点选错了。
/v1/chat/completions、/v1/responses、/v1/messages 到底有什么区别?模型不可用很多时候是端点选错了
最近很多人在接 AI API、中转站、OpenAI 兼容接口、Claude API 的时候,会遇到一个很典型的问题:
明明模型列表里有这个模型,但调用的时候提示 model unavailable、endpoint not supported、invalid request body,或者 Claude 模型在 A 工具能用,在 B 工具不能用。
很多人第一反应是:
- 是不是模型挂了?
- 是不是 Key 不对?
- 是不是服务商不支持?
- 是不是中转站有问题?
但实际排查下来,很大一部分不是模型问题,而是 API 端点选错了。
尤其是这三个端点,最容易混:
/v1/chat/completions
/v1/responses
/v1/messages
它们不是同一个东西,也不是随便换着用的。
一句话总结:
OpenAI 兼容客户端 → /v1/chat/completions
OpenAI Responses API 客户端 → /v1/responses
Anthropic / Claude 原生客户端 → /v1/messages
下面用最实用的方式讲清楚。
先看结论:三个端点怎么选?
| 端点 | 属于哪套生态 | 适合什么场景 | 请求格式特点 |
|---|---|---|---|
/v1/chat/completions |
OpenAI 兼容聊天接口 | 大多数第三方工具、聊天 UI、Cursor 类客户端、LiteLLM、FastGPT、OpenAI SDK 兼容模式 | messages: [{role, content}] |
/v1/responses |
OpenAI 新版 Responses API | 新版 OpenAI 工具调用、多模态、reasoning、agent 工作流 | input、tools、结构化 response item |
/v1/messages |
Anthropic Claude 原生接口 | Claude 原生 SDK、Anthropic Messages API 工具 | 顶层 system + messages,Anthropic schema |
如果你不知道该选哪个,优先选 /v1/chat/completions。
因为现在绝大多数所谓“OpenAI-compatible API”“自定义 OpenAI Base URL”“OpenAI 兼容中转站”的工具,默认都是走 Chat Completions。
最常见错误:把“模型”和“端点”混在一起
很多人会以为:
我用的是 Claude 模型,那是不是一定要调
/v1/messages?
不一定。
如果你是在一个 OpenAI 兼容网关 里调用 Claude 模型,比如工具配置里填的是:
OPENAI_BASE_URL=https://crazyrouter.com/v1
那客户端通常会自动请求:
/v1/chat/completions
这个时候即使模型是 Claude,也可能应该走 OpenAI 兼容格式,而不是 Anthropic 原生 /v1/messages。
反过来也一样。
如果一个工具本身是 Anthropic SDK,代码里写死了 Claude Messages API 格式,那你只改模型名、不改端点,也可能还是失败。
记住这个公式:
模型名 + API 端点 + 请求体格式 必须匹配
只要其中一个不匹配,就可能表现为“模型不可用”。
1. /v1/chat/completions:最常用的 OpenAI 兼容聊天接口
这是目前兼容性最广的接口。
典型请求长这样:
curl https://crazyrouter.com/v1/chat/completions \
-H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "用一段话解释 API 端点。"}
]
}'
它的核心字段是:
{
"model": "模型名",
"messages": [
{"role": "user", "content": "用户输入"}
]
}
适合这些情况:
- 工具说自己支持 OpenAI-compatible API;
- 配置项叫
OPENAI_BASE_URL、base_url、OpenAI Base URL; - 使用 OpenAI SDK 的兼容模式;
- 请求体里是
messages数组; - 配置 Cursor、Cherry Studio、Chatbox、FastGPT、LiteLLM、各种聊天 UI;
- 想用一个 OpenAI 兼容接口调用多个模型。
大多数用户接中转站,默认就该用这个。
2. /v1/responses:OpenAI 新版 Responses API
/v1/responses 是 OpenAI 新一代接口,不只是简单聊天,它更偏向统一处理:
- 文本输出;
- 工具调用;
- 多模态输入;
- reasoning 输出;
- 结构化结果;
- agent 工作流。
典型请求是这样:
curl https://crazyrouter.com/v1/responses \
-H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"input": "解释一下 chat completions 和 responses 的区别。"
}'
注意,它常用的是:
{
"model": "模型名",
"input": "用户输入"
}
而不是传统的:
{
"messages": []
}
什么时候用 /v1/responses?
- 工具文档明确写了 Responses API;
- 配置里明确提到
/responses; - SDK 或工具要求
input字段; - 你需要 OpenAI 新版工具调用、reasoning、多模态 response item;
- 你确认当前模型和线路支持 Responses API。
如果你的工具只是普通 OpenAI 兼容聊天工具,不要强行换成 /v1/responses。
3. /v1/messages:Anthropic Claude 原生 Messages API
/v1/messages 是 Claude / Anthropic 原生风格的接口。
典型请求:
curl https://crazyrouter.com/v1/messages \
-H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": "You are a helpful assistant.",
"messages": [
{"role": "user", "content": "解释 Claude Messages API。"}
]
}'
它和 OpenAI Chat Completions 最大区别是:
system通常是顶层字段;messages的内容结构是 Anthropic 风格;- 工具调用、content block、图片输入等格式和 OpenAI 不完全一样。
什么时候用 /v1/messages?
- 你使用的是 Anthropic SDK;
- 工具文档明确写 Claude Messages API;
- 请求体里有顶层
system; - 工具要求 Anthropic 原生 schema;
- 你不是在走 OpenAI-compatible 模式,而是在走 Claude-native 模式。
重点:
不要因为模型名字里有 Claude,就一定用
/v1/messages。
如果客户端是 OpenAI 兼容客户端,Claude 模型也可能应该通过 /v1/chat/completions 调用。
Base URL 和完整 endpoint 不要混
还有一个特别常见的坑:
很多工具让你填的是 Base URL,不是完整 endpoint。
如果工具配置项叫:
Base URL
OPENAI_BASE_URL
base_url
OpenAI API Base
通常应该填:
https://crazyrouter.com/v1
而不是:
https://crazyrouter.com/v1/chat/completions
因为 SDK 会自己在后面拼:
/chat/completions
如果你把完整 endpoint 填进 Base URL,最后可能变成:
https://crazyrouter.com/v1/chat/completions/chat/completions
这种就会直接 404 或报不支持。
简单规则:
配置项叫 Base URL → 通常填到 /v1 为止
配置项叫 Endpoint / Full URL → 按工具要求填完整路径
常见错误对照表
| 错误做法 | 可能现象 | 正确处理 |
|---|---|---|
把 Chat Completions 的 messages 请求发到 /v1/responses |
invalid request body、字段不识别 | 改用 /v1/chat/completions,或把 body 改成 Responses API 格式 |
把 Anthropic 的 system + messages 请求发到 /v1/chat/completions |
schema mismatch、模型不可用 | 改用 /v1/messages,或转换成 OpenAI messages 格式 |
OpenAI SDK 里硬填 /v1/messages |
SDK 拼路径/解析响应失败 | OpenAI 兼容模式用 /v1 + Chat Completions |
Base URL 少了 /v1 |
404、unknown route | 填 https://crazyrouter.com/v1 |
Base URL 填成 /v1/chat/completions |
路径重复 | Base URL 只填到 /v1 |
| API endpoint 后面加 UTM | 认证或路由异常 | UTM 只能加在人点击的网页链接上,不能加 API endpoint |
Crazyrouter 推荐配置
如果你是在普通 OpenAI 兼容工具里配置 Crazyrouter,推荐这样填:
API Key: 你的 Crazyrouter API Key
Base URL: https://crazyrouter.com/v1
Model: 从模型列表里选择模型名
国内/内地网络环境如果 global endpoint 不稳定,可以用:
Base URL: https://cn.crazyrouter.com/v1
注意:API endpoint 不要加 UTM。
网页链接可以加 UTM,比如:
https://crazyrouter.com/models?utm_source=csdn&utm_medium=article&utm_campaign=api_endpoints
但 API 地址不能这样写:
https://api-endpoint.example.invalid/v1?utm_source=csdn
出现“模型不可用”时怎么排查?
建议按这个顺序查:
1. 模型名是否写对
大小写、版本号、短横线都要一致。
比如:
gpt-5.5
claude-sonnet-4-6
不要凭感觉改模型名。
2. 工具到底是 OpenAI 兼容模式,还是 Anthropic 原生模式
如果工具让你填 OPENAI_BASE_URL,大概率是 OpenAI 兼容模式。
如果工具让你填 Anthropic API Key,或者文档里写 Claude Messages API,大概率是 Anthropic 原生模式。
3. endpoint 是否匹配
OpenAI 兼容 → /v1/chat/completions
Responses API → /v1/responses
Claude 原生 → /v1/messages
4. 请求体格式是否匹配
Chat Completions:
{
"model": "xxx",
"messages": []
}
Responses:
{
"model": "xxx",
"input": "xxx"
}
Anthropic Messages:
{
"model": "xxx",
"max_tokens": 1024,
"system": "xxx",
"messages": []
}
5. Base URL 是否只填到 /v1
大多数 SDK 配置里,Base URL 应该是:
https://crazyrouter.com/v1
而不是完整 endpoint。
最后总结
如果你只记一张表,就记这个:
| 你的工具类型 | 应该使用 |
|---|---|
| OpenAI-compatible API 工具 | /v1/chat/completions |
| OpenAI Responses API 工具 | /v1/responses |
| Anthropic / Claude 原生工具 | /v1/messages |
如果模型明明存在,却提示不可用,不要只盯着模型名。
先检查:
模型名 + endpoint + 请求 schema
这三者是否一致。
很多所谓“模型不可用”的问题,本质上只是端点选错了。
原文参考:
https://crazyrouter.com/zh/blog/chat-completions-vs-responses-vs-messages-api-zh?utm_source=csdn&utm_medium=article&utm_campaign=api_endpoints
更多推荐



所有评论(0)