Claude API with Python
Use the official anthropic Python SDK with Lumosel. The SDK works unchanged — just point base_url at Lumosel and use your API key.
Installation
pip install anthropicBasic request
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.lumosel.vip",
api_key="YOUR_API_KEY",
)
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(message.content[0].text)Streaming
with client.messages.stream(
model="claude-opus-4-8",
max_tokens=4096,
messages=[{"role": "user", "content": "Write a short story"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)Multi-turn conversation
messages = []
# First turn
messages.append({"role": "user", "content": "My name is Alice."})
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=messages,
)
messages.append({"role": "assistant", "content": response.content})
# Second turn
messages.append({"role": "user", "content": "What's my name?"})
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=messages,
)
print(response.content[0].text)Token counting
count = client.messages.count_tokens(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "Hello"}],
)
print(f"Input tokens: {count.input_tokens}")Tool use
tools = [{
"name": "get_weather",
"description": "Get current weather for a city",
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "City name"},
},
"required": ["city"],
},
}]
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
)
# Handle tool use blocks
for block in response.content:
if block.type == "tool_use":
print(f"Tool called: {block.name}, input: {block.input}")
elif block.type == "text":
print(block.text)Error handling
from anthropic import (
APIStatusError,
RateLimitError,
APIConnectionError,
)
try:
message = client.messages.create(...)
except RateLimitError:
print("Rate limited — wait and retry")
except APIConnectionError:
print("Network error — check your connection")
except APIStatusError as e:
print(f"API error {e.status_code}: {e.message}")Ready to code?
Get your API key and make your first Python request in under a minute.