Tổng quan
LemonData hỗ trợ định dạng Anthropic Messages API gốc. Sử dụng Anthropic SDK chính thức với LemonData để truy cập các mô hình Claude.
Cài đặt
Cấu hình
from anthropic import Anthropic
client = Anthropic(
api_key="sk-your-lemondata-key",
base_url="https://api.lemondata.cc"
)
Lưu ý: Base URL là https://api.lemondata.cc (không có /v1) đối với Anthropic SDK.
Cách sử dụng cơ bản
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Claude!"}
]
)
print(message.content[0].text)
Với System Prompt
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="You are a helpful coding assistant.",
messages=[
{"role": "user", "content": "Write a Python function to reverse a string"}
]
)
Streaming
with client.messages.stream(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Tell me a story"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Vision
import base64
# Từ URL
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{
"type": "image",
"source": {
"type": "url",
"url": "https://example.com/image.jpg"
}
}
]
}]
)
# Từ base64
with open("image.png", "rb") as f:
image_data = base64.b64encode(f.read()).decode()
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data
}
}
]
}]
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=[{
"name": "get_weather",
"description": "Get the weather for a location",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}],
messages=[{"role": "user", "content": "What's the weather in Tokyo?"}]
)
# Kiểm tra việc sử dụng tool
for block in message.content:
if block.type == "tool_use":
print(f"Tool: {block.name}")
print(f"Input: {block.input}")
Extended Thinking (Claude Opus 4.5)
Đối với các mô hình hỗ trợ extended thinking:
message = client.messages.create(
model="claude-opus-4-5",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000
},
messages=[{"role": "user", "content": "Solve this complex math problem..."}]
)
# Truy cập các thinking block
for block in message.content:
if block.type == "thinking":
print(f"Thinking: {block.thinking}")
elif block.type == "text":
print(f"Response: {block.text}")
Các mô hình Claude hiện có
| Model | Phù hợp nhất cho |
|---|
claude-opus-4-5 | Suy luận phức tạp, extended thinking |
claude-sonnet-4-5 | Mục đích tổng quát, lập trình |
claude-haiku-4-5 | Phản hồi nhanh |
Xử lý lỗi
from anthropic import APIError, APIStatusError, APIConnectionError
try:
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]
)
except APIStatusError as e:
if e.status_code == 401:
print("Invalid API key")
elif e.status_code == 429:
print("Rate limit exceeded")
else:
print(f"API error: {e.status_code}")
except APIConnectionError:
print("Connection error")
except APIError as e:
print(f"Unexpected error: {e}")
So sánh: OpenAI SDK và Anthropic SDK
Cả hai đều hoạt động với LemonData cho các mô hình Claude:
| Tính năng | OpenAI SDK | Anthropic SDK |
|---|
| Base URL | https://api.lemondata.cc/v1 | https://api.lemondata.cc |
| Endpoint | /chat/completions | /v1/messages |
| System prompt | Trong mảng messages | Tham số system riêng biệt |
| Extended thinking | Không được hỗ trợ | Được hỗ trợ |
Chọn dựa trên sở thích của bạn hoặc cơ sở mã nguồn hiện có.