OpenAI-SDK-Kompatibilität
Anthropic bietet eine Kompatibilitätsschicht, 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 evaluieren.
Erste Schritte mit dem OpenAI SDK
Um die OpenAI SDK-Kompatibilitätsfunktion zu verwenden, musst du:
- Ein offizielles OpenAI SDK verwenden.
- Folgendes ändern:
- Aktualisiere deine Basis-URL so, dass sie auf die Claude API verweist.
- Ersetze deinen API-Key durch einen Claude API-Key aus der Claude Console.
- Wenn dein Key ein persönlicher oder Service-Account-Key ist, der nicht auf einen Workspace beschränkt ist, sende bei jeder Anfrage zusätzlich 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.
- Lies die folgenden Abschnitte, 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-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 nicht garantiert ist, dass das JSON der Tool-Nutzung dem angegebenen Schema entspricht. 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 verschoben und im Top-Level-Feld
systemzusammengefügt, unabhängig davon, wo sie in der Konversation erscheinen. Um Systemanweisungen mitten in einer Konversation hinzuzufügen, verwende System-Nachrichten mitten in der Konversation in der nativen Claude API.
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 deinen Prompt umfassend angepasst hast, ist er wahrscheinlich speziell auf OpenAI abgestimmt. Erwäge, ihn für Claude mithilfe des Leitfadens Best Practices für Prompts zu überarbeiten.
Verschieben von System-/Developer-Nachrichten an den Anfang
Die meisten Eingaben des OpenAI SDK lassen sich eindeutig direkt auf Parameter der Claude API abbilden, ein deutlicher Unterschied ist jedoch die Behandlung von System-/Developer-Prompts. Diese beiden Prompts können in der OpenAI API an beliebiger Stelle einer Chat-Konversation platziert werden. Die Kompatibilitätsschicht nimmt alle System-/Developer-Nachrichten und fügt sie mit einem einzelnen Zeilenumbruch (\n) dazwischen zusammen. Dieser vollständige String wird dann als Top-Level-Feld system vor allen Nachrichten übergeben.
Unterstützung für Nachdenken
Du kannst Nachdenken aktivieren, indem du den Parameter thinking hinzufügst. Bei aktuellen Modellen ist das Nachdenken adaptiv, wobei Claude bestimmt, wann und wie tief nachgedacht wird, und bei Claude-5-Modellen ist es standardmäßig aktiviert; manuell konfiguriertes erweitertes Nachdenken ist ein veralteter Modus. Obwohl Nachdenken Claudes Schlussfolgerungen bei komplexen Aufgaben verbessert, gibt das OpenAI SDK Claudes Nachdenken nicht zurück. Für den vollen Funktionsumfang des Nachdenkens, einschließlich des zusammengefassten Nachdenkens, 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 | Wird an das Modell weitergegeben. Claude 4.7 und neuere Modelle sowie Claude Mythos Preview geben bei jedem anderen Wert als 0.99, dem Standardwert, einen 400-Fehler zurück, also lass ihn weg. Eine Anfrage, die sowohl temperature als auch top_p setzt, gibt ebenfalls einen 400-Fehler zurück. Siehe Verwendung der Messages API. |
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. Bei Claude 4.7 und neueren Modellen sowie Claude Mythos Preview gibt jeder Wert unter 1 einen 400-Fehler zurück, also lass ihn weg. Siehe Verwendung der Messages API. |
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 eine strikte Schemavalidierung. |
functions[n]-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 eine 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 |
Felder für messages[n].role == "system"
| Feld | Unterstützungsstatus |
|---|---|
content | Vollständig unterstützt, aber an den Anfang verschoben |
name | Ignoriert |
Felder für messages[n].role == "user"
| Feld | Variante | Unterfeld | Unterstützungsstatus |
|---|---|---|---|
content | string | Vollständig unterstützt | |
array, type == "text" | Vollständig unterstützt | ||
array, type == "image_url" | url | Vollständig unterstützt | |
detail | Ignoriert | ||
array, type == "input_audio" | Ignoriert | ||
array, type == "file" | Ignoriert | ||
name | Ignoriert |
Felder für messages[n].role == "assistant"
| Feld | Variante | Unterstützungsstatus |
|---|---|---|
content | string | Vollständig unterstützt |
array, type == "text" | Vollständig unterstützt | |
array, type == "refusal" | Ignoriert | |
tool_calls | Vollständig unterstützt | |
function_call | Vollständig unterstützt | |
audio | Ignoriert | |
refusal | Ignoriert |
Felder für messages[n].role == "tool"
| Feld | Variante | Unterstützungsstatus |
|---|---|---|
content | string | Vollständig unterstützt |
array, type == "text" | Vollständig unterstützt | |
tool_call_id | Vollständig unterstützt | |
tool_choice | Unterstützt. "required" und Werte mit benannten Funktionen erzwingen einen Tool-Aufruf; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 und Claude Mythos 5.1 unterstützen keine erzwungene Tool-Nutzung und geben einen Fehler zurück, verwende daher bei diesen Modellen "auto". Siehe Tool-Nutzung erzwingen. | |
name | Ignoriert |
Felder für messages[n].role == "function"
| Feld | Variante | Unterstützungsstatus |
|---|---|---|
content | string | Vollständig unterstützt |
array, type == "text" | Vollständig unterstützt | |
tool_choice | Unterstützt. "required" und Werte mit benannten Funktionen erzwingen einen Tool-Aufruf; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 und Claude Mythos 5.1 unterstützen keine erzwungene Tool-Nutzung und geben einen Fehler zurück, verwende daher bei diesen Modellen "auto". Siehe Tool-Nutzung erzwingen. | |
name | Ignoriert |
Antwortfelder
| Feld | Unterstützungsstatus |
|---|---|
id | Vollständig unterstützt |
choices[] | Hat immer eine Länge von 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 konsistente Fehlerformate mit der OpenAI API bei. Die detaillierten Fehlermeldungen sind jedoch nicht gleichwertig. Verwende die Fehlermeldungen nur für Logging und Debugging.
Header-Kompatibilität
Obwohl das OpenAI SDK Header automatisch verwaltet, findest du hier 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?