Skip to main content
Anthropic Claude 是一款非常强大的 AI 对话系统,只要输入提示词,就能在短短几秒内生成流畅自然的回复。Claude Messages API 是 Anthropic 官方原生的 API 格式,与 OpenAI 兼容格式(Chat Completion)不同,它采用 Anthropic 自有的请求和响应结构,能够更好地利用 Claude 的独特能力,如多模态内容输入、工具调用、深度思考(Extended Thinking)等高级特性。 本文档主要介绍 Claude Messages API 操作的使用流程,利用它我们可以使用与 Anthropic 官方一致的原生接口来调用 Claude 的对话功能。

申请流程

要使用 Claude Messages API,首先可以到 Claude Messages API 页面点击「Acquire」按钮,获取请求所需要的凭证: 如果你尚未登录或注册,会自动跳转到登录页面邀请您来注册和登录,登录注册之后会自动返回当前页面。 在首次申请时会有免费额度赠送,可以免费使用该 API。

基本使用

Claude Messages API 的请求路径为 /v1/messages,与 Anthropic 官方 API 保持一致。我们至少需要提供三个必填参数:
  • model:选择使用的 Claude 模型,如 claude-opus-4-20250514claude-sonnet-4-20250514 等。
  • messages:输入的消息数组,每条消息包含 role(角色)和 content(内容),其中 role 支持 userassistant
  • max_tokens:最大输出 token 数,用于限制单次回复的长度。
常用可选参数:
  • system:系统提示词,用于设定模型的行为和角色。
  • temperature:生成随机性,0-1 之间,值越大回复越发散。
  • stream:是否使用流式响应,设为 true 可实现逐字返回效果。
  • stop_sequences:自定义停止序列,模型遇到这些文本时会停止生成。
  • top_p:核采样参数,与 temperature 配合控制生成的随机性。
  • top_k:仅从概率最高的 K 个选项中采样。
  • tools:工具定义,用于让模型调用外部函数。
  • tool_choice:控制模型如何使用提供的工具。

cURL 示例

Python 示例

调用之后,返回结果如下:
返回结果字段说明:
  • id:本次消息的唯一标识符。
  • type:始终为 message
  • role:始终为 assistant
  • content:回复内容数组,每个元素包含 type(如 text)和对应的内容。
  • model:处理请求的模型名称。
  • stop_reason:停止原因,可能的值包括 end_turn(正常结束)、max_tokens(达到最大长度)、stop_sequence(遇到停止序列)、tool_use(工具调用)。
  • stop_sequence:如果因自定义停止序列而停止,显示匹配的停止序列文本。
  • usage:token 使用统计,包含 input_tokens(输入 token 数)和 output_tokens(输出 token 数)。

系统提示词

Claude Messages API 支持通过 system 字段设定系统提示词,用于定义模型的行为、角色和上下文。

Python 示例

通过设置 system 提示词,可以精确地控制 Claude 的角色和行为方式。

流式响应

该接口也支持流式响应,将 stream 参数设为 true 即可获得逐步返回的效果,非常适合在网页中实现逐字显示。

Python 示例

流式响应以 Server-Sent Events (SSE) 格式返回,每行以 event:data: 为前缀。流式事件类型包括:
  • message_start:消息开始,包含消息的基本信息和模型名称。
  • content_block_start:内容块开始。
  • content_block_delta:内容块增量更新,包含新生成的文本片段。
  • content_block_stop:内容块结束。
  • message_delta:消息级别的增量更新,包含 stop_reason 和最终的 usage 信息。
  • message_stop:消息结束。
输出效果如下:
可以看到,流式响应中 content_block_delta 事件包含了逐步生成的文本内容,通过拼接所有 text_delta 即可获得完整回复。

JavaScript 示例

多轮对话

如果您想要对接多轮对话功能,需要在 messages 数组中交替排列 userassistant 角色的消息,将之前的对话历史一并传入。

Python 示例

返回结果如下:
通过在 messages 中传递完整的对话历史,Claude 可以结合上下文进行准确的回答。

深度思考模型

Claude 支持 Extended Thinking(深度思考)功能,可以让模型在回复之前先进行内部推理,提升处理复杂问题的准确性。使用该功能时需要传入 thinking 参数。

Python 示例

返回结果如下:
可以看到,content 数组中包含了两个内容块:
  • type: "thinking":模型的内部思考过程,展示了推理步骤。
  • type: "text":最终的回答结果。
注意事项:
  • 使用 thinking 时,max_tokens 需要大于 budget_tokens,因为 budget_tokens 是分配给思考过程的 token 预算。
  • budget_tokens 越大,模型进行更深入推理的空间越大,适合处理复杂问题。

视觉模型

Claude 支持多模态输入,可以同时处理文本和图像。在 Messages API 中,通过将 content 设为数组格式,并传入图像内容块即可使用视觉能力。

使用 Base64 编码图像

使用 URL 图像

cURL 示例

支持的图片格式包括:image/jpegimage/pngimage/gifimage/webp 返回结果示例:

工具调用(Tool Use)

Claude Messages API 原生支持工具调用功能,允许模型在需要时调用您预定义的工具/函数。

Python 示例

当模型决定调用工具时,返回结果中 content 会包含 tool_use 类型的内容块:
注意 stop_reasontool_use,表示模型需要调用工具。收到该结果后,您需要执行工具函数并将结果以 tool_result 的形式回传给模型:
模型会基于工具返回的结果,生成最终的自然语言回复。

与 Chat Completion API 的区别

XHuoAPI 同时提供两种 Claude API 格式,两者的主要区别如下: 如果您的系统已经对接了 OpenAI 格式的 API,可以使用 Chat Completion API 来无缝切换。如果您需要使用 Claude 的全部原生能力,建议使用 Messages API。

错误处理

在调用 API 时,如果遇到错误,API 会返回相应的错误代码和信息。例如:
  • 400 token_mismatched:Bad request, possibly due to missing or invalid parameters.
  • 400 api_not_implemented:Bad request, possibly due to missing or invalid parameters.
  • 401 invalid_token:Unauthorized, invalid or missing authorization token.
  • 429 too_many_requests:Too many requests, you have exceeded the rate limit.
  • 500 api_error:Internal server error, something went wrong on the server.

错误响应示例

结论

通过本文档,您已经了解了如何使用 Claude Messages API 以 Anthropic 原生格式调用 Claude 的对话功能。Messages API 支持基本对话、系统提示词、流式响应、多轮对话、深度思考、视觉理解和工具调用等丰富功能。如有任何问题,请随时联系我们的技术支持团队。