Strukturierte Ausgabe
Strukturierte Ausgabe lässt das Modell Daten im von Ihnen vorgegebenen JSON-Format zurückgeben — ideal für Datenextraktion, Klassifizierung, Formularfüllung und ähnliche Anwendungsfälle.
JSON Mode
Der einfachste Weg zur strukturierten Ausgabe — das Modell wird zur Rückgabe von gültigem JSON gezwungen:
Python
json_mode.py
from openai import OpenAI
client = OpenAI(
base_url="https://api.ofox.ai/v1",
api_key="<Ihr OFOXAI_API_KEY>"
)
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "system", "content": "Sie sind ein Datenextraktionsassistent. Geben Sie die Ergebnisse im JSON-Format zurück."},
{"role": "user", "content": "Extrahieren Sie Name, Firma und Position aus folgendem Text: Max Müller ist Senior Engineer bei SAP"}
],
response_format={"type": "json_object"}
)
import json
result = json.loads(response.choices[0].message.content)
print(result)
# {"name": "Max Müller", "company": "SAP", "title": "Senior Engineer"}Bei Verwendung des JSON Mode muss der System-Prompt das Schlüsselwort „JSON” enthalten, da manche Modelle die Formatanforderung sonst ignorieren.
JSON-Schema-Constraints
Noch präzisere Kontrolle über die Ausgabestruktur — Feldnamen und Typen werden exakt vorgegeben:
json_schema.py
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "user", "content": "Analysiere die Stimmung dieser Nutzerbewertung: Dieses Produkt ist fantastisch, sehr benutzerfreundlich!"}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "sentiment_analysis",
"schema": {
"type": "object",
"properties": {
"sentiment": {
"type": "string",
"enum": ["positive", "negative", "neutral"],
"description": "Stimmungstendenz"
},
"confidence": {
"type": "number",
"description": "Konfidenz 0-1"
},
"keywords": {
"type": "array",
"items": {"type": "string"},
"description": "Emotionale Schlüsselwörter"
}
},
"required": ["sentiment", "confidence", "keywords"],
"additionalProperties": False
}
}
}
)Ausgabe:
{
"sentiment": "positive",
"confidence": 0.95,
"keywords": ["fantastisch", "sehr benutzerfreundlich"]
}Praxisszenarien
Datenextraktion
# Strukturierte Daten aus unstrukturiertem Text extrahieren
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{
"role": "user",
"content": """Extrahieren Sie die folgenden Bestellinformationen:
Kunde Max Müller hat am 15. Januar 2025 drei MacBook Pro bestellt,
Stückpreis 2.499 Euro, Lieferadresse: Berlin, Bezirk Mitte, Beispielstraße 123"""
}],
response_format={
"type": "json_schema",
"json_schema": {
"name": "order_info",
"schema": {
"type": "object",
"properties": {
"customer": {"type": "string"},
"date": {"type": "string"},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"quantity": {"type": "integer"},
"unit_price": {"type": "number"}
}
}
},
"address": {"type": "string"}
},
"required": ["customer", "date", "items", "address"]
}
}
}
)Klassifizierung
# Multi-Label-Klassifizierung
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{
"role": "user",
"content": "Klassifiziere das Thema dieses Artikels: KI-Technologie wird im Gesundheitswesen immer breiter eingesetzt..."
}],
response_format={
"type": "json_schema",
"json_schema": {
"name": "classification",
"schema": {
"type": "object",
"properties": {
"primary_category": {"type": "string"},
"secondary_categories": {
"type": "array",
"items": {"type": "string"}
},
"tags": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["primary_category"]
}
}
}
)Unterstützte Modelle
| Modell | JSON Mode | JSON Schema |
|---|---|---|
openai/gpt-4o | Ja | Ja |
openai/gpt-4o-mini | Ja | Ja |
anthropic/claude-sonnet-4.5 | Ja | — |
google/gemini-3-flash-preview | Ja | Ja |
Modelle ohne JSON-Schema-Unterstützung können einen ähnlichen Effekt erzielen, indem das erwartete JSON-Format im System-Prompt detailliert beschrieben wird.
Last updated on