跳转到主要内容
Claude 协议指 Anthropic Messages API 的请求格式。Anthropic SDK、Claude Code 等客户端只需改 Base URL、换上老张API密钥即可接入。
**Claude 模型已于 2026 年 10 月 18 日重新上架。**调用前先看 Claude 模型的使用限制,上架说明见公告。

可用模型

模型与价格总表中「兼容端点」包含 Anthropic Messages 的模型可以使用本协议。2026 年 10 月 18 日公开价格配置中,这类模型有:
  • Claude 模型:共 11 个,例如 claude-sonnet-5-5、claude-opus-5-5,开放于 default 与 claude_code 分组,完整列表与价格见总表 Anthropic 部分;
  • glm-5.2(claude_code 与 default 分组):通过本协议调用时,请求与响应的行为与官方 Messages API 基本一致;
  • deepseek-v4-pro;
  • deepseek-v4-flash 等。
模型 ID 从总表或控制台完整复制,不要按产品名、Bedrock ID 或 Vertex ID 自行拼接。同一模型如果也标注了「OpenAI 兼容」,也可以用 OpenAI 协议调用;两种协议的请求体和响应字段不同,不能混用。

Claude 模型的使用限制

Claude 模型支持流式输出、工具调用、adaptive thinking、提示缓存(5 分钟与 1 小时)和图片输入。以下情况与 Anthropic 官方接口不同:
  • 输出长度:单次输出上限 32,768 tokens,max_tokens 设得更大时按上限处理。
  • PDF 与文档:暂不支持 document 内容块,先提取文本,再放进 text 块发送。
  • 服务器工具:不支持 web_search、web_fetch、code_execution 等 Anthropic 服务器工具,请求会返回 400。
  • 其他接口:不提供 /v1/messages/count_tokens、Message Batches 和 Files 接口。
  • 停止序列:命中停止序列时,stop_reason 返回 end_turn,stop_sequence 字段为空。
  • Haiku 长输入:claude-haiku-5-5 单次输入超过 10 万 tokens(缓存读取与写入的 token 也计入)时,整次请求按长上下文价格计费,见总表的分档价格。

请求地址与认证

cURL 等直接发送 HTTP 请求时,带上以下三个请求头: 在令牌管理创建 API Key,计费模式选择按量优先(推荐)或按量计费,并确认令牌分组可以调用所选模型,然后写入环境变量:
请求体的要求:
  • 必须包含 model、messages 和 max_tokens;
  • 系统提示放在顶层 system 字段;
  • messages 中只使用 user 和 assistant 两种角色。

发送消息

使用 Python 示例时,先执行 python -m pip install anthropic。
Anthropic SDK 的 base_url 只写域名根,SDK 会自己拼接 /v1/messages,并自动发送认证头和 anthropic-version。示例关闭了自动重试,由应用决定失败后是否重发。

读取 content 内容块

回复位于 content[],每个元素是一个带 type 的内容块。下面是只含文本的响应的关键字段(省略了 id、usage 等字段):
常见的内容块类型: 同一条回复可能包含多个内容块,第一个块也可能是 thinking 或 tool_use,所以不要直接读取 content[0].text。
  • 遍历 content[] 并按 type 处理;
  • 需要完整文本时,把所有 text 块按顺序拼接。
cURL 响应保存为 message.json(在命令末尾加 -o message.json)后,可以用 jq 提取文本:
多轮对话时,把模型上一轮返回的完整 content 作为一条 assistant 消息放回 messages,再追加新的 user 消息。

流式输出

在请求体中加入 "stream": true,响应改为 SSE 事件流。事件依次是:
  1. message_start;
  2. 每个内容块的 content_block_start / content_block_delta / content_block_stop;
  3. message_delta;
  4. 最后以 message_stop 结束。
中间可能夹有 ping。文本增量在 content_block_delta 事件里:
  • delta.type 为 text_delta;
  • 新增文本在 delta.text。
cURL 的 -N 关闭输出缓冲。文本事件与结束事件的格式如下:
收到 message_stop 才表示这条回复完整结束;在此之前连接断开,已收到的文本不完整。

工具调用

在请求中用 tools 声明函数的名称、说明和 input_schema。模型需要调用函数时,会在 content[] 中返回 tool_use 块。网关不会替你执行这些函数,由业务程序处理:
  1. 读取 tool_use 块的 name 和 input,自己执行函数;
  2. 把结果放进 tool_result 块发回,tool_use_id 填对应 tool_use 块的 id。
下面的示例声明了一个查询天气的函数,把本地执行结果回传给模型,直到模型给出文本答案:
回传结果时,assistant 消息要原样包含上一轮返回的完整 content,并在后续请求中继续携带同样的 tools。 Anthropic 托管的服务器工具(web_search_*、code_execution_* 等)不会在网关执行。Claude 模型收到这类工具会直接返回 400;其他模型只会把它作为普通的 tool_use 块返回。 需要联网搜索或运行代码时,由业务程序自己实现,并按上面的方式回传 tool_result。

在 Claude Code 中使用

Claude Code 同样使用 Anthropic Messages 格式:
  • ANTHROPIC_BASE_URL 设为 https://api.laozhang.ai(域名根,不加 /v1);
  • 模型选择「兼容端点」包含 Anthropic Messages 的模型 ID,例如 claude-sonnet-5-5 或 glm-5.2。两者都开放于 default 与 claude_code 分组,各分组的用途与权限以控制台说明为准。
完整的 ~/.claude/settings.json 示例见 Claude Code 接入老张API;遇到 400 ValidationException 见 Claude Code 配置与 400 ValidationException 排查。

常见错误

  • 401:API Key 无效或认证头格式不对。cURL 使用 Authorization: Bearer 加老张API密钥;不要使用控制台账号的 AccessToken。
  • 400,提示缺少 max_tokens:Messages 协议要求每个请求都带 max_tokens,在请求体中补上即可。
  • SDK 请求发到了 /v1/v1/messages:Anthropic SDK 的 base_url 多写了 /v1。改为 https://api.laozhang.ai,由 SDK 拼接路径。
  • 读取 content[0].text 报错或为空:第一个内容块可能是 thinking 或 tool_use,按 type 遍历读取。
  • 回复在中途截断:输出达到了 max_tokens 上限,调大该值后重试。
  • 声明了 web_search 等服务器工具却没有结果:网关不执行服务器工具,由业务程序执行后回传 tool_result。Claude 模型会直接返回 400,从 tools 中去掉这类工具即可。
  • 529,提示上游繁忙:高峰期容量不足,稍后重试。Anthropic SDK 默认会自动重试 529。
  • 403 或模型不可用:确认模型 ID 完整、其「兼容端点」包含 Anthropic Messages,且 API Key 所在令牌分组有该模型权限,排查步骤见模型可用性与权限。
  • 5xx 或超时:先在调用日志确认请求状态,再决定是否重试。

相关文档