Présentation
LemonData prend en charge le format natif de l’API Anthropic Messages. Utilisez le SDK Anthropic officiel avec LemonData pour accéder aux modèles Claude.
Installation
Configuration
from anthropic import Anthropic
client = Anthropic(
api_key="sk-your-lemondata-key",
base_url="https://api.lemondata.cc"
)
Remarque : L’URL de base est https://api.lemondata.cc (sans /v1) pour le SDK Anthropic.
Utilisation de base
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Claude!"}
]
)
print(message.content[0].text)
Avec un 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
# Depuis une 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"
}
}
]
}]
)
# Depuis 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?"}]
)
# Vérifier l'utilisation d'outils
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)
Pour les modèles qui prennent en charge l’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..."}]
)
# Accéder aux blocs de pensée
for block in message.content:
if block.type == "thinking":
print(f"Thinking: {block.thinking}")
elif block.type == "text":
print(f"Response: {block.text}")
Modèles Claude disponibles
| Modèle | Idéal pour |
|---|
claude-opus-4-5 | Raisonnement complexe, Extended Thinking |
claude-sonnet-4-5 | Usage général, codage |
claude-haiku-4-5 | Réponses rapides |
Gestion des erreurs
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}")
Comparaison : SDK OpenAI vs SDK Anthropic
Les deux fonctionnent avec LemonData pour les modèles Claude :
| Fonctionnalité | SDK OpenAI | SDK Anthropic |
|---|
| URL de base | https://api.lemondata.cc/v1 | https://api.lemondata.cc |
| Endpoint | /chat/completions | /v1/messages |
| System prompt | Dans le tableau messages | Paramètre system séparé |
| Extended thinking | Non pris en charge | Pris en charge |
Choisissez en fonction de vos préférences ou de votre base de code existante.