Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Režim JSON umožňuje nastavit formát odpovědí modelů tak, aby v rámci dokončování chatu vrátil platný objekt JSON. I když bylo možné vygenerovat platný JSON dříve, mohlo dojít k problémům s konzistencí odpovědí, které by mohly vést k vygenerování neplatných objektů JSON.
Poznámka:
I když je režim JSON stále podporovaný, pokud je to možné, doporučujeme používat strukturované výstupy. Stejně jako strukturované výstupy v režimu JSON se generují platné JSON, ale s přidanou výhodou, kterou můžete model omezit na použití konkrétního schématu JSON.
Poznámka:
V současné době nejsou strukturované výstupy podporovány při používání vlastních dat.
Podpora režimu JSON
Režim JSON se v současné době podporuje pouze s následujícími modely:
Podporované modely
-
gpt-35-turbo
(1106) -
gpt-35-turbo
(0125) -
gpt-4
(1106-Preview) -
gpt-4
(0125-Preview) gpt-4o
gpt-4o-mini
Podpora rozhraní API
Podpora režimu JSON byla poprvé přidána ve verzi rozhraní API. 2023-12-01-preview
Příklad
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)
Výstup
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
Aby bylo možné úspěšně používat režim JSON, musí existovat dva klíčové faktory:
response_format={ "type": "json_object" }
- Model jsme řekli, aby v rámci systémové zprávy vypíše JSON.
Pokyny pro model, aby v rámci konverzace zpráv vytvářel JSON, jsou nezbytné. Doporučujeme přidat instrukce jako součást systémové zprávy. Podle OpenAI může vynechání této instrukce způsobit, že model vygeneruje nekonečný proud prázdných znaků a požadavek může běžet neustále, dokud nedosáhne limitu tokenů.
Pokud není 'JSON' zahrnut ve zprávách, vrátí se:
Výstup
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}}
Ostatní úvahy
Před parsováním odpovědi byste měli zkontrolovat finish_reason
hodnotu length
. Model může generovat částečný kód JSON. To znamená, že výstup z modelu byl větší než dostupný max_tokens, které byly nastaveny jako součást požadavku, nebo samotná konverzace překročila limit tokenu.
Režim JSON vytvoří json, který je platný a parsuje bez chyby. Neexistuje však žádná záruka, že výstup odpovídá určitému schématu, i když se vyžaduje v příkazovém řádku.