Anthropic格式API
Constreet提供完全兼容Anthropic Messages API的接口,专为Claude系列模型优化。如果你使用Anthropic官方SDK,只需修改base_url即可无缝切换。
接口地址
https://api.constreet.cc/v1
认证方式
支持两种认证方式:
方式一:x-api-key(推荐)
x-api-key: YOUR_API_KEY
方式二:Authorization
Authorization: Bearer YOUR_API_KEY
Messages API
接口说明
Claude的核心对话接口
请求地址
POST /v1/messages
请求示例
curl https://api.constreet.cc/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 1024, "messages": [ { "role": "user", "content": "用Python写一个二分查找算法" } ] }'
请求参数
Messages格式
与OpenAI不同,Anthropic的system提示词是独立参数:
{ "model": "claude-sonnet-4-6", "max_tokens": 1024, "system": "你是一个Python编程专家", "messages": [ { "role": "user", "content": "写一个快速排序" }, { "role": "assistant", "content": "好的,我来写一个Python的快速排序..." }, { "role": "user", "content": "加上详细注释" } ]}
注意:
- messages中只能有
user和assistant角色 - 必须以
user消息开始 user和assistant消息必须交替出现
响应格式
{ "id": "msg_123", "type": "message", "role": "assistant", "content": [ { "type": "text", "text": "这是Claude的回复内容" } ], "model": "claude-sonnet-4-6", "stop_reason": "end_turn", "usage": { "input_tokens": 25, "output_tokens": 150 }}
流式输出
设置stream: true启用:
curl https://api.constreet.cc/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 1024, "messages": [{"role": "user", "content": "你好"}], "stream": true }'
流式响应事件:
event: message_startdata: {"type":"message_start","message":{"id":"msg_123",...}}event: content_block_deltadata: {"type":"content_block_delta","delta":{"type":"text_delta","text":"你"}}event: content_block_deltadata: {"type":"content_block_delta","delta":{"type":"text_delta","text":"好"}}event: message_stopdata: {"type":"message_stop"}
支持的模型
多模态支持
Claude支持图片输入:
图片格式
{ "model": "claude-sonnet-4-6", "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 Anthropicnlient = Anthropic( api_key="YOUR_API_KEY", base_url="https://api.constreet.cc/v1")message = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=[ {"role": "user", "content": "写一个Python装饰器"} ])print(message.content[0].text)
Python(流式输出)
with client.messages.stream( model="claude-sonnet-4-6", 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://api.constreet.cc/v1'});const message = await client.messages.create({ model: 'claude-sonnet-4-6', max_tokens: 1024, messages: [ { role: 'user', content: '写一个快速排序' } ]});console.log(message.content[0].text);
cURL
curl https://api.constreet.cc/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 1024, "messages": [ {"role": "user", "content": "Hello, Claude!"} ] }'
错误处理
错误响应格式
{ "type": "error", "error": { "type": "invalid_request_error", "message": "错误描述" }}
常见错误类型
错误处理示例
from anthropic import Anthropic, APIErrorclient = Anthropic( api_key="YOUR_API_KEY", base_url="https://api.constreet.cc/v1")try: message = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=[{"role": "user", "content": "Hello"}] )except APIError as e: print(f"错误类型: {e.type}") print(f"错误信息: {e.message}")
高级功能
系统提示词
message = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, system="你是一个Python专家,擅长数据分析和机器学习。", messages=[ {"role": "user", "content": "如何使用pandas处理缺失值?"} ])
多轮对话
conversation = [ {"role": "user", "content": "写一个用户类"}, {"role": "assistant", "content": "好的,我来写一个User类..."}, {"role": "user", "content": "加上密码加密功能"}]message = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=conversation)
图片分析
import base64with open("image.jpg", "rb") as f: image_data = base64.b64encode(f.read()).decode()message = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=[ { "role": "user", "content": [ { "type": "image", "source": { "type": "base64", "media_type": "image/jpeg", "data": image_data } }, { "type": "text", "text": "分析这张架构图" } ] } ])
最佳实践
合理设置max_tokens
不同模型的最大输出不同:
- Opus: 32K
- Sonnet: 64K
- Haiku: 8K
根据需求设置合适的值,避免浪费。
使用system提示词
将角色设定放在system参数中,而不是messages里:
# ✅ 推荐system="你是一个Python专家"messages=[{"role": "user", "content": "写代码"}]# ❌ 不推荐messages=[ {"role": "user", "content": "你是Python专家。写代码"}]
处理长对话
Claude有200K上下文,但建议:
- 定期总结对话
- 删除不重要的历史
- 使用缓存机制(如果支持)
错误重试
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(...)
与OpenAI格式对比
速率限制
下一步
- 查看OpenAI格式API - 通用格式
- 查看定价 - 了解费用
- 获取帮助 - 遇到问题