LLM API 接口规范对比
不同的 AI 公司提供的 API 接口规范各不相同。本文对比 OpenAI、Anthropic、Google 和 Cohere 的 API 格式差异,帮你理解各平台的接口设计和相互转换方法。
各平台 API 概览
- OpenAI:Chat Completions API,行业事实标准
- Anthropic:Messages API,独特的消息格式
- Google:Gemini API,Google 风格的 REST 设计
- Cohere:Chat API,简洁直观的接口
请求格式对比
OpenAI 格式
// POST https://api.openai.com/v1/chat/completions
{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "你是助手"},
{"role": "user", "content": "你好"}
],
"max_tokens": 1024,
"temperature": 0.7,
"stream": false
}
// 认证: Authorization: Bearer sk-xxx
Anthropic 格式
// POST https://api.anthropic.com/v1/messages
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"system": "你是助手",
"messages": [
{"role": "user", "content": "你好"}
],
"temperature": 0.7,
"stream": false
}
// 认证: x-api-key: sk-ant-xxx
// 版本: anthropic-version: 2023-06-01
Google Gemini 格式
// POST https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent
{
"contents": [
{
"role": "user",
"parts": [{"text": "你好"}]
}
],
"systemInstruction": {
"parts": [{"text": "你是助手"}]
},
"generationConfig": {
"maxOutputTokens": 1024,
"temperature": 0.7
}
}
// 认证: ?key=AIza-xxx 或 Authorization: Bearer token
Cohere 格式
// POST https://api.cohere.ai/v1/chat
{
"model": "command-r-plus",
"message": "你好",
"preamble": "你是助手",
"temperature": 0.7,
"max_tokens": 1024,
"chat_history": [
{"role": "USER", "message": "之前的消息"},
{"role": "CHATBOT", "message": "之前的回复"}
]
}
// 认证: Authorization: Bearer xxx
响应格式对比
OpenAI 响应
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "你好!"},
"finish_reason": "stop"
}],
"usage": {"prompt_tokens": 10, "completion_tokens": 5, "total_tokens": 15}
}
Anthropic 响应
{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "你好!"}],
"stop_reason": "end_turn",
"usage": {"input_tokens": 10, "output_tokens": 5}
}
提示:claude4u.com(轻舟 AI)中转服务提供统一的 OpenAI 兼容接口,自动将请求转换为各平台的原生格式。你只需掌握 OpenAI 格式,即可调用所有平台的模型。
关键差异总结
消息格式
- OpenAI:system/user/assistant 角色在 messages 数组中
- Anthropic:system 独立于 messages,单独的 system 字段
- Google:使用 contents/parts 嵌套结构,systemInstruction 独立
- Cohere:当前消息用 message 字段,历史用 chat_history
流式输出
- OpenAI:SSE 格式,data: {"choices":[{"delta":{"content":"..."}}]}
- Anthropic:SSE 格式,event: content_block_delta + data: {"delta":{"text":"..."}}
- Google:SSE 格式或直接 JSON streaming
认证方式
- OpenAI:Bearer Token(Authorization header)
- Anthropic:自定义 header(x-api-key)
- Google:URL 参数或 OAuth Bearer Token
- Cohere:Bearer Token
格式转换实现
def openai_to_anthropic(openai_request):
"""OpenAI 格式转 Anthropic 格式"""
messages = openai_request["messages"]
system_msg = ""
other_msgs = []
for msg in messages:
if msg["role"] == "system":
system_msg = msg["content"]
else:
other_msgs.append(msg)
return {
"model": openai_request.get("model", "claude-sonnet-4-20250514"),
"max_tokens": openai_request.get("max_tokens", 1024),
"system": system_msg,
"messages": other_msgs,
"temperature": openai_request.get("temperature", 1.0)
}
注意:各平台的参数名称和取值范围有细微差异。例如 temperature 的有效范围在不同平台可能不同。格式转换时需要注意参数映射和边界值处理。
总结
不同 AI 平台的 API 格式差异增加了多模型集成的复杂度。claude4u.com(轻舟 AI)中转服务统一了接口格式,让开发者只需对接 OpenAI 标准格式,即可使用所有平台的模型,大幅降低集成成本。
轻舟 AI