Erste Schritte mit der Claude-API in Python


Erste Schritte mit der Claude-API in Python

# Einführung

Sie möchten Claude zu einer Python-Anwendung hinzufügen. Das Erstellen eines Kontos und das Durchführen Ihres ersten API-Aufrufs ist unkompliziert. Mithilfe der offiziellen Dokumentation können Sie in wenigen Minuten von Null zu einer funktionierenden Anfrage gelangen. Die nächsten Fragen sind meist praktischer:

  • Was enthält das Antwortobjekt?
  • Wie streamen Sie Antworten, damit Benutzer die Ausgabe sehen können, während sie generiert wird?
  • Wie strukturieren Sie Eingabeaufforderungen und handhaben Antworten in einer Produktionsanwendung?

Der Claude Python SDK kümmert sich um einen Großteil der zugrunde liegenden API-Interaktion. Es bietet typisierte Antwortobjekte, integrierte Wiederholungsverarbeitung und eine einfache Schnittstelle für die Arbeit mit Nachrichten-API.

Dieser Artikel führt Sie durch die Einrichtung, Ihren ersten API-Aufruf, das Lesen der Antwort, Systemaufforderungen und das Streaming. Am Ende haben Sie eine funktionierende Grundlage.

# Voraussetzungen und Set up

Sie benötigen Python 3.9 oder höher, ein kostenloses Claude Console-Kontound einen API-Schlüssel von der Konsole Einstellungen > API-Schlüssel Seite. Sie können 5 $ an Credit hinzufügen und alles in diesem Artikel durcharbeiten.

Wenn diese vorhanden sind, installieren Sie das SDK:

Codieren Sie Ihren API-Schlüssel niemals fest in Quelldateien. Speichern Sie es stattdessen als Umgebungsvariable:

export ANTHROPIC_API_KEY="YOUR-API-KEY-HERE"

Oder fügen Sie es zu einem hinzu .env Datei im Projektstammverzeichnis, falls Sie verwenden python-dotenv. Das SDK liest die ANTHROPIC_API_KEY aus Ihrer Umgebung, sodass Sie es nirgendwo in Ihrem Code übergeben müssen.

# Machen Sie Ihren ersten API-Aufruf

Der Einstiegspunkt für jede Interaktion ist consumer.messages.create(). Bitten wir Claude, zu erklären, was ein Kontextfenster ist, etwas, das Sie tatsächlich verstehen müssen, wenn Sie die API verwenden.

Sie übergeben drei Dinge: die Modell-ID, a max_tokens Grenze und a messages Liste. Die Nachrichtenliste ist immer eine Liste von Diktaten mit jeweils einem "function" Und "content material" Schlüssel.

import anthropic

consumer = anthropic.Anthropic()

response = consumer.messages.create(
    mannequin="claude-sonnet-5",
    max_tokens=256,
    messages=(
        {
            "function": "consumer",
            "content material": "In a single sentence, what's a context window?"
        }
    )
)

print(response.content material(0).textual content)

Der mannequin Das Feld enthält die genaue Modell-ID-Zeichenfolge. max_tokens ist eine feste Obergrenze dafür, wie viele Output-Tokens Claude produzieren wird; Die Antwort hört dort auf, auch wenn der Gedanke nicht vollständig ist. Stellen Sie den Wert daher hoch genug für offene Anfragen ein. Der messages Liste muss immer mit a beginnen "consumer" drehen.

Beispielausgabe:

A context window is the utmost quantity of textual content (measured in tokens) {that a} language
mannequin can course of and contemplate at one time, encompassing each your enter and its output.

# Das Antwortobjekt verstehen

Die Antwort von messages.create() ist ein getippt Message Objekt. Es lohnt sich, die gesamte Struktur zu inspizieren, bevor man darauf etwas baut.

Ersetzen Sie die Druckzeile im vorherigen Beispiel durch:

Wenn Sie das ausführen, erhalten Sie das vollständige Objekt:

Message(
  id='msg_01XFDUDYJgAACzvnptvVoYEL',
  kind="message",
  function="assistant",
  content material=(TextBlock(textual content="A context window is...", kind="textual content")),
  mannequin="claude-sonnet-5",
  stop_reason='end_turn',
  stop_sequence=None,
  utilization=Utilization(input_tokens=19, output_tokens=42)
)

Einige Felder sind hier wichtiger, als es zunächst den Anschein hat. stop_reason sagt Ihnen, warum Claude aufgehört hat zu generieren. end_turn bedeutet, dass Claude zu seinen eigenen Bedingungen fertig wurde. Wenn Sie sehen max_tokenswurde die Antwort durch Ihr Restrict abgeschnitten und Sie müssen sie möglicherweise erhöhen oder die Eingabeaufforderung überdenken.

Der utilization Das Feld verfolgt sowohl Eingabe- als auch Ausgabetoken für die Anforderung. Auf diese Weise berechnet Anthropic die Abrechnung, und auf diese Weise erkennen Sie auch, wenn eine Eingabeaufforderung zu nahe an die Kontextgrenze des Modells herankommt. content material ist eine Liste – in Standardtextantworten enthält sie immer ein Ingredient, a TextBlock – Additionally response.content material(0).textual content ist die idiomatische Artwork, den Textual content herauszuziehen.

# Verwenden von Systemaufforderungen

A Systemaufforderung Mit dieser Funktion können Sie Claude eine dauerhafte Rolle zuweisen, Einschränkungen festlegen oder Kontext bereitstellen, der für die gesamte Konversation gelten soll. Sie bestehen es als High-Stage system Parameter – getrennt von der Nachrichtenliste, nicht als Nachricht selbst.

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

import anthropic

consumer = anthropic.Anthropic()

response = consumer.messages.create(
    mannequin="claude-sonnet-5",
    max_tokens=512,
    system=(
        "You're a Python code reviewer. "
        "Reply solely with corrected or improved Python code. "
        "Don't clarify modifications except the consumer explicitly asks."
    ),
    messages=(
        {
            "function": "consumer",
            "content material": (
                "def get_user(id):n"
                "    db = join()n"
                "    return db.question('SELECT * FROM customers WHERE id=' + id)"
            )
        }
    )
)

print(response.content material(0).textual content)

Die Systemaufforderung befindet sich über der Konversation in Claudes Kontext. Es hat in allen Runden die gleiche Autorität, sodass Rollenanweisungen, Formatierungsregeln und Domäneneinschränkungen, die Sie hier festlegen, bestehen bleiben, ohne dass Sie sie in jeder Nachricht wiederholen müssen.

# Streaming-Antworten

Bei Anfragen, bei denen es einige Sekunden dauern kann, bis Claude antwortet, können Sie den Textual content beim Streamen sofort anzeigen, anstatt auf die vollständige Antwort zu warten. Das SDK macht dies durch verfügbar consumer.messages.stream()wird als Kontextmanager verwendet.

Der text_stream Der Iterator liefert einzelne Textblöcke in Echtzeit. Jeder Block ist ein String-Fragment, kein vollständiger Satz. Du hast bestanden finish="" Und flush=True Zu print() Die Ausgabe erfolgt additionally kontinuierlich und nicht gepuffert:

import anthropic

consumer = anthropic.Anthropic()

with consumer.messages.stream(
    mannequin="claude-sonnet-5",
    max_tokens=512,
    messages=(
        {
            "function": "consumer",
            "content material": "Stroll me by what occurs when a Python record grows past its preliminary capability."
        }
    )
) as stream:
    for chunk in stream.text_stream:
        print(chunk, finish="", flush=True)

print()  # newline after stream ends

Der Kontextmanager stellt sicher, dass die HTTP-Verbindung sauber geschlossen wird, wenn der Block beendet wird, selbst wenn mitten im Stream eine Ausnahme ausgelöst wird. Wenn Sie das Komplette benötigen Message Objekt nach dem Streaming – einschließlich der Anzahl der Token-Nutzungen – aufrufen stream.get_final_message() bevor der Block geschlossen wird.

Beispielausgabe:

Python lists are dynamic arrays. Once you append a component and the record has no
room, Python allocates a brand new, bigger block of reminiscence — sometimes 1.125x the present
dimension — copies all current parts into it, and releases the previous block. This
operation is O(n) within the worst case, however as a result of it occurs occasionally relative to
the variety of appends, the amortized price per append stays O(1). You may pre-allocate
capability with a listing comprehension or by passing an iterable to the record constructor
if  the ultimate dimension upfront.

# Nächste Schritte

Sie verfügen nun über die Kernbausteine: Anfragen, strukturierte Antworten, Systemaufforderungen und Streaming.

Als Nächstes erfahren Sie mehr über Fehlerbehandlung, Token-Nutzung und Konversationen mit mehreren Runden. Da die API zustandslos ist, müssen Sie bei jeder Anfrage den Konversationsverlauf senden. Die SDK-Dokumentation zeigt die empfohlene Vorgehensweise.

Die API-Referenz enthält auch Funktionen wie strukturierte Ausgaben Und Werkzeuggebrauch. Viel Spaß beim Erkunden!

Bala Priya C ist ein Entwickler und technischer Redakteur aus Indien. Sie arbeitet gerne an der Schnittstelle von Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Zu ihren Interessen- und Fachgebieten gehören DevOps, Datenwissenschaft und Verarbeitung natürlicher Sprache. Sie liebt es zu lesen, zu schreiben, zu programmieren und Kaffee zu trinken! Derzeit arbeitet sie daran, zu lernen und ihr Wissen mit der Entwickler-Neighborhood zu teilen, indem sie Tutorials, Anleitungen, Meinungsbeiträge und mehr verfasst. Bala erstellt außerdem ansprechende Ressourcenübersichten und Programmier-Tutorials.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert