Sdílet prostřednictvím


Naučte se používat režim JSON.

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ě se strukturované výstupy nepodporují při používání vlastního scénáře 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="2024-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.

Včetně pokynů k modelu, který by měl vytvořit JSON v rámci konverzace zpráv, je potřeba. Doporučujeme přidat instrukce jako součást systémové zprávy. Podle chyby OpenAI může přidání této instrukce způsobit, že model "vygeneruje neuskutečňovaný datový proud prázdných znaků a požadavek může běžet nepřetržitě, dokud nedosáhne limitu tokenu".

Selhání zahrnutí "JSON" do zpráv vrátí:

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.