/v1/messages)调用时,响应结构与 OpenAI 兼容格式完全不同:正文是按类型区分的 content 块数组,流式则用 Anthropic 的具名事件 SSE 协议。本页讲清两种模式怎么解析。
请求侧(端点、
anthropic-version 头、x-api-key 鉴权、effort / thinking 参数)见 Claude API 基础说明 与 Claude Effort 思考指南。本页只讲响应侧。示例用轻量模型 claude-haiku-4-5-20251001。非流式响应
顶层是一个message 对象,正文在 content 数组里,按 type 区分块:
content 数组——不能像 OpenAI 那样直接取一个字符串字段:
stop_reason 取值:end_turn(正常结束)、max_tokens(被 max_tokens 截断,正文可能为空,调大即可)、stop_sequence、tool_use(要调用工具)。开启思考后,content 数组里会多出 type: "thinking" 的块,排在 text 块之前。流式响应(具名事件 SSE)
Claude 流式用的是 Anthropic 事件协议:每条消息有event: 名称 + data: 负载,需要按事件类型分发,而不是像 OpenAI 那样每块都同构。
解析的核心是累加
content_block_delta 里的 text_delta:
开启思考(adaptive thinking)时,会先出现
type: "thinking" 的内容块,其增量是 thinking_delta,并在块结束前出现一个 signature_delta(思考块签名)。展示思考时把 thinking_delta 与 text_delta 分流渲染即可。思考用法见 Claude Effort 思考指南。与 OpenAI 兼容格式的关键差异
usage 与计费
- 非流式:
usage随结果返回,含input_tokens、output_tokens、cache_creation_input_tokens、cache_read_input_tokens。 - 流式:
input_tokens在message_start,最终output_tokens在message_delta,需两处合并。 - 缓存命中字段(
cache_read_input_tokens)的折扣与用法见 Claude 缓存计费。
相关链接
- 同组页面:Claude API 基础说明 · Claude 缓存计费 · Claude Effort 思考指南
- 兼容格式对照:OpenAI 兼容模式响应数据处理
- 获取 / 管理令牌:
https://api.apiyi.com/token