Zum Hauptinhalt springen

Dein erster produktiver API-Aufruf (kostenbewusst)

Fortgeschritten

Ein simpler API-Aufruf ist eine einzige Zeile. Ein produktiver Aufruf behandelt Fehler, streamt die Ausgabe, überwacht die Kosten und schützt Secrets. Lass uns das Schritt für Schritt aufbauen.

Schritt 1 — Secrets und Modell aus der Konfiguration

export ANTHROPIC_API_KEY="sk-ant-..." # never in source control

Halte die Modell-ID in der Konfiguration, nicht verstreut als Literale, damit eine Migration trivial bleibt (warum). Wähle sie bewusst — Ein Modell auswählen.

Schritt 2 — Ein robuster, gestreamter Aufruf

import os, time, random, anthropic
client = anthropic.Anthropic()
MODEL = os.environ.get("CLAUDE_MODEL", "claude-sonnet-4-6")

def ask_stream(prompt, system=None, max_tokens=1024):
for attempt in range(5):
try:
with client.messages.stream(
model=MODEL, max_tokens=max_tokens,
system=system or anthropic.NOT_GIVEN,
messages=[{"role": "user", "content": prompt}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final = stream.get_final_message()
print()
usage = final.usage
print(f"\n[tokens in/out: {usage.input_tokens}/{usage.output_tokens}]")
return final
except (anthropic.RateLimitError, anthropic.APIStatusError):
if attempt == 4: raise
time.sleep(min(2 ** attempt + random.random(), 30))

Schritt 3 — Auf die Kosten achten

  • Token-Verbrauch protokollieren (siehe oben), damit du siehst, was jeder Aufruf kostet.
  • max_tokens und das Modell passend dimensionieren; begrenze die Eingabe mit fokussierten Prompts.
  • Füge bei wiederkehrenden, stabilen Präfixen Prompt-Caching hinzu.
  • Siehe Tokens und Preise sowie Kosten und Latenz.

Schritt 4 — Die ungünstigen Pfade behandeln

  • Wiederhole transiente Fehler (429/5xx) mit Backoff (siehe oben); wiederhole keine 400er.
  • Behandle Verweigerungen elegant.
  • Setze ein Timeout und ein Kosten-/Iterationsbudget für alles Agentische.

Überprüfen

Führe es aus: Du solltest gestreamte Ausgabe, eine Zeile mit dem Token-Verbrauch und ein elegantes Verhalten sehen, wenn du einen Fehler erzwingst (z. B. ein falscher Schlüssel → eine saubere Meldung, kein Absturz).

Weiter