Anthropic SDK
Pass-through Endpunkte für Anthropic – rufen Sie einen anbieterspezifischen Endpunkt im nativen Format auf (keine Übersetzung).
| Feature | UnterstĂĽtzt | Notizen |
|---|---|---|
| Kostenverfolgung | âś… | unterstĂĽtzt alle Modelle auf dem /messages Endpunkt |
| Protokollierung | âś… | funktioniert ĂĽber alle Integrationen hinweg |
| Endbenutzerverfolgung | âś… | Deaktivieren Sie die Prometheus-Verfolgung ĂĽber litellm.disable_end_user_cost_tracking_prometheus_only |
| Streaming | âś… |
Ersetzen Sie einfach https://api.anthropic.com durch LITELLM_PROXY_BASE_URL/anthropic
Beispielverwendung​
- curl
- Anthropic Python SDK
curl --request POST \
--url http://0.0.0.0:4000/anthropic/v1/messages \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header "Authorization: bearer sk-anything" \
--data '{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
from anthropic import Anthropic
# Initialize client with proxy base URL
client = Anthropic(
base_url="http://0.0.0.0:4000/anthropic", # <proxy-base-url>/anthropic
api_key="sk-anything" # proxy virtual key
)
# Make a completion request
response = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, world"}
]
)
print(response)
UnterstĂĽtzt **ALLE** Anthropic Endpunkte (einschlieĂźlich Streaming).
Alle Anthropic Endpunkte anzeigen
Schnellstart​
Rufen wir den Anthropic /messages Endpunkt auf
- FĂĽgen Sie Ihren Anthropic API-SchlĂĽssel zu Ihrer Umgebung hinzu
export ANTHROPIC_API_KEY=""
- LiteLLM Proxy starten
litellm
# RUNNING on http://0.0.0.0:4000
- Testen Sie es!
Rufen wir den Anthropic /messages Endpunkt auf
curl http://0.0.0.0:4000/anthropic/v1/messages \
--header "x-api-key: $LITELLM_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
Beispiele​
Alles nach http://0.0.0.0:4000/anthropic wird als anbieterspezifische Route behandelt und entsprechend verarbeitet.
Wesentliche Änderungen
| UrsprĂĽnglicher Endpunkt | Ersetzen Sie durch |
|---|---|
https://api.anthropic.com | http://0.0.0.0:4000/anthropic (LITELLM_PROXY_BASE_URL="http://0.0.0.0:4000") |
bearer $ANTHROPIC_API_KEY | bearer anything (verwenden Sie bearer LITELLM_VIRTUAL_KEY, wenn virtuelle SchlĂĽssel auf dem Proxy eingerichtet sind) |
Beispiel 1: Nachrichten Endpunkt​
LiteLLM Proxy Aufruf​
curl --request POST \
--url http://0.0.0.0:4000/anthropic/v1/messages \
--header "x-api-key: $LITELLM_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
Direkter Anthropic API-Aufruf​
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
Beispiel 2: Token-Zählungs-API​
LiteLLM Proxy Aufruf​
curl --request POST \
--url http://0.0.0.0:4000/anthropic/v1/messages/count_tokens \
--header "x-api-key: $LITELLM_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: token-counting-2024-11-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-3-5-sonnet-20241022",
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
Direkter Anthropic API-Aufruf​
curl https://api.anthropic.com/v1/messages/count_tokens \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: token-counting-2024-11-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-3-5-sonnet-20241022",
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
Beispiel 3: Batch-Nachrichten​
LiteLLM Proxy Aufruf​
curl --request POST \
--url http://0.0.0.0:4000/anthropic/v1/messages/batches \
--header "x-api-key: $LITELLM_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: message-batches-2024-09-24" \
--header "content-type: application/json" \
--data \
'{
"requests": [
{
"custom_id": "my-first-request",
"params": {
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}
},
{
"custom_id": "my-second-request",
"params": {
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hi again, friend"}
]
}
}
]
}'
Direkter Anthropic API-Aufruf​
curl https://api.anthropic.com/v1/messages/batches \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: message-batches-2024-09-24" \
--header "content-type: application/json" \
--data \
'{
"requests": [
{
"custom_id": "my-first-request",
"params": {
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}
},
{
"custom_id": "my-second-request",
"params": {
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hi again, friend"}
]
}
}
]
}'
Erweitert​
Voraussetzungen
Verwenden Sie dies, um zu vermeiden, dass Entwickler den rohen Anthropic API-Schlüssel erhalten, ihnen aber trotzdem die Nutzung von Anthropic Endpunkten ermöglichen.
Verwendung mit virtuellen Schlüsseln​
- Umgebung einrichten
export DATABASE_URL=""
export LITELLM_MASTER_KEY=""
export COHERE_API_KEY=""
litellm
# RUNNING on http://0.0.0.0:4000
- Virtuellen SchlĂĽssel generieren
curl -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{}'
Erwartete Antwort
{
...
"key": "sk-1234ewknldferwedojwojw"
}
- Testen Sie es!
curl --request POST \
--url http://0.0.0.0:4000/anthropic/v1/messages \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header "Authorization: bearer sk-1234ewknldferwedojwojw" \
--data '{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
Senden Sie litellm_metadata (Tags, Kostenverfolgung für Endbenutzer)​
- curl
- Anthropic Python SDK
curl --request POST \
--url http://0.0.0.0:4000/anthropic/v1/messages \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header "Authorization: bearer sk-anything" \
--data '{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
],
"litellm_metadata": {
"tags": ["test-tag-1", "test-tag-2"],
"user": "test-user" # track end-user/customer cost
}
}'
from anthropic import Anthropic
client = Anthropic(
base_url="http://0.0.0.0:4000/anthropic",
api_key="sk-anything"
)
response = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, world"}
],
extra_body={
"litellm_metadata": {
"tags": ["test-tag-1", "test-tag-2"],
"user": "test-user" # track end-user/customer cost
}
},
## OR##
metadata={ # anthropic native param - https://docs.anthropic.com/en/api/messages
"user_id": "test-user" # track end-user/customer cost
}
)
print(response)