Megosztás a következőn keresztül:


Ismerje meg, hogyan használhatja a JSON-módot

A JSON mód lehetővé teszi a modellek válaszformátumának beállítását, hogy egy érvényes JSON-objektumot adjon vissza a csevegés befejezése során. Bár korábban lehetséges volt érvényes JSON létrehozása, a válaszkonzisztenciával kapcsolatos problémák miatt érvénytelen JSON-objektumok jönnek létre.

JSON mód támogatása

A JSON mód jelenleg csak a következő modellek esetén támogatott:

Támogatott modellek

  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (1106-előzetes verzió)
  • gpt-4 (0125-preview)

API-támogatás

A JSON mód támogatása először az API-verzióban lett hozzáadva 2023-12-01-preview

Példa

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="gpt-4-0125-Preview", # Model = should match the deployment name you chose for your 0125-Preview 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)

Hozam

{
  "winner": "Los Angeles Dodgers",
  "event": "World Series",
  "year": 2020
}

A JSON mód sikeres használatához két fő tényezőnek kell jelen lennie:

  • response_format={ "type": "json_object" }
  • Azt mondtuk a modellnek, hogy a rendszerüzenet részeként adja ki a JSON-t.

Útmutatásra van szükség ahhoz a modellhez, amelyet JSON-t kell létrehoznia az üzenetbeszélgetés részeként. Javasoljuk, hogy a rendszerüzenet részeként adjon hozzá utasítást. Az OpenAI nem adja hozzá ezt az utasítást, ami azt okozhatja, hogy a modell "létrehoz egy névtelen szabad térfolyamot, és a kérés folyamatosan futhat, amíg el nem éri a jogkivonat korlátját".

A "JSON" nem szerepel a visszaadott üzenetek között:

Hozam

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}}

Egyéb szempontok

A válasz elemzése előtt ellenőrizze finish_reason az értéket length . A modell részleges JSON-t hozhat létre. Ez azt jelenti, hogy a modell kimenete nagyobb volt, mint a kérelem részeként beállított elérhető max_tokens, vagy maga a beszélgetés túllépte a jogkivonat korlátját.

A JSON mód érvényes JSON-t hoz létre, és hiba nélkül elemzi. Azonban nincs garancia arra, hogy a kimenet megfelel egy adott sémának, még akkor sem, ha a parancssorban kérik.