Wird geladen

Dein erster API-Aufruf

Lektion 25 Min.
Wird geladen

Dein erster API-Aufruf

Claude Hallo zu sagen mag dein Herz erwärmen, aber wirklich nützlich ist es nicht. In dieser Lektion schicken wir Claude etwas Echtes und bekommen strukturierte Einsichten zurück — in knapp unter 20 Zeilen Code.

Einrichtung

Hol dir zunächst einen API-Key von platform.claude.com. Prüfe vor deinem ersten API-Aufruf, dass du Guthaben auf der Abrechnungsseite in der Claude Console hast. Falls nicht, füge dort Guthaben hinzu.

Der Dialog der Claude Console zeigt einen neu erstellten API-Key mit einer Schaltfläche „Copy key“ und einem Hinweis, dass der Key nicht erneut angezeigt werden kann

Nimm den API-Key und speichere ihn in einer .env.local-Datei, damit er nicht in deiner Versionskontrolle landet. Keys fest im Quellcode zu hinterlegen ist genau der Weg, wie sie auf GitHub landen und geleakt werden — bewahre sie stattdessen in Umgebungsdateien auf.

Installiere als Nächstes das SDK:

npm install @anthropic-ai/sdk

Der Aufbau einer Anfrage

Jeder API-Aufruf läuft über die Funktion messages.create. Du gibst drei Dinge an:

  • Ein model — welches Claude-Modell die Anfrage bearbeitet
  • Ein max tokens limit — eine Obergrenze dafür, wie lang die Antwort sein darf
  • Eine Liste von messages — Objekte mit entweder der Rolle user oder assistant, ähnlich strukturiert wie ein Gespräch, das du anderswo mit Claude führen würdest

So sieht das in seiner einfachsten Form aus:

typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const msg = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 2048,
  messages: [{
    role: "user",
    content: "Hello, Claude",
  }],
});

Ein echtes Beispiel: fehlerhaften Code überprüfen

Geben wir Claude etwas Interessanteres als „Hallo“. Wir richten es auf etwas fehlerhaften Code und bitten um ein Review. Hier ist das Ganze — eine Datei, etwa 20 Zeilen Code:

typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const buggyCode = `
function add(a, b) {
  return a - b;
}
`;

const response = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 2048,
  system: "You are a terse senior code reviewer. Give feedback in one paragraph.",
  messages: [
    { role: "user", content: `Review this code:\n${buggyCode}` },
  ],
});

for (const block of response.content) {
  if (block.type === "text") {
    console.log(block.text);
  }
}

Zwei Dinge solltest du hier beachten:

  1. Der system-Prompt ist der Ort, an dem du die Persona formst. Ich möchte einen knappen, erfahrenen Reviewer, keinen geschwätzigen — also sage ich einfach genau das.
  2. Der message.content in der Antwort ist ein Array von Blöcken, kein String. Bei einer einfachen Textantwort gibt es normalerweise nur einen Block vom Typ text, aber Claude kann mehrere Blöcke zurückgeben — Text, Tool-Aufrufe, Nachdenken — deshalb iterieren wir immer und prüfen den Typ.

Führe es aus, und Claude erkennt, dass add subtrahiert, und teilt dir das in einem Absatz mit. Das war's. Das ist der gesamte API-Aufruf.

Terminal-Ausgabe des Skripts: Claude antwortet, dass die Funktion add heißt, aber subtrahiert, und schlägt vor, return a - b in return a + b zu ändern

Vom Skript zum Produkt

In einem echten Produkt ist genau diese messages.create-Struktur der Motor hinter etwas wie einem Zusammenfassungs-Endpunkt. Hol ein Meeting-Transkript aus der Datenbank, gib es Claude mit einem System-Prompt, der sagt „extrahiere Erkenntnisse und Risiken“, speichere das Ergebnis zurück in der Zeile und gib es an die Benutzeroberfläche zurück. Es ist derselbe Aufruf — nur eingepackt in einen Route-Handler.

Ein Meetings-Dashboard in einer Demo-Webanwendung, das aufgezeichnete Projektmeetings auflistet, jedes mit einer Transkript-Vorschau und einer Schaltfläche „Generate summary“, die durch denselben API-Aufruf angetrieben wird

Zusammenfassung

  • Dein erster API-Aufruf ist eine messages.create-Funktion mit einem model, einem Token-Limit und messages.
  • Speichere deinen API-Key in einer .env.local-Datei, damit er nicht in die Versionskontrolle gelangt.
  • Füge einen System-Prompt hinzu, um Claudes Verhalten zu formen.
  • Der content der Antwort ist ein Array von Blöcken — iteriere und prüfe den type jedes Blocks.
  • Von hier aus baut alles auf diesem Muster auf.