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.
Feljegyzés
Bár a JSON mód továbbra is támogatott, lehetőség szerint strukturált kimenetek használatát javasoljuk. A JSON módhoz hasonlóan a strukturált kimenetek is létrehoznak érvényes JSON-kimeneteket, de a hozzáadott előnyökkel korlátozható, hogy a modell egy adott JSON-sémát használjon.
Feljegyzés
A strukturált kimenetek jelenleg nem támogatottak a saját adatforgatókönyv használata esetén.
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)gpt-4o
gpt-4o-mini
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="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)
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.