各大厂商大模型 API 格式对比
目前,有三种API在人工智能驱动的产品开发中占据主导地位:OpenAI 的 GPT-5 系列、Anthropic 的 Claude Opus 4.6,以及 Google 的 Gemini 3 Pro,以及国内的Kimi、DeepSeek、Qwen也凭借价格的优势在某些领域大放异彩。目前对于开发者来说,真正重要的差异不再是以那个模型的性能最好来评判,而是通过自己的任务和价格来综合考虑。
目前主流的大模型 API 以 OpenAI 的 Chat Completions 和 Anthropic 的 Messages API 影响力最大。由于 OpenAI 起步最早,其 messages 格式已成为事实上的行业标准,国内绝大多数厂商都兼容这一格式。
OpenAI 在生态系统复杂度、微调能力以及编码任务的吞吐量方面表现领先。Anthropic 则在推理测试、提示缓存效率以及智能编码质量方面表现出色。Gemini 则在原生多模态处理、上下文窗口的成熟度以及低价格水平下的 token 性价比方面具有优势。
本文将按时间线梳理各家 API 的演进与核心差异,帮助你在实际开发中快速判断该用哪种格式。
1. 起点:OpenAI Chat Completions API(2023.03)
2023 年 3 月,OpenAI 发布 ChatGPT 并同步推出 Chat Completions API,迅速成为行业事实标准。
请求示例
{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
}
核心设计
- 使用
messages数组表示完整对话历史 - 每条消息由
role(system / user / assistant / tool)和content组成 - 模型通过
model字段指定 - 返回路径:
choices[0].message.content
这个设计虽然简单,但因为 ChatGPT 的巨大影响力,迅速成为“USB 接口”般的事实标准——不一定最优,但兼容性最好。后续加入 Function Calling 时,只是在 messages 中新增了 tool 角色和 tools 参数,整体骨架没有改变。
curl 示例
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
}'
主要请求参数
必填:
- model:模型 ID(如 gpt-4o、o 系列等)
- messages:消息数组。每条包含 role 和 content(字符串或 content parts 数组)。支持 system/developer、user、assistant、tool 等角色。
可选参数: - max_tokens / max_completion_tokens:最大生成 token 数,如果超过就会以
length方式截断。 - temperature:采样温度(0–2,越高越随机)
- top_p:核采样
- n:生成多少个候选(默认 1)
- stream:是否流式
- stop:停止序列
- presence_penalty / frequency_penalty:惩罚已出现内容
- tools:工具定义数组
- tool_choice:控制是否/如何调用工具(none / auto / required / 指定工具)
- response_format:输出格式(text / json_object / json_schema 结构化输出)
- seed:尽量确定性
- logprobs / top_logprobs:返回 log 概率
- user:终端用户标识(防滥用)
- metadata、service_tier、reasoning 相关参数(视模型)等
返回格式的主要字段
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1234567890,
"model": "...",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "回复文本",
"tool_calls": [...], // 若有工具调用
"refusal": null
},
"finish_reason": "stop", // stop | length | tool_calls | content_filter | ...
"logprobs": null
}
],
"usage": {
"prompt_tokens": ...,
"completion_tokens": ...,
"total_tokens": ...,
"prompt_tokens_details": {...},
"completion_tokens_details": {...} // 可能含 reasoning_tokens 等
},
"system_fingerprint": "...",
"service_tier": "..."
}
2. Anthropic Messages API(2024.03)
2024 年 3 月,Anthropic 发布 Claude 系列模型时,没有完全跟随 OpenAI,而是设计了自己的 Messages API。
请求示例
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"system": "你是一个有用的助手。",
"messages": [
{"role": "user", "content": "你好"}
]
}
核心差异
| 对比项 | OpenAI | Anthropic |
|---|---|---|
| system 提示词 | 放在 messages 数组里(role=system) | 独立顶层字段 system |
| max_tokens | 可选 | 必填 |
| 认证方式 | Authorization: Bearer |
x-api-key + anthropic-version |
| 返回内容路径 | choices[0].message.content |
content[0].text |
| content 格式 | 字符串或数组 | 始终是数组(天然支持多模态) |
Anthropic 把 system 独立出来,认为它是对模型行为的全局指令,而不是对话历史的一部分。这种设计在多轮对话和长上下文场景下更清晰,也便于后续优化。
curl 示例
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1000,
"messages": [
{
"role": "user",
"content": "What should I search for to find the latest developments in renewable energy?"
}
]
}'
主要请求参数
必填:
- model:模型 ID(如 claude-sonnet-4-5-…)
- max_tokens:最大生成 token 数(必填)
- messages:消息数组。每条 {role: “user”|”assistant”, content: string | content blocks[]}
常用可选参数:
- system:系统提示(字符串或文本块数组,独立于 messages)
- temperature:0–1(部分新模型可能限制)
- top_p / top_k:采样控制(top_k 是 Anthropic 特色)
- stop_sequences:自定义停止序列
- stream:是否流式
- tools:工具定义(name + description + input_schema)
- tool_choice:控制工具使用策略
- metadata:如 user_id
- thinking:扩展思考相关配置(部分模型)
- cache_control:提示缓存控制
- 其他:output_config(结构化输出)、service_tier、container 等高级字段
内容块类型丰富:text、image、tool_use、tool_result、thinking、document 等。
返回格式
{
"id": "msg_...",
"type": "message",
"role": "assistant",
"model": "...",
"content": [
{
"type": "text",
"text": "回复文本"
}
// 也可能有 tool_use、thinking 等块
],
"stop_reason": "end_turn", // end_turn | max_tokens | tool_use | stop_sequence | refusal | ...
"stop_sequence": null,
"usage": {
"input_tokens": ...,
"output_tokens": ...,
"cache_creation_input_tokens": ...,
"cache_read_input_tokens": ...
}
}
3. OpenAI Responses API(2025.03)
2025 年 3 月,OpenAI 推出 Responses API,定位为 Chat Completions 的下一代替代方案。
请求示例
{
"model": "gpt-4o",
"instructions": "你是一个有用的助手。",
"input": "你好"
}
主要变化
messages→input(可以是字符串或数组)- system 提示词改为独立的
instructions字段 - 返回路径变为
output[0].content[0].text - 内置了 web_search、file_search 等工具能力
- 上下文管理支持通过
previous_response_id自动串联,无需手动维护完整历史
可以看出,OpenAI 自己也开始把 system 指令从对话历史中独立出来,向 Anthropic 的设计靠拢。
4. Google Gemini API
Google Gemini 提供了原生格式,同时也支持 OpenAI 兼容接口。原生格式如下:
{
"system_instruction": {
"parts": [{"text": "你是一个有用的助手。"}]
},
"contents": [
{
"role": "user",
"parts": [{"text": "你好"}]
}
]
}
核心特点
- 使用
contents而不是messages - 每条消息的内容必须放在
parts数组中(为多模态设计) - system 提示词使用独立的
system_instruction - 角色只有
user和model两种 - 模型名称写在 URL 路径中,而不是请求体里
- 认证支持两种方式:
- Query 参数:
?key=$GEMINI_API_KEY - Header:
x-goog-api-key: $GEMINI_API_KEY(更推荐)
- Query 参数:
parts 设计天然支持多模态(文本、图片、音频、视频可自由组合),但纯文本场景下会显得稍显啰嗦。
curl 示例(原生格式)
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Write a story about a magic backpack."}]
}]
}'
注意:模型 ID(如
gemini-2.0-flash)直接写在路径中。
5. 国内主流大模型
国内厂商几乎全部兼容 OpenAI Chat Completions 格式,只需更换 base_url 和 API Key 即可:
| 平台 | 兼容 OpenAI 格式 | 端点 |
|---|---|---|
| 阿里云百炼(通义千问) | ✅ | https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions |
| DeepSeek | ✅ | https://api.deepseek.com/v1/chat/completions |
| 智谱 AI(GLM) | ✅ | https://open.bigmodel.cn/api/paas/v4/chat/completions |
| 月之暗面(Kimi) | ✅ | https://api.moonshot.cn/v1/chat/completions |
这也是 OpenAI 格式成为事实标准的最大价值——学会一套,国内模型几乎通吃。
6. 快速对比总结
| 特性 | OpenAI Chat Completions | Anthropic Messages | OpenAI Responses | Gemini 原生 |
|---|---|---|---|---|
| 对话字段 | messages | messages | input | contents |
| system 位置 | messages 内 | 独立 system | 独立 instructions | 独立 system_instruction |
| 内容格式 | string / array | 始终 array | string / array | parts 数组 |
| 模型位置 | body | body | body | URL 路径 |
| 国内兼容性 | ✅ 广泛 | ❌ | ❌ | ❌ |
| 推荐场景 | 通用、国内模型 | 直接调 Claude | OpenAI 新能力 | 需要原生多模态能力 |
如何选择模型
7. 该学哪个格式?
针对不同阶段开发者的建议:
刚入门 → 先掌握 OpenAI Chat Completions
它是事实标准,国内平台全部兼容,学一次就能到处用。需要调用 Claude → 必须了解 Anthropic Messages API
Claude 能力强,且 system 独立设计更清晰。Responses API 和 Gemini 原生格式
知道有这回事即可,真正用到时再查文档。做 Agent 开发
Function Calling(工具调用)是基础中的基础,建议优先在 OpenAI 格式下熟练掌握。
8. 一个有意思的趋势
后出的 API 格式几乎都把 system 提示词从对话历史中独立出来:
- Anthropic →
system - OpenAI Responses →
instructions - Gemini →
system_instruction
这不是巧合。实践中发现,把 system 和用户消息混在 messages 里,在多轮长对话时容易被“挤”到很远的位置,模型可能逐渐忽略它。独立出来后语义更清晰,也更利于服务端优化。
Chat Completions 把 system 放在 messages 里,其实是早期的历史包袱——就像 JavaScript 的 var,能用,但新设计已不再推荐。
9. 官方文档入口
| 平台 | 文档地址 |
|---|---|
| OpenAI Chat Completions | platform.openai.com/docs/api-reference/chat |
| OpenAI Responses | platform.openai.com/docs/api-reference/responses |
| Anthropic Messages | docs.anthropic.com/en/api/messages |
| Google Gemini | ai.google.dev/api |
| 阿里云百炼 | help.aliyun.com/zh/model-studio |
| DeepSeek | api-docs.deepseek.com |
| 智谱 AI | open.bigmodel.cn/dev/api |
| 月之暗面 | platform.moonshot.cn/docs/api |
参考链接