Tipps & Tricks

Einführung in die Nutzung der Claude API mit Python

7 min Lesezeit
Einführung in die Nutzung der Claude API mit Python

Einführung

Die Integration von Claude in eine Python-Anwendung ist unkompliziert. Die Erstellung eines Kontos und der erste API-Aufruf lassen sich schnell umsetzen. Die offizielle Dokumentation ermöglicht es, innerhalb weniger Minuten von null zu einem funktionierenden Anfrageprozess zu gelangen. Die häufigsten Fragen, die sich danach stellen, sind jedoch praktischer Natur:

  • Was enthält das Antwortobjekt?
  • Wie können Antworten gestreamt werden, damit Nutzer die Ausgabe in Echtzeit sehen?
  • Wie strukturiert man Eingabeaufforderungen und verarbeitet Antworten in einer Produktionsanwendung?

Das Claude Python SDK übernimmt viele der grundlegenden Interaktionen mit der API. Es bietet typisierte Antwortobjekte, integrierte Wiederholungsmechanismen und eine einfache Schnittstelle für die Arbeit mit der Messages API.

Dieser Artikel führt Sie durch die Einrichtung, den ersten API-Aufruf, das Lesen der Antwort, Systemaufforderungen und das Streaming. Am Ende werden Sie über eine funktionierende Grundlage verfügen.

Voraussetzungen und Installation

Für die Nutzung benötigen Sie Python 3.9 oder höher, ein kostenloses Konto in der Claude Console sowie einen API-Schlüssel, den Sie auf der Seite Einstellungen > API-Schlüssel der Console finden. Sie können 5 USD Guthaben hinzufügen und alle Schritte in diesem Artikel durchgehen.

Nachdem Sie diese Voraussetzungen erfüllt haben, installieren Sie das SDK mit folgendem Befehl:

pip install anthropic

Es ist wichtig, Ihren API-Schlüssel nicht direkt in Quellcodedateien zu hinterlegen. Stattdessen sollten Sie ihn als Umgebungsvariable speichern:

export ANTHROPIC_API_KEY="IHRE-API-KEY-HIER"

Alternativ können Sie ihn in einer .env-Datei im Projektstamm ablegen, wenn Sie python-dotenv verwenden. Das SDK liest den ANTHROPIC_API_KEY aus Ihrer Umgebung, sodass Sie ihn nicht in Ihrem Code übergeben müssen.

Erster API-Aufruf

Der Einstiegspunkt für jede Interaktion ist client.messages.create(). Lassen Sie uns Claude fragen, was ein Kontextfenster ist, da dies ein wichtiges Konzept ist, das Sie beim Arbeiten mit der API verstehen müssen.

Sie übergeben drei Parameter: die Modell-ID, ein Limit für die maximalen Tokens und eine Liste von Nachrichten. Die Liste der Nachrichten besteht immer aus einer Liste von Dictionaries, die jeweils einen „role“- und einen „content“-Schlüssel enthalten.

import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
 model="claude-sonnet-5",
 max_tokens=256,
 messages=[
 {
 "role": "user",
 "content": "In einem Satz, was ist ein Kontextfenster?"
 }
 ]
)
print(response.content[0].text)

Das Feld model nimmt den genauen Modell-ID-String an. max_tokens ist eine harte Obergrenze für die Anzahl der Ausgabetokens, die Claude erzeugen wird; die Antwort stoppt an dieser Stelle, selbst wenn der Gedanke nicht vollständig ist. Daher sollten Sie es hoch genug setzen, um offenen Anfragen gerecht zu werden. Die Liste der Nachrichten muss immer mit einem „user“-Turn beginnen.

Beispielausgabe:

A context window is the maximum amount of text (measured in tokens) that a language model can process and consider at one time, encompassing both your input and its output.

Verstehen des Antwortobjekts

Die Antwort von messages.create() ist ein typisiertes Message-Objekt. Es ist ratsam, die gesamte Struktur zu inspizieren, bevor Sie darauf aufbauen.

Ersetzen Sie die print-Zeile im vorherigen Beispiel durch:

print(response)

Die Ausführung dieses Befehls gibt Ihnen das vollständige Objekt:

Message(
id=’msg_01XFDUDYJgAACzvnptvVoYEL‘,
type=’message‘,
role=’assistant‘,
content=[TextBlock(text=’A context window is…‘, type=’text‘)],
model=’claude-sonnet-5′,
stop_reason=’end_turn‘,
stop_sequence=None,
usage=Usage(input_tokens=19, output_tokens=42)
)

Einige Felder sind wichtiger, als sie zunächst erscheinen. stop_reason gibt an, warum Claude die Generierung gestoppt hat. end_turn bedeutet, dass Claude von sich aus abgeschlossen hat. Wenn Sie max_tokens sehen, wurde die Antwort durch Ihr Limit abgeschnitten, und Sie müssen es möglicherweise erhöhen oder die Eingabeaufforderung überdenken.

Das Feld usage verfolgt sowohl die Eingabe- als auch die Ausgabetokens für die Anfrage. So berechnet Anthropic die Abrechnung, und es ist auch ein Indikator dafür, wenn eine Eingabeaufforderung zu nah an der Kontextgrenze des Modells liegt. content ist eine Liste — in standardmäßigen Textantworten hat sie immer ein Element, einen TextBlock — sodass response.content[0].text der idiomatische Weg ist, den Text herauszuziehen.

Verwendung von Systemaufforderungen

Eine Systemaufforderung ermöglicht es Ihnen, Claude eine dauerhafte Rolle zuzuweisen, Einschränkungen festzulegen oder Kontext bereitzustellen, der für das gesamte Gespräch gelten soll. Sie übergeben sie als oberstes Systemparameter — getrennt von der Nachrichtenliste, nicht als eigene Nachricht.

Hier konfigurieren wir Claude, um als Code-Reviewer zu agieren, der nur in Python antwortet und allgemeine Erklärungen vermeidet:

import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
 model="claude-sonnet-5",
 max_tokens=512,
 system=(
 "You are a Python code reviewer. "
 "Respond only with corrected or improved Python code. "
 "Do not explain changes unless the user explicitly asks."
 ),
 messages=[
 {
 "role": "user",
 "content": (
 "def get_user(id):\n"
 " db = connect()\n"
 " return db.query('SELECT * FROM users WHERE id=' + id)"
 )
 }
 ]
)
print(response.content[0].text)

Die Systemaufforderung steht über dem Gespräch im Kontext von Claude. Sie hat die gleiche Autorität in allen Runden, sodass die von Ihnen festgelegten Rollen, Formatierungsregeln und Domäneneinschränkungen ohne Wiederholung in jeder Nachricht bestehen bleiben.

Streaming von Antworten

Für Anfragen, bei denen Claude einige Sekunden benötigt, um zu antworten, ermöglicht das Streaming, den Text anzuzeigen, während er eintrifft, anstatt auf die vollständige Antwort zu warten. Das SDK stellt dies über client.messages.stream() zur Verfügung, das als Kontextmanager verwendet wird.

Der text_stream-Iterator gibt einzelne Textfragmente in Echtzeit aus. Jedes Fragment ist ein Teilstring, kein vollständiger Satz. Sie übergeben end="" und flush=True an print(), damit die Ausgabe kontinuierlich erscheint, anstatt gepuffert zu werden:

import anthropic
client = anthropic.Anthropic()
with client.messages.stream(
 model="claude-sonnet-5",
 max_tokens=512,
 messages=[
 {
 "role": "user",
 "content": "Walk me through what happens when a Python list grows beyond its initial capacity."
 }
 ]
) as stream:
 for chunk in stream.text_stream:
 print(chunk, end="", flush=True)
print() # newline after stream ends

Der Kontextmanager stellt sicher, dass die HTTP-Verbindung beim Verlassen des Blocks sauber geschlossen wird, selbst wenn während des Streams eine Ausnahme auftritt. Wenn Sie das vollständige Message-Objekt nach dem Streaming benötigen — einschließlich der Token-Nutzungszahlen — rufen Sie stream.get_final_message() auf, bevor der Block geschlossen wird.

Beispielausgabe:

Python lists are dynamic arrays. When you append an element and the list has no room, Python allocates a new, larger block of memory — typically 1.125x the current size — copies all existing elements into it, and releases the old block. This operation is O(n) in the worst case, but because it happens infrequently relative to the number of appends, the amortized cost per append stays O(1). You can pre-allocate capacity with a list comprehension or by passing an iterable to the list constructor if you know the final size upfront.

Nächste Schritte

Sie haben nun die grundlegenden Bausteine: Anfragen, strukturierte Antworten, Systemaufforderungen und Streaming.

Als Nächstes können Sie sich mit Fehlerbehandlung, Token-Nutzung und mehrteiligen Gesprächen vertraut machen. Da die API zustandslos ist, müssen Sie den Gesprächsverlauf mit jeder Anfrage senden. Die SDK-Dokumentation zeigt den empfohlenen Ansatz.

Das API-Referenzdokument enthält auch Funktionen wie strukturierte Ausgaben und die Nutzung von Werkzeugen. Viel Spaß beim Erkunden!

Bala Priya C ist Entwicklerin und technische Autorin aus Indien. Sie arbeitet an der Schnittstelle von Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Ihre Interessensgebiete und Fachkenntnisse umfassen DevOps, Datenwissenschaft und natürliche Sprachverarbeitung. Sie liest, schreibt, programmiert und genießt Kaffee! Derzeit arbeitet sie daran, ihr Wissen mit der Entwicklergemeinschaft zu teilen, indem sie Tutorials, Anleitungen, Meinungsartikel und mehr verfasst. Bala erstellt auch ansprechende Ressourcenübersichten und Programmieranleitungen. Anthropics Claude erstellt jetzt interaktive Diagramme und Grafiken direkt im Chat

„`


Quellen: kdnuggets

Bildquelle: KI generiert

KI Snack