Source: https://aiprimetech.io/de/learn/anthropic-python-sdk/ [Startseite](/de/) / [Lernen](/de/learn/) / Anthropic Python SDK: installieren, base_url festlegen, streamen und Fehler behandeln # Anthropic Python SDK: installieren, base_url setzen, streamen und Fehler behandeln Das anthropic Paket ist der offizielle Python-Client von Anthropic für die Claude API. Es übernimmt Authentifizierung, Wiederholungsversuche, Streaming und typisierte Fehler und funktioniert unverändert mit jedem Anthropic-kompatiblen Endpunkt: Legen Sie base_url (oder ANTHROPIC_BASE_URL) fest, und der übrige Code bleibt gleich. ## Installation TerminalKopieren ``` pip install anthropic ``` Die Versionen 1.x laufen mit httpx2 und benötigen Python 3.10 oder neuer. Wenn Sie Ihren eigenen HTTP-Client übergeben, verwenden Sie die SDK-eigene DefaultHttpxClient damit die standardmäßigen Zeitlimits und Verbindungslimits erhalten bleiben. ## Client erstellen app.pyKopieren ``` import anthropic client = anthropic.Anthropic( api_key="your_key", # default: ANTHROPIC_API_KEY base_url="https://aiprimetech.io", # default: ANTHROPIC_BASE_URL, else https://api.anthropic.com ) ``` base_url ist die Stamm-URL des Hosts. Das SDK hängt /v1/messages selbst an, sodass https://aiprimetech.io/v1 zu /v1/v1/messages und ein 404 page not foundführen würde. Wenn beide Variablen in der Umgebung gesetzt sind, anthropic.Anthropic() benötigt keinerlei Argumente: TerminalKopieren ``` export ANTHROPIC_API_KEY=your_key export ANTHROPIC_BASE_URL=https://aiprimetech.io ``` ## Nachricht senden app.pyKopieren ``` message = client.messages.create( model="claude-sonnet-5", max_tokens=1024, messages=[{"role": "user", "content": "Summarise TCP slow start in two sentences."}], ) for block in message.content: if block.type == "text": print(block.text) print(message.usage.input_tokens, message.usage.output_tokens) print(message._request_id) # log this with any failure report ``` content ist eine Liste von Blöcken (Text, Denkprozesse, Werkzeugnutzung). Prüfen Sie daher block.type statt content[0].text ungeprüft auszulesen. ## Antworten streamen stream.pyKopieren ``` with client.messages.stream( model="claude-sonnet-5", max_tokens=16000, messages=[{"role": "user", "content": "Write a short story about a lighthouse."}], ) as stream: for text in stream.text_stream: print(text, end="", flush=True) final = stream.get_final_message() ``` Verwenden Sie Streaming bei langen Eingaben, langen Ausgaben oder einem großen max_tokens: Eine einzelne Anfrage ohne Streaming muss innerhalb des Zeitlimits abgeschlossen sein, ein Stream hingegen nicht. messages.create(..., stream=True) liefert Ihnen den unverarbeiteten Ereignis-Iterator, wenn Sie die Hilfsfunktion nicht benötigen. ## Asynchroner Client async_app.pyKopieren ``` import asyncio, anthropic client = anthropic.AsyncAnthropic(base_url="https://aiprimetech.io") limit = asyncio.Semaphore(3) # stay within your key's concurrency async def ask(question: str) -> str: async with limit: msg = await client.messages.create( model="claude-haiku-4-5", max_tokens=512, messages=[{"role": "user", "content": question}], ) return next(b.text for b in msg.content if b.type == "text") async def main(): answers = await asyncio.gather(*(ask(q) for q in ["What is DNS?", "What is BGP?"])) print(answers) asyncio.run(main()) ``` Die Semaphore ist wichtig. Hunderte Anfragen gleichzeitig mit asyncio.gather zu senden, ist die häufigste Ursache für Concurrency limit exceeded Fehler, die wir bei Python-Clients beobachten. ## Zeitlimits und Wiederholungsversuche Standardwerte: ein Zeitlimit von 10 Minuten pro Anfrage und 2 automatische Wiederholungsversuche mit exponentiellem Backoff. Das SDK wiederholt Anfragen bei Verbindungsfehlern, 408, 409, 429 und 5xx-Antworten. Da auch Zeitüberschreitungen Wiederholungsversuche auslösen, beträgt die tatsächliche Gesamtdauer im schlimmsten Fall das Zeitlimit multipliziert mit der Anzahl der Versuche. app.pyKopieren ``` client = anthropic.Anthropic(base_url="https://aiprimetech.io", timeout=60.0, max_retries=4) # override for one call only client.with_options(timeout=300.0).messages.create( model="claude-opus-5-5", max_tokens=4000, messages=[{"role": "user", "content": "Review this design doc..."}], ) ``` ## Fehlerbehandlung | Status | Ausnahme | Erneut versuchen? | 400 | anthropic.BadRequestError | Nein: Anfrage korrigieren | 401 | anthropic.AuthenticationError | Nein: falscher oder fehlender Schlüssel | 403 | anthropic.PermissionDeniedError | Nein | 404 | anthropic.NotFoundError | Nein: Modell-ID oder URL | 429 | anthropic.RateLimitError | Ja, nach einer Pause | 5xx, einschließlich 529 bei Überlastung | anthropic.InternalServerError | Ja | Netzwerkfehler | anthropic.APIConnectionError | Ja | Zeitüberschreitung | anthropic.APITimeoutError | Ja, oder Streaming verwenden errors.pyKopieren ``` try: message = client.messages.create(model="claude-sonnet-5", max_tokens=1024, messages=[{"role": "user", "content": "Hi"}]) except anthropic.NotFoundError as e: print("Bad model ID or URL:", e.message) except anthropic.RateLimitError as e: print("Rate limited, retry after", e.response.headers.get("retry-after")) except anthropic.APIStatusError as e: print(e.status_code, e.type, e.message) except anthropic.APIConnectionError: print("Network problem") ``` Fangen Sie zuerst die spezifischen Klassen ab und APIStatusError zuletzt; ein allgemeines except verschleiert den Unterschied zwischen Fehlern, bei denen sich ein Wiederholungsversuch lohnt, und Fehlern, die eine Codeänderung erfordern. e.type liefert die Zeichenfolge für den Fehlertyp der API, etwa rate_limit_error oder overloaded_error. ## Modell-IDs | Modell-ID | Einsatzbereich | claude-sonnet-5 | Standard für Programmier- und Agentenaufgaben: schnell, leistungsstark, mittleres Preisniveau. | claude-opus-5-5 | Anspruchsvollere Denkaufgaben, umfangreiche Refactorings, lange Agentenläufe. | claude-fable-5-1 | Am leistungsfähigsten und am teuersten; für die schwierigsten Aufgaben reservieren. | claude-haiku-4-5 | Günstig und schnell: Titel, Zusammenfassungen, Klassifizierung, kleine Schritte. client.models.list() gibt die Modelle zurück, die ein Endpunkt bereitstellt, sodass Sie eine ID vor der Verwendung prüfen können. Verwenden Sie die IDs genau wie angegeben: ohne Datumssuffixe. ## Fehlerbehebung auf einem Gateway | Was Sie sehen | Ursache | Lösung | NotFoundError durch 404 page not found | /v1 in base_url | Stamm-URL des Hosts verwenden | AuthenticationError | Schlüssel im Prozess nicht gesetzt oder mit Leerraum eingefügt | Ausgeben len(os.environ["ANTHROPIC_API_KEY"]) | RateLimitError: Concurrency limit exceeded for user | Zu viele gleichzeitig laufende Anfragen | Ein asyncio.Semaphore wie oben | APITimeoutError bei langen Aufgaben | Anfrage ohne Streaming überschreitet das Zeitlimit | Streaming verwenden oder erhöhen: timeout | InternalServerError: No available accounts | Vorübergehend begrenzte Kapazität beim vorgelagerten Anbieter | Das SDK Wiederholungsversuche durchführen lassen; erhöhen: max_retries | Insufficient account balance | Guthaben aufgebraucht | [Guthaben aufladen](/de/topup/) Mehr zu modellseitigen Fehlern: die [Anleitung zu Claude API-Fehlern](/de/learn/claude-api-errors-troubleshooting/). ## Häufig gestellte Fragen Wie installiere ich das Anthropic Python SDK? pip install anthropic. Version 1.x benötigt Python 3.10 oder neuer. Wie lege ich eine benutzerdefinierte Basis-URL im Anthropic Python SDK fest? Übergeben Sie base_url an anthropic.Anthropic() oder setzen Sie ANTHROPIC_BASE_URL. Verwenden Sie die Stamm-URL des Hosts; das SDK hängt /v1/messages an. Welche Standardwerte gelten für Zeitlimit und Wiederholungsversuche? 10 Minuten pro Anfrage und 2 Wiederholungsversuche mit exponentiellem Backoff bei Verbindungsfehlern, 408, 409, 429 und 5xx. Wie verwende ich Streaming mit dem Python SDK? Verwenden Sie with client.messages.stream(...) as stream: und iterieren Sie über stream.text_stream; stream.get_final_message() gibt die vollständige Nachricht zurück. Claude in wenigen Minuten nutzen Holen Sie sich einen API-Schlüssel – ohne Anthropic-Konto oder Warteliste.[API-Schlüssel erhalten](/register) AI Prime Tech ist ein unabhängiges API-Gateway. Es ist weder mit Anthropic verbunden noch von Anthropic empfohlen und auch kein Wiederverkäufer von Anthropic. Claude und zugehörige Modellnamen sind Marken ihrer jeweiligen Inhaber. ## Weitere Anleitungen zur Claude API [So erhalten Sie einen Claude API-Schlüssel](/de/learn/how-to-get-a-claude-api-key/)[Claude-API-Preise erklärt](/de/learn/claude-api-pricing-explained/)[Die günstigste Möglichkeit, die Claude API zu nutzen](/de/learn/cheapest-way-to-use-claude-api/)[Cursor unbegrenzt mit der Claude API nutzen](/learn/use-claude-api-with-cursor/)[Unbegrenzter Zugang zu Claude Code](/de/learn/use-claude-api-with-claude-code/)[Claude API-Gateway vs. direkter Zugang zu Anthropic](/de/learn/claude-api-vs-anthropic-direct/)[Claude über eine OpenAI-kompatible API nutzen](/de/learn/openai-compatible-claude-api/)[Claude-Modelle erklärt: ein Vergleich von Claude Opus, Sonnet, Haiku und Fable — alle Claude-API-Modelle, Anthropic-Modellnamen und Preise (2026)](/de/learn/claude-api-models-compared/)[Die Claude API mit Kryptowährungen bezahlen](/de/learn/claude-api-with-crypto-payment/)[Zugang zur Claude API ohne Warteliste](/de/learn/claude-api-without-waitlist/)[So reduzieren Sie den Token-Verbrauch von Claude](/de/learn/how-to-reduce-claude-token-usage/)[Cline unbegrenzt mit der Claude API nutzen](/de/learn/use-claude-api-with-cline/)[Roo Code unbegrenzt mit der Claude API nutzen](/de/learn/use-claude-api-with-roo-code/)[Claude unbegrenzt in JetBrains-IDEs nutzen](/de/learn/use-claude-api-with-jetbrains/)[Aider unbegrenzt mit der Claude API nutzen](/de/learn/use-claude-api-with-aider/)[Claude unbegrenzt in VS Code nutzen](/de/learn/use-claude-api-with-vscode/)[OpenCode-Konfiguration für Claude: Einrichtung von opencode.json, Modelle und häufige Fehler](/de/learn/use-claude-api-with-opencode/)[Einen unbegrenzten Hermes-Agenten mit Claude betreiben](/de/learn/run-hermes-agent-with-claude-api/)[OpenClaw unbegrenzt mit Claude betreiben](/de/learn/run-openclaw-with-claude-api/)[Was eine Anthropic-kompatible API bedeutet](/de/learn/anthropic-compatible-api/)[Claude Code-API-Schlüssel — ANTHROPIC_API_KEY: So erhalten und konfigurieren Sie ihn, und wann Sie stattdessen claude setup-token verwenden sollten](/de/learn/claude-code-api-key-setup/)[Claude Code-API-Kosten — Preise und Möglichkeiten zur Kostensenkung](/de/learn/claude-code-api-costs/)[Claude API-Fehler erklärt: Serverfehler 500, Überlastung 529, Ratenlimit 429, fehlerhafte Anfrage 400 — und die jeweilige Lösung](/de/learn/claude-api-errors-troubleshooting/)[So kaufen Sie Claude API-Guthaben – und warum Claude-Guthaben besser ist als jedes Angebot zum „Kauf eines Claude-Kontos“](/de/learn/buy-claude-api-credits/)[Kostenlose Claude API: Gibt es einen kostenlosen Claude API-Schlüssel, und was ist in 2026 tatsächlich kostenlos?](/de/learn/claude-api-free-trial/)[Claude API vs. Claude Pro/Max-Abonnement — welche Option wählen?](/de/learn/claude-api-vs-subscription/)[Die Codex CLI mit Claude ausführen](/de/learn/use-claude-api-with-codex/)[Claude mit n8n verbinden](/de/learn/use-claude-api-with-n8n/)[LiteLLM-Anfragen an Claude weiterleiten](/de/learn/use-claude-api-with-litellm/)[Claude in Kilo Code verwenden](/de/learn/use-claude-api-with-kilo-code/)[Claude in GitHub Copilot integrieren](/de/learn/use-claude-api-with-github-copilot/)[Zed über das Gateway mit Claude verbinden](/de/learn/use-claude-api-with-zed/)[Cherry Studio mit Claude verbinden](/de/learn/use-claude-api-with-cherry-studio/)[ChatAnthropic in LangChain: Import, base_url, Streaming, Tools und Fehler](/de/learn/use-claude-api-with-langchain/)[Claude mit dem Vercel AI SDK: createAnthropic baseURL, Streaming und Fehlerbehebung](/de/learn/use-claude-api-with-vercel-ai-sdk/)[Factory Droid mit Claude betreiben](/de/learn/use-claude-api-with-factory-droid/)[Die Claude Code API erklärt](/de/learn/claude-code-api/)[Die Claude API in Ihre Anwendung integrieren](/de/learn/claude-api-integration/)[So nutzen Sie Claude unbegrenzt – und warum es kein „gecracktes Claude Code“ gibt](/de/learn/get-unlimited-claude-usage/)