Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Im JSON-Modus können Sie das Antwortformat des Modells festlegen, um ein gültiges JSON-Objekt als Teil eines Chatabschlusses zurückzugeben. Während das Generieren gültiger JSON-Dateien zuvor möglich war, können Probleme mit der Antwortkonsistenz auftreten, die zu ungültigen JSON-Objekten führen würden, die generiert werden.
Der JSON-Modus garantiert eine gültige JSON-Ausgabe, garantiert jedoch nicht, dass die Ausgabe mit einem bestimmten Schema übereinstimmt. Wenn Sie Schemagarantien benötigen, verwenden Sie Strukturierte Ausgaben.
Hinweis
Während der JSON-Modus weiterhin unterstützt wird, empfehlen wir nach Möglichkeit die Verwendung strukturierter Ausgaben. Im JSON-Modus generierte strukturierte Ausgaben erzeugen gültiges JSON, haben jedoch den zusätzlichen Vorteil, dass Sie das Modell auf die Verwendung eines bestimmten JSON-Schemas beschränken können.
Hinweis
Derzeit werden strukturierte Ausgaben im "Bring Your Own Data"-Szenario nicht unterstützt.
Unterstützung des JSON-Modus
Der JSON-Modus wird derzeit nur mit den folgenden Modellen unterstützt:
API-Unterstützung
Unterstützung für den JSON-Modus wurde zuerst in der API-Version 2023-12-01-preview hinzugefügt.
Beispiel
Bevor Sie die Beispiele ausführen:
- Ersetzen Sie
YOUR-RESOURCE-NAMEdurch Ihren Azure OpenAI-Ressourcennamen. - Ersetzen Sie
YOUR-MODEL_DEPLOYMENT_NAMEdurch den Namen Ihrer Modellbereitstellung.
Die folgenden Beispiele zeigen den JSON-Modus mit den Python und .NET SDKs und PowerShell für direkte REST-Interaktion.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.chat.completions.create(
model="YOUR-MODEL_DEPLOYMENT_NAME", # Model = should match the deployment name you chose for your model deployment
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are a helpful assistant designed to output JSON."},
{"role": "user", "content": "Who won the world series in 2020?"}
]
)
print(response.choices[0].message.content)
Ausgabe
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
Zwei Anforderungen müssen erfüllt sein, um den JSON-Modus erfolgreich zu verwenden:
- Legen Sie das Antwortformat in Ihrer Anforderung fest
json_object. In Python geben Sieresponse_format={ "type": "json_object" }an; in .NET verwenden SieChatResponseFormat.CreateJsonObjectFormat(); in PowerShell setzen Sieresponse_format = @{type = 'json_object'}ein. - Fügen Sie das Wort "JSON" irgendwo in die Nachrichtenkonversation ein (in der Regel die Systemnachricht).
Das Einfügen von Anweisungen für das Modell, JSON als Teil der Nachrichtenkonversation zu erzeugen, ist erforderlich. Es wird empfohlen, diese Anweisung als Teil der Systemmeldung hinzuzufügen. Laut OpenAI kann die Nichthinzufügung dieser Anweisung dazu führen, dass das Modell "einen unendlichen Datenstrom aus Leerzeichen generiert, und die Anforderung kontinuierlich ausgeführt wird, bis sie den Tokengrenzwert erreicht".
Das Nicht-Einbeziehen von "JSON" in die Nachrichten führt zu:
Ausgabe
BadRequestError: Error code: 400 - {'error': {'message': "'messages' must contain the word 'json' in some form, to use 'response_format' of type 'json_object'.", 'type': 'invalid_request_error', 'param': 'messages', 'code': None}}
Weitere Überlegungen
Sie sollten finish_reason auf den Wert length prüfen, bevor Sie die Antwort parsen. Das Modell kann teilweise JSON generieren. Dies bedeutet, dass die Ausgabe des Modells größer als die verfügbaren max_tokens war, die als Teil der Anforderung festgelegt wurden oder die Unterhaltung selbst den Tokengrenzwert überschritten hat.
Der JSON-Modus erzeugt JSON, der gültig ist und ohne Fehler analysiert wird. Es gibt jedoch keine Garantie dafür, dass die Ausgabe mit einem bestimmten Schema übereinstimmt, auch wenn sie in der Eingabeaufforderung angefordert wird.
Problembehandlung
- Wenn
finish_reasonistlength, vergrößern Siemax_tokens(oder reduzieren Sie die Eingabelänge), und versuchen Sie es erneut. Analysieren Sie keinen partiellen JSON-Code. - Wenn Sie Schemagarantien benötigen, wechseln Sie zu strukturierten Ausgaben.