OpenAI-SDK-Kompatibilität
Anthropic stellt eine Kompatibilitätsschicht bereit, mit der du das OpenAI SDK verwenden kannst, um die Claude API zu testen. Mit wenigen Codeänderungen kannst du die Fähigkeiten der Anthropic-Modelle schnell evaluieren.
Erste Schritte mit dem OpenAI SDK
Um die OpenAI-SDK-Kompatibilitätsfunktion zu nutzen, musst du:
- Ein offizielles OpenAI SDK verwenden
- Folgendes ändern
- Aktualisiere deine Base-URL, sodass sie auf die Claude API zeigt
- Ersetze deinen API-Key durch einen Claude API-Key
- Wenn dein Key ein persönlicher Key oder ein Service-Account-Key mit Zugriff auf mehrere Workspaces ist, sende zusätzlich bei jeder Anfrage den Header
anthropic-workspace-id(zum Beispieldefault_headersim Python SDK oderdefaultHeadersin TypeScript); siehe Einen Workspace auswählen - Aktualisiere deinen Modellnamen, sodass ein Claude-Modell verwendet wird
- Die folgenden Abschnitte durchsehen, um zu erfahren, welche Funktionen unterstützt werden
Schnellstart-Beispiel
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("ANTHROPIC_API_KEY"), # Your Claude API key
base_url="https://api.anthropic.com/v1/", # the Claude API endpoint
)
response = client.chat.completions.create(
model="claude-opus-5", # Claude model name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
],
)
print(response.choices[0].message.content)Wichtige Einschränkungen der OpenAI-Kompatibilität
API-Verhalten
Hier sind die wesentlichsten Unterschiede zur Verwendung von OpenAI:
- Der Parameter
strictfür Function Calling wird ignoriert, was bedeutet, dass das JSON der Tool-Nutzung nicht garantiert dem übergebenen Schema folgt. Für garantierte Schemakonformität verwende die native Claude API mit Structured Outputs. - Audio-Eingaben werden nicht unterstützt; sie werden ignoriert und aus der Eingabe entfernt
- Prompt-Caching wird nicht unterstützt, ist aber in den Anthropic SDKs verfügbar
- System-/Developer-Nachrichten werden an den Anfang der Konversation verschoben und zusammengefügt, da Anthropic nur eine einzige initiale System-Nachricht unterstützt.
Die meisten nicht unterstützten Felder werden stillschweigend ignoriert, anstatt Fehler zu erzeugen. Sie sind alle in den folgenden Abschnitten dokumentiert.
Überlegungen zur Ausgabequalität
Wenn du viel an deinem Prompt gefeilt hast, ist er wahrscheinlich speziell auf OpenAI abgestimmt. Erwäge, ihn mithilfe des Leitfadens zu Best Practices beim Prompting für Claude zu überarbeiten.
Verschieben von System-/Developer-Nachrichten an den Anfang
Die meisten Eingaben des OpenAI SDK lassen sich eindeutig direkt auf die API-Parameter von Anthropic abbilden, ein deutlicher Unterschied ist jedoch die Behandlung von System-/Developer-Prompts. Diese beiden Prompt-Arten können bei OpenAI an beliebiger Stelle in einer Chat-Konversation platziert werden. Da Anthropic nur eine initiale System-Nachricht unterstützt, nimmt die API alle System-/Developer-Nachrichten und fügt sie mit jeweils einem einzelnen Zeilenumbruch (\n) dazwischen zusammen. Diese vollständige Zeichenkette wird dann als einzelne System-Nachricht am Anfang der Nachrichten übergeben.
Unterstützung für Denken
Du kannst Denken aktivieren, indem du den Parameter thinking hinzufügst. Bei aktuellen Modellen ist das Denken adaptiv, wobei Claude entscheidet, wann und wie tief es nachdenkt, und bei Claude-5-Modellen ist es standardmäßig aktiviert; manuell konfiguriertes „extended thinking“ (erweitertes Denken) ist ein veralteter Modus. Obwohl Denken Claudes Schlussfolgerungsfähigkeit bei komplexen Aufgaben verbessert, gibt das OpenAI SDK Claudes detaillierten Denkprozess nicht zurück. Für den vollen Funktionsumfang des Denkens, einschließlich Zugriff auf Claudes schrittweise Reasoning-Ausgabe, verwende die native Claude API.
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Who are you?"}],
extra_body={"thinking": {"type": "enabled", "budget_tokens": 2000}},
)Ratenlimits
Ratenlimits folgen den Standardlimits von Anthropic für den Endpunkt /v1/messages.
Detaillierte Unterstützung der OpenAI-kompatiblen API
Anfragefelder
Einfache Felder
| Feld | Unterstützungsstatus |
|---|---|
model | Verwende Claude-Modellnamen |
max_tokens | Vollständig unterstützt |
max_completion_tokens | Vollständig unterstützt |
stream | Vollständig unterstützt |
stream_options | Vollständig unterstützt |
top_p | Vollständig unterstützt |
parallel_tool_calls | Vollständig unterstützt |
stop | Alle Stop-Sequenzen ohne Leerraumzeichen funktionieren |
temperature | Zwischen 0 und 1 (einschließlich). Werte größer als 1 werden auf 1 begrenzt. |
n | Muss genau 1 sein |
logprobs | Ignoriert |
metadata | Ignoriert |
response_format | Ignoriert. Für JSON-Ausgabe verwende Structured Outputs mit der nativen Claude API |
prediction | Ignoriert |
presence_penalty | Ignoriert |
frequency_penalty | Ignoriert |
seed | Ignoriert |
service_tier | Ignoriert |
audio | Ignoriert |
logit_bias | Ignoriert |
store | Ignoriert |
user | Ignoriert |
modalities | Ignoriert |
top_logprobs | Ignoriert |
reasoning_effort | Ignoriert |
tools- / functions-Felder
tools[n].function-Felder
| Feld | Unterstützungsstatus |
|---|---|
name | Vollständig unterstützt |
description | Vollständig unterstützt |
parameters | Vollständig unterstützt |
strict | Ignoriert. Verwende Structured Outputs mit der nativen Claude API für strikte Schemavalidierung |
Felder des messages-Arrays
Felder für messages[n].role == "developer"
| Feld | Unterstützungsstatus |
|---|---|
content | Vollständig unterstützt, aber an den Anfang verschoben |
name | Ignoriert |
Antwortfelder
| Feld | Unterstützungsstatus |
|---|---|
id | Vollständig unterstützt |
choices[] | Hat immer die Länge 1 |
choices[].finish_reason | Vollständig unterstützt |
choices[].index | Vollständig unterstützt |
choices[].message.role | Vollständig unterstützt |
choices[].message.content | Vollständig unterstützt |
choices[].message.tool_calls | Vollständig unterstützt |
object | Vollständig unterstützt |
created | Vollständig unterstützt |
model | Vollständig unterstützt |
finish_reason | Vollständig unterstützt |
content | Vollständig unterstützt |
usage.completion_tokens | Vollständig unterstützt |
usage.prompt_tokens | Vollständig unterstützt |
usage.total_tokens | Vollständig unterstützt |
usage.completion_tokens_details | Immer leer |
usage.prompt_tokens_details | Immer leer |
choices[].message.refusal | Immer leer |
choices[].message.audio | Immer leer |
logprobs | Immer leer |
service_tier | Immer leer |
system_fingerprint | Immer leer |
Kompatibilität von Fehlermeldungen
Die Kompatibilitätsschicht behält mit der OpenAI API konsistente Fehlerformate bei. Die detaillierten Fehlermeldungen sind jedoch nicht identisch. Verwende die Fehlermeldungen nur für Logging und Debugging.
Header-Kompatibilität
Das OpenAI SDK verwaltet Header zwar automatisch, hier ist jedoch die vollständige Liste der von der Claude API unterstützten Header für Entwickler, die direkt mit ihnen arbeiten müssen.
| Header | Unterstützungsstatus |
|---|---|
x-ratelimit-limit-requests | Vollständig unterstützt |
x-ratelimit-limit-tokens | Vollständig unterstützt |
x-ratelimit-remaining-requests | Vollständig unterstützt |
x-ratelimit-remaining-tokens | Vollständig unterstützt |
x-ratelimit-reset-requests | Vollständig unterstützt |
x-ratelimit-reset-tokens | Vollständig unterstützt |
retry-after | Vollständig unterstützt |
request-id | Vollständig unterstützt |
openai-version | Immer 2020-10-01 |
authorization | Vollständig unterstützt |
openai-processing-ms | Immer leer |
Was this page helpful?