Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de JSON-modus kunt u de antwoordindeling van modellen instellen om een geldig JSON-object te retourneren als onderdeel van een chatvoltooiing. Hoewel het eerder mogelijk was om geldige JSON te genereren, kunnen er problemen zijn met responsconsistentie die zouden leiden tot het genereren van ongeldige JSON-objecten.
Notitie
Hoewel de JSON-modus nog steeds wordt ondersteund, raden we u aan gestructureerde uitvoer te gebruiken. Net zoals gestructureerde uitvoer in JSON-modus genereert het geldige JSON, met als extra voordeel dat u het model kunt dwingen een specifiek JSON-schema te gebruiken.
Notitie
Gestructureerde uitvoer wordt momenteel niet ondersteund in de bring-your-own-data-situatie.
Ondersteuning voor JSON-modus
De JSON-modus wordt momenteel alleen ondersteund met de volgende modellen:
Ondersteunde modellen
-
gpt-35-turbo
(1106) -
gpt-35-turbo
(0125) -
gpt-4
(1106-preview) -
gpt-4
(0125-preview) gpt-4o
gpt-4o-mini
API-ondersteuning
Ondersteuning voor de JSON-modus is voor het eerst toegevoegd in API-versie 2023-12-01-preview
Voorbeeld
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2025-03-01-preview"
)
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)
Uitvoer
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
Er zijn twee belangrijke factoren die aanwezig moeten zijn om de JSON-modus te kunnen gebruiken:
response_format={ "type": "json_object" }
- We hebben het model verteld JSON uit te voeren als onderdeel van het systeembericht.
Het opnemen van richtlijnen voor het model dat het JSON moet produceren als onderdeel van het berichtengesprek is vereist. U wordt aangeraden instructies toe te voegen als onderdeel van het systeembericht. Volgens de OpenAI-fout om deze instructie toe te voegen, kan het model ertoe leiden dat 'een niet-gecodeerde stroom van witruimte genereert en de aanvraag voortdurend kan worden uitgevoerd totdat de tokenlimiet is bereikt'.
Als u 'JSON' niet opneemt in de berichten, wordt het volgende geretourneerd:
Uitvoer
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}}
Andere overwegingen
finish_reason
Controleer de waarde length
voordat u het antwoord parseert. Het model kan gedeeltelijke JSON genereren. Dit betekent dat de uitvoer van het model groter is dan de beschikbare max_tokens die zijn ingesteld als onderdeel van de aanvraag, of dat het gesprek zelf de tokenlimiet heeft overschreden.
De JSON-modus produceert JSON die geldig is en zonder fouten parseert. Er is echter geen garantie dat de uitvoer overeenkomt met een specifiek schema, zelfs als dit wordt aangevraagd in de prompt.