Claude与OpenAI的差异

1. 文本模型上的差异

  1. 系统提示词 (System Prompt)

这是最常见的改动点:OpenAI 将其放入数组,Anthropic 将其提取到顶层。

OpenAI:

json 复制代码
{
  "model": "gpt-4o",
  "messages": [
    {"role": "system", "content": "你是一个翻译官"},
    {"role": "user", "content": "你好"}
  ]
}

Anthropic:

json 复制代码
{
  "model": "claude-3-7-sonnet-20250219",
  "system": "你是一个翻译官", // 独立参数,不在 messages 数组里
  "messages": [
    {"role": "user", "content": "你好"}
  ]
}

  1. 连续消息 (Consecutive Roles)

OpenAI 允许连续两个 User 消息,Anthropic 会直接报错。

OpenAI (合法):

json 复制代码
"messages": [
  {"role": "user", "content": "第一部分指令"},
  {"role": "user", "content": "第二部分指令"} 
]

Anthropic

Anthropic 要求合并,或者中间插入 Assistant。

json 复制代码
"messages": [
  {
    "role": "user", 
    "content": [
      {"type": "text", "text": "第一部分指令"},
      {"type": "text", "text": "第二部分指令"}
    ]
  }
]

  1. 工具调用 (Tool Use / Function Calling)

OpenAI 使用专有的 tool_calls 字段,Anthropic 则把工具调用视为一种"内容块"。

OpenAI:

json 复制代码
// Assistant 发起调用
"message": {
  "role": "assistant",
  "tool_calls": [{ "id": "123", "type": "function", "function": {"name": "get_weather", "arguments": "..."}}]
}
// User 返回结果
{ "role": "tool", "tool_call_id": "123", "content": "25度" }

Anthropic:

json 复制代码
// Assistant 发起调用
"content": [
  { "type": "text", "text": "查一下天气" },
  { "type": "tool_use", "id": "123", "name": "get_weather", "input": {...} }
]
// User 返回结果
"role": "user",
"content": [
  { "type": "tool_result", "tool_use_id": "123", "content": "25度" }
]

  1. 思考过程 (Reasoning / Thinking)

Claude 3.7 推出的新特性,支持显式的思考字段。

Anthropic:

css 复制代码
"content": [
  { "type": "thinking", "thinking": "我需要先分析这个逻辑...", "signature": "..." },
  { "type": "text", "text": "最终答案是..." }
]

注:OpenAI 的 o1/o3 系列模型虽然有思考过程,但通常不在 Chat API 的 message 数组里以结构化 Block 形式返回,而是隐藏或放入 reasoning_content。


2. 多模态的更多差异

  1. 多模态图像上传 (Base64)

主要区别在于 OpenAI 使用特定的image_url对象,而 Anthropic 将图像视为与文本位于同一数组中的内容块类型。

OpenAI 格式:

vbnet 复制代码
{
  "role": "user",
  "content": [
    { "type": "text", "text": "What is in this image?" },
    {
      "type": "image_url",
      "image_url": {
        "url": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
        "detail": "high" // Optional: low, high, auto
      }
    }
  ]
}

Anthropic 格式:

json 复制代码
{
  "role": "user",
  "content": [
    { "type": "text", "text": "What is in this image?" },
    {
      "type": "image",
      "source": {
        "type": "base64",
        "media_type": "image/jpeg",
        "data": "/9j/4AAQSkZJRg..." // Raw base64 only, no data URI prefix
      }
    }
  ]
}
  • 关键区别: OpenAI 需要在url前半部分增加图片类型 data:image/jpeg;base64; Anthropic 只需要图像base64字符串和一个独立属性 media_type 来单独标识图片类型.

  1. 流式输出(Server-Sent Events)

OpenAI 的数据流是"增量中心"的(发送小段文本),而 Anthropic 的数据流是"事件中心"的(在代码块开始、进行和结束时通知您)

OpenAI Stream Chunk: OpenAI 重复发送chat.completion.chunk 对象.

json

kotlin 复制代码
data: {"id":"gen-123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}

data: {"id":"gen-123","choices":[{"index":0,"delta":{"content":" there"},"finish_reason":null}]}

data: [DONE]

Anthropic Stream Events: Anthropic 使用更复杂的状态机,具有不同的事件类型。

  1. message_start: 初始元数据.
  2. content_block_start: 告诉你即将开始的是哪种类型的内容(text/thinking)。.
  3. content_block_delta: 实际文本增量.
  4. message_delta: 最终使用统计数据和停止原因.

json

vbnet 复制代码
event: message_start
data: {"type": "message_start", "message": {"id": "msg_123", "role": "assistant", ...}}

event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}}

event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "Hello"}}

event: message_stop
data: {"type": "message_stop"}

总结表

Features OpenAI Anthropic
Image Input image_url (includes data URI) image (raw base64 + media_type)
Stream Type Flat list of deltas Categorized events (Start → Delta → Stop)
Usage Info Sent in every chunk or final chunk Sent in message_start and message_delta
相关推荐
AllData公司负责人10 小时前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
泯泷11 小时前
让 Agent 分清“马上办、等一等、顺手办”
人工智能·llm·agent
鲜于言悠90512 小时前
Claude Fable 5.2 登场,专治复杂推理与长任务
人工智能
联犀13 小时前
如何工程化降低语音交互AI设备的延迟(小智ai,芙崽这样的ai设备)
人工智能
杉岩数据13 小时前
杉岩数据董事长陈坚:从数据存储到行业智能——杉岩的AI时代战略布局
人工智能
冬奇Lab13 小时前
Loop 工程到底是高深的新技术,还是炒冷饭?用训练一个识别狗的模型讲明白
人工智能
冬奇Lab13 小时前
一天一个开源项目(第260篇):Plannotator —— 给 AI 编码 Agent 配一块「可批注的审阅台」,计划和代码改动都能在浏览器里逐条批示
人工智能·开源·claude
泯泷13 小时前
语音,正在成为 AI Agent 最自然的接口
人工智能·llm·agent
杨凯凡14 小时前
IT日报|2026-11-13:GitHub 大规模凭据攻击、Signal 形式化验证、Claude 新模型与 AI 安全诉讼
人工智能·安全·github
一个天蝎座 白勺 程序猿15 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习