这三个接口都能让模型“回一句话”,但它们的设计重心并不一样。Chat Completions 更像经典聊天入口;Responses API 更像 OpenAI 新一代统一入口;Claude Messages API 则坚持清晰的 message history 组织方式,并强调 stateless 调用。

一句话先分清

如果把一次模型调用拆成“输入怎么组织、模型怎么执行、输出怎么返回”,三者差异会非常明显。

横向对比表

不追求列满参数,只列实际写代码最容易踩的点。

维度 OpenAI Chat Completions OpenAI Responses API Claude Messages API
接口入口 POST /chat/completions POST /responses client.messages.create(...),底层是 Anthropic Messages API
核心输入字段 messages input,可以是 string,也可以是结构化 input item 列表 messages,通常由 user / assistant 消息构成
上下文管理 通常由调用方传入历史 messages 可直接传 input,也可结合 conversation 等机制管理响应归属 文档明确强调 stateless,多轮时每次发送完整 history
工具调用 支持 tool_calls;旧 function_call 已被替代 工具系统更集中,支持 built-in tools、MCP tools、custom tools 等 支持 tool use 和 computer use,但使用时仍围绕 Messages API 组织
多模态输入 支持 text、image、audio、file 等内容部件,具体看模型能力 把 text、image、file input 放进同一 response 创建流程 支持 text 和 image;image 可通过 base64url 或 file source 提供
适合场景 旧项目、普通聊天、轻量 function calling 新项目、agent、RAG、多模态、内置工具、复杂输出 希望自己掌控 history、prompt 缓存、上下文拼接的 Claude 应用

怎么选:别问“哪个 API 更高级”,先问项目会不会变复杂

接口选择不是信仰问题,是后续维护成本问题。

我的判断是:只要你预期项目会加入工具调用、文件检索、视觉输入、结构化输出,就不要把架构绑死在纯 messages 聊天模型上。

选择建议

  • 已有 OpenAI Chat Completions 项目:不用立刻重写。先保持稳定,等你要加 agent、多模态或工具链时,再迁移到 Responses API。
  • 全新 OpenAI 项目:优先 Responses API。普通文本任务也能做,后续扩展空间更大。
  • Claude 项目:按 Messages API 的规则维护 conversation history;不要默认服务端会帮你记住上下文。
  • 跨厂商封装:内部可以抽象成统一的 turns,但外层适配时要保留各自的差异,比如 OpenAI Responses 的 input item 和 Claude 的 content block

代码速查:同一个“你好”,三种写法

下面代码是为了看结构,不是为了堆参数。实际项目里再加 error handling、timeout、retry、日志和 token 统计。

OpenAI Chat Completions

from openai import OpenAI

client = OpenAI()

completion = client.chat.completions.create(
    model="gpt-5.5",
    messages=[
        {"role": "system", "content": "你是一个简洁的技术助手。"},
        {"role": "user", "content": "用一句话解释 API。"}
    ]
)

print(completion.choices[0].message.content)

OpenAI Responses API

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.5",
    input="用一句话解释 API。"
)

print(response.output_text)

Claude Messages API

import anthropic

client = anthropic.Anthropic()

message = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "用一句话解释 API。"}
    ]
)

print(message.content[0].text)

Responses API + built-in tool 思路

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.5",
    input="查找项目文档后,总结接口变更点。",
    tools=[
        {"type": "file_search"}
    ]
)

print(response.output_text)
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐