API 与协议
Claude Messages
使用 Anthropic Messages 协议调用 Claude 模型。
本页目录
Claude 模型可以通过 Anthropic Messages 协议调用。Claude Code 也使用这套协议,因此建议先把本页最小请求跑通,再配置 Claude Code。
先分清地址和认证
| 项目 | 填写内容 |
|---|---|
| 服务根地址 | https://api.zcloudapi.com |
| Messages 接口 | https://api.zcloudapi.com/v1/messages |
| API Key Header | x-api-key: sk-你的-ZCloudAPI-Key |
| Anthropic 版本 | anthropic-version: 2023-06-01 |
直接调用 Messages API 时使用完整接口 https://api.zcloudapi.com/v1/messages。配置 Claude Code 时,ANTHROPIC_BASE_URL 只填 https://api.zcloudapi.com,Claude Code 会自己拼接路径。
第一步:准备 Key 和 Claude 模型
macOS / Linux:
export ZHICLOUD_API_KEY="sk-你的-ZCloudAPI-Key"
Windows PowerShell:
$env:ZHICLOUD_API_KEY="sk-你的-ZCloudAPI-Key"
查询模型:
curl "https://api.zcloudapi.com/v1/models" \
-H "Authorization: Bearer $ZHICLOUD_API_KEY"
从 data[].id 中复制一个 Claude 模型。下面以 claude-sonnet-4-6 为例。
第二步:发送最小 Messages 请求
macOS / Linux:
curl -i "https://api.zcloudapi.com/v1/messages" \
-H "x-api-key: $ZHICLOUD_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 64,
"messages": [
{"role": "user", "content": "只回复:Claude 连接成功"}
]
}'
Windows PowerShell:
$body = @{
model = "claude-sonnet-4-6"
max_tokens = 64
messages = @(
@{ role = "user"; content = "只回复:Claude 连接成功" }
)
} | ConvertTo-Json -Depth 5
curl.exe -i "https://api.zcloudapi.com/v1/messages" `
-H "x-api-key: $env:ZHICLOUD_API_KEY" `
-H "anthropic-version: 2023-06-01" `
-H "content-type: application/json" `
-d $body
成功时状态码为 200。
第三步:读取响应
典型响应:
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Claude 连接成功"
}
],
"usage": {
"input_tokens": 22,
"output_tokens": 8
}
}
处理方式:
- 遍历
content数组。 - 对
type: text的项读取text。 - 对工具调用等其他类型单独处理,不要当作普通文本。
- 从
usage.input_tokens和usage.output_tokens读取用量。
第四步:使用 Python Anthropic SDK
- 安装 SDK:
python -m pip install --upgrade anthropic
- 新建
claude_demo.py:
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["ZHICLOUD_API_KEY"],
base_url="https://api.zcloudapi.com",
timeout=60.0,
max_retries=2,
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=64,
messages=[
{"role": "user", "content": "只回复:Claude 连接成功"},
],
)
for block in message.content:
if block.type == "text":
print(block.text)
print(message.usage)
- 运行:
python claude_demo.py
第五步:使用 Node.js Anthropic SDK
- 安装 SDK:
npm install @anthropic-ai/sdk
- 新建
claude-demo.mjs:
import Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic({
apiKey: process.env.ZHICLOUD_API_KEY,
baseURL: 'https://api.zcloudapi.com',
timeout: 60_000,
maxRetries: 2,
})
const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 64,
messages: [{ role: 'user', content: '只回复:Claude 连接成功' }],
})
for (const block of message.content) {
if (block.type === 'text') console.log(block.text)
}
console.log(message.usage)
- 运行:
node claude-demo.mjs
第六步:增加 system 指令
Anthropic Messages 的系统指令使用顶层 system 字段,不要把它写成 role: system 消息:
{
"model": "claude-sonnet-4-6",
"system": "你是企业内部知识助手,只根据已提供资料回答。",
"max_tokens": 256,
"messages": [
{"role": "user", "content": "总结这段资料。"}
]
}
基础对话成功后,再增加工具调用、图片内容块或流式输出。
第七步:配置 Claude Code
本页 curl 成功后,再进入「配置 Claude Code」。Claude Code 配置时要注意:
ANTHROPIC_BASE_URL=https://api.zcloudapi.com,不添加/v1。- Key 放入
ANTHROPIC_AUTH_TOKEN。 - 模型名从当前 Key 的
/v1/models复制。 - 修改环境变量后重新打开终端再启动 Claude Code。
完成检查
/v1/models中能看到目标 Claude 模型。/v1/messages返回200。content中有type: text的正文。usage有输入和输出 Token。- 控制台「使用日志」出现对应请求。
常见错误
| 现象 | 处理步骤 |
|---|---|
401 |
检查 x-api-key、Key 完整性和停用状态 |
404 |
直接调用使用 https://api.zcloudapi.com/v1/messages;Claude Code 根地址使用 https://api.zcloudapi.com |
| 模型不存在 | 从 /v1/models 复制 Claude 模型名 |
按 choices 读取不到正文 |
Anthropic 响应读取 content,不是 OpenAI 的 choices |
| system 消息返回参数错误 | 把系统指令移到顶层 system 字段 |
| curl 成功但 Claude Code 失败 | 继续检查 Claude Code 的环境变量、版本和冲突 Provider |