Wird geladen

Wenn du möchtest, dass Claude strukturierte Daten wie JSON, Python-Code oder Aufzählungslisten generiert, stößt du oft auf ein häufiges Problem: Claude möchte hilfreich sein und fügt erklärenden Text um deinen Inhalt herum hinzu. Das ist normalerweise großartig, aber manchmal brauchst du nur die reinen Daten und nichts anderes.

Stell dir vor, du baust eine Web-App, die AWS EventBridge-Regeln generiert. Nutzer geben eine Beschreibung ein, klicken auf „Generieren" und erwarten, sauberes JSON zu sehen, das sie sofort kopieren und verwenden können. Wenn Claude das JSON in Markdown-Codeblöcke mit erklärenden Überschriften und Fußzeilen verpackt zurückgibt, können Nutzer nicht einfach auf „Alles kopieren" klicken - sie müssten manuell nur den JSON-Teil auswählen.

Dieses Muster zeigt sich immer dann, wenn du strukturierte Daten generierst. Claude möchte von Natur aus seine Arbeit erklären, aber in vielen Fällen willst du nur den Inhalt, den du angefordert hast, und nichts anderes.

Kombination von Stop-Sequenzen mit Assistant-Message-Prefilling

Die Lösung kombiniert zwei Techniken, die wir bereits behandelt haben: Stop-Sequenzen und Assistant-Message-Prefilling. So funktioniert es in der Praxis:

python
messages = []

add_user_message(messages, "Generate a very short event bridge rule as json")
add_assistant_message(messages, "```json")

text = chat(messages, stop_sequences=["```"])

Wenn du diesen Code ausführst, erhältst du nur den JSON-Inhalt zurück, ohne Markdown-Formatierung oder zusätzlichen Kommentar.

Wie es im Hintergrund funktioniert

So läuft es ab, wenn Claude deine Anfrage verarbeitet:

  1. Claude liest deine Nutzernachricht und denkt: „Ich muss eine vollständige Regel schreiben und sie wahrscheinlich beschreiben"
  2. Es sieht die vorausgefüllte Assistant-Nachricht und geht davon aus, dass es bereits begonnen hat, den JSON-Markdown-Block zu schreiben
  3. Claude denkt: „Oh, ich habe den JSON-Teil schon begonnen, also muss ich nur noch den eigentlichen JSON-Inhalt schreiben"
  4. Es generiert den JSON-Inhalt
  5. Wenn Claude versucht, den Markdown-Block mit ``` zu schließen, trifft es auf die Stop-Sequenz und die Generierung stoppt sofort

Das Ergebnis ist, dass du alles zwischen dem vorausgefüllten Anfang und der Stop-Sequenz erhältst - genau den Inhalt, den du wolltest.

Bereinigung der Ausgabe

Der zurückgegebene Text könnte einige zusätzliche Zeilenumbrüche enthalten, aber du kannst das leicht bereinigen:

python
import json

# Als JSON parsen, um zu validieren und zu formatieren
parsed_json = json.loads(text.strip())

Diese Technik funktioniert für jedes strukturierte Datenformat, nicht nur für JSON. Egal ob du Python-Code, Aufzählungslisten oder ein anderes spezifisches Inhaltsformat generierst, du kannst Assistant-Message-Prefilling verwenden, um die Antwort zu starten, und Stop-Sequenzen, um sie genau dort zu beenden, wo du es möchtest.

Dieser Ansatz gibt dir präzise Kontrolle über das Ausgabeformat von Claude und stellt sicher, dass deine Anwendungen saubere, nutzbare Daten erhalten, ohne zusätzliche Formatierung oder Kommentare, die die nachgelagerte Verarbeitung stören könnten.