logo

Anthropic 格式

Anthropic 格式

LLMoxy 提供完全兼容的 Anthropic Messages API 接口,专为 Claude 系列模型优化。使用 Anthropic 官方 SDK 的用户只需修改 base_url即可切换。

Base URL

https://llmoxy.com/v1

鉴权方式

支持两种鉴权方式:

方式一:x-api-key(推荐)

x-api-key: YOUR_API_KEY

方式二:Authorization

Authorization: Bearer YOUR_API_KEY

Messages API

Claude 的核心对话接口。

请求地址

POST /v1/messages

请求示例

curl https://llmoxy.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "用Python写一个二分查找算法"
}
]
}'

请求参数

参数类型必填说明
modelstring模型名称
messagesarray对话消息列表
max_tokensinteger最大生成 token 数
systemstring系统提示词
temperaturenumber温度参数,0–1
top_pnumber核采样参数
streamboolean是否流式输出
stop_sequencesarray停止序列

消息格式

与 OpenAI 不同,Anthropic 格式的系统提示词是独立参数:

{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"system": "你是一个Python编程专家",
"messages": [
{
"role": "user",
"content": "写一个快速排序"
},
{
"role": "assistant",
"content": "好的,我来写一个Python的快速排序..."
},
{
"role": "user",
"content": "加上详细注释"
}
]
}

注意

  • messages 中只能包含 userassistant 角色
  • 必须以 user 消息开头
  • userassistant 消息必须交替出现

响应格式

{
"id": "msg_123",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "这是Claude的回复内容"
}
],
"model": "claude-sonnet-4-20250514",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 25,
"output_tokens": 150
}
}

流式输出

设置 stream: true启用流式输出:

curl https://llmoxy.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "你好"}],
"stream": true
}'

流式响应格式

event: message_start
data: {"type":"message_start","message":{"id":"msg_123",...}}

event: content_block_delta
data: {"type":"content_block_delta","delta":{"type":"text_delta","text":"你"}}

event: content_block_delta
data: {"type":"content_block_delta","delta":{"type":"text_delta","text":"好"}}

event: message_stop
data: {"type":"message_stop"}

支持的模型

模型说明可用分组
claude-opus-4-20250514最强性能Max、Kiro
claude-sonnet-4-20250514均衡之选Max、Kiro
claude-haiku-4-20250414快速响应Max、Kiro

TIP 具体可用模型以 官网模型广场 为准。

多模态支持

Claude 支持图像输入:

{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "/9j/4AAQSkZJRg..."
}
},
{
"type": "text",
"text": "这张图片里有什么?"
}
]
}
]
}

支持的图片格式:JPEG、PNG、GIF、WebP,单张最大 5MB。

代码示例

Python(官方 SDK)

from anthropic import Anthropic

client = Anthropic(
api_key="YOUR_API_KEY",
base_url="https://llmoxy.com/v1"
)

message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "写一个Python装饰器"}
]
)

print(message.content[0].text)

Python(流式)

with client.messages.stream(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "写一篇文章"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

Node.js(官方 SDK)

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://llmoxy.com/v1'
});

const message = await client.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
messages: [
{ role: 'user', content: '写一个快速排序' }
]
});

console.log(message.content[0].text);

cURL

curl https://llmoxy.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'

错误处理

错误响应格式

{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "错误描述"
}
}

常见错误类型

错误类型说明
invalid_request_error请求参数错误
authentication_error鉴权失败
permission_error权限不足
not_found_error资源不存在
rate_limit_error请求频率超限
api_error内部错误
overloaded_error服务过载

错误处理示例

from anthropic import Anthropic, APIError

client = Anthropic(
api_key="YOUR_API_KEY",
base_url="https://llmoxy.com/v1"
)

try:
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]
)
except APIError as e:
print(f"错误类型: {e.type}")
print(f"错误信息: {e.message}")

高级用法

1. 系统提示词

message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system="你是一个Python专家,擅长数据分析和机器学习。",
messages=[
{"role": "user", "content": "如何使用pandas处理缺失值?"}
]
)

2. 多轮对话

conversation = [
{"role": "user", "content": "写一个用户类"},
{"role": "assistant", "content": "好的,我来写一个User类..."},
{"role": "user", "content": "加上密码加密功能"}
]

message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=conversation
)

3. 图像分析

import base64

with open("image.jpg", "rb") as f:
image_data = base64.b64encode(f.read()).decode()

message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": image_data
}
},
{
"type": "text",
"text": "分析这张架构图"
}
]
}
]
)

最佳实践

1. 合理设置 max_tokens

不同模型的最大输出不同:Opus 32K、Sonnet 64K、Haiku 8K。根据实际需要设置,避免浪费。

2. 使用 system 参数设置提示词

将角色定义放在 system参数中,而非 messages 里:

# ✅ 推荐
message = client.messages.create(
system="你是一个Python专家",
messages=[{"role": "user", "content": "写代码"}],
...
)

# ❌ 不推荐
message = client.messages.create(
messages=[{"role": "user", "content": "你是Python专家。写代码"}],
...
)

3. 处理长对话

Claude 拥有 200K 上下文窗口,但建议定期总结对话、移除不重要的历史消息,以节省 Token 消耗。

4. 实现重试机制

from tenacity import retry, stop_after_attempt, wait_exponential

@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=4, max=10)
)
def call_claude():
return client.messages.create(...)

下一步