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 ohne alles andere.
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ärendem Text verpackt zurückgibt, können Nutzer nicht einfach die gesamte Antwort kopieren - sie müssen manuell nur den JSON-Teil auswählen.

Das Problem mit Standardantworten
Standardmäßig erhältst du, wenn du Claude bittest, JSON zu generieren, möglicherweise etwas wie dies:
```json
\{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": \{
"state": ["running"]
\}
\}
```
This rule captures EC2 instance state changes when instances start running.Das JSON ist korrekt, aber es ist in Markdown-Formatierung verpackt und enthält erklärenden Text. Für eine Web-App, bei der Nutzer das rohe JSON kopieren müssen, entsteht dadurch Reibung in der Nutzererfahrung.
Die Lösung: Assistant-Message-Prefilling + Stop-Sequenzen
Du kannst Assistant-Message-Prefilling mit Stop-Sequenzen kombinieren, um genau den Inhalt zu erhalten, den du möchtest. So funktioniert es:
messages = []
add_user_message(messages, "Generate a very short event bridge rule as json")
add_assistant_message(messages, "```json")
text = chat(messages, stop_sequences=["```"])Diese Technik funktioniert folgendermaßen:
- Die Nutzernachricht teilt Claude mit, was generiert werden soll
- Die vorausgefüllte Assistant-Nachricht lässt Claude glauben, es habe bereits einen Markdown-Codeblock begonnen
- Claude fährt fort, indem es nur den JSON-Inhalt schreibt
- Wenn Claude versucht, den Codeblock mit
```zu schließen, beendet die Stop-Sequenz sofort die Generierung

Das Ergebnis ist sauberes JSON ohne zusätzliche Formatierung:
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["running"]
}
}Verarbeitung der Antwort
Dir fallen möglicherweise einige zusätzliche Zeilenumbruchzeichen in der Antwort auf. Diese sind leicht zu handhaben:
import json
# JSON bereinigen und parsen
clean_json = json.loads(text.strip())Über JSON hinaus
Diese Technik ist nicht auf die JSON-Generierung beschränkt. Verwende sie immer dann, wenn du strukturierte Daten ohne Kommentare benötigst:
- Python-Code-Schnipsel
- Aufzählungslisten
- CSV-Daten
- Jeder formatierte Inhalt, bei dem du nur den Inhalt möchtest, keine Erklärungen
Der Schlüssel liegt darin, zu erkennen, worin Claude deinen Inhalt natürlicherweise verpacken möchte, und das dann als dein Prefill und deine Stop-Sequenz zu verwenden. Bei Code sind das normalerweise Markdown-Codeblöcke. Bei Listen könnten es andere Formatierungsmarker sein.
Dieser Ansatz gibt dir präzise Kontrolle über das Ausgabeformat von Claude und macht es viel einfacher, KI-generierte Inhalte in Anwendungen zu integrieren, bei denen saubere, strukturierte Daten unerlässlich sind.