ProxyCast 提供 Anthropic Claude Messages API 兼容。
POST /v1/messages
Content-Type: application/json
x-api-key: your-api-key
anthropic-version: 2023-06-01
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello!"}
]
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | ✅ | 模型名称 |
| max_tokens | integer | ✅ | 最大输出 Token |
| messages | array | ✅ | 消息列表 |
| system | string | ❌ | 系统提示词 |
| temperature | number | ❌ | 温度 (0-1) |
| top_p | number | ❌ | 采样参数 |
| top_k | integer | ❌ | Top-K 采样 |
| stream | boolean | ❌ | 是否流式响应 |
| stop_sequences | array | ❌ | 停止序列 |
| tools | array | ❌ | 工具定义 |
| tool_choice | object | ❌ | 工具选择策略 |
{
"role": "user",
"content": "Hello!"
}
或带图片:
{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "..."}}
]
}
{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"content": [
{"type": "text", "text": "Hello! How can I help you today?"}
],
"model": "claude-sonnet-4-20250514",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 10,
"output_tokens": 20
}
}
设置 stream: true 启用流式响应:
curl http://127.0.0.1:9090/v1/messages \
-H "x-api-key: your-api-key" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'
响应格式(SSE):
event: message_start
data: {"type":"message_start","message":{"id":"msg_xxx"}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}
event: message_stop
data: {"type":"message_stop"}
POST /v1/messages/count_tokens
Content-Type: application/json
x-api-key: your-api-key
anthropic-version: 2023-06-01
{
"model": "claude-sonnet-4-20250514",
"messages": [
{"role": "user", "content": "Hello!"}
]
}
{
"input_tokens": 10
}
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "What's the weather in Tokyo?"}],
"tools": [
{
"name": "get_weather",
"description": "Get weather information",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
]
}
{
"content": [
{
"type": "tool_use",
"id": "toolu_xxx",
"name": "get_weather",
"input": {"location": "Tokyo"}
}
],
"stop_reason": "tool_use"
}
import anthropic
client = anthropic.Anthropic(
base_url="http://127.0.0.1:9090",
api_key="your-api-key"
)
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}]
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'http://127.0.0.1:9090',
apiKey: 'your-api-key'
});
const message = await client.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello!' }]
});
console.log(message.content[0].text);