Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med JSON-läge kan du ange modellsvarsformatet för att returnera ett giltigt JSON-objekt som en del av en chatt. Det gick att generera giltig JSON tidigare, men det kan finnas problem med svarskonsekvens som skulle leda till att ogiltiga JSON-objekt genereras.
Anteckning
JSON-läget stöds fortfarande, men när det är möjligt rekommenderar vi att du använder strukturerade utdata. Precis som strukturerade JSON-lägesutdata genererar giltiga JSON, men med den extra fördelen att du kan begränsa modellen till att använda ett specifikt JSON-schema.
Anteckning
För närvarande stöds inte strukturerade utdata i bring your own data scenario.
Stöd för JSON-läge
JSON-läget stöds endast för närvarande med följande modeller:
Modeller som stöds
-
gpt-35-turbo
(1106) -
gpt-35-turbo
(0125) -
gpt-4
(1106-förhandsversion) -
gpt-4
(0125-Förhandsvisning) gpt-4o
gpt-4o-mini
API-stöd
Stöd för JSON-läge lades först till i API-version 2023-12-01-preview
Exempel
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)
Utdata
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
Det finns två viktiga faktorer som måste finnas för att kunna använda JSON-läge:
response_format={ "type": "json_object" }
- Vi sa till modellen att mata ut JSON som en del av systemmeddelandet.
Det behövs vägledning för modellen att producera JSON som en del av meddelandekonversationen. Vi rekommenderar att du lägger till instruktioner som en del av systemmeddelandet. Enligt OpenAI kan ett misslyckande med att lägga till den här instruktionen leda till att modellen "genererar en oändlig ström av blanksteg och begäran kan fortsätta kontinuerligt tills den når gränsen för antal token".
Om "JSON" inte inkluderas bland meddelandena returneras:
Utdata
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}}
Övriga beaktanden
Du bör söka efter finish_reason
värdet length
innan du parsar svaret. Modellen kan generera partiellt JSON. Det innebär att utdata från modellen var större än de tillgängliga max_tokens som angavs som en del av begäran, eller att själva konversationen överskred tokengränsen.
JSON-läge genererar JSON som är giltigt och parsar utan fel. Det finns dock ingen garanti för att utdata matchar ett visst schema, även om det begärs i prompten.