Dowiedz się, jak używać trybu JSON
Tryb JSON umożliwia ustawienie formatu odpowiedzi modeli w celu zwrócenia prawidłowego obiektu JSON w ramach uzupełniania czatu. Podczas generowania prawidłowego kodu JSON było możliwe wcześniej, mogą wystąpić problemy ze spójnością odpowiedzi, co doprowadziłoby do wygenerowania nieprawidłowych obiektów JSON.
Uwaga
Mimo że tryb JSON jest nadal obsługiwany, jeśli jest to możliwe, zalecamy używanie danych wyjściowych ze strukturą. Podobnie jak w przypadku danych wyjściowych ze strukturą trybu JSON generuje prawidłowy kod JSON, ale z dodatkową korzyścią, którą można ograniczyć do używania określonego schematu JSON.
Uwaga
Obecnie dane wyjściowe ze strukturą nie są obsługiwane w scenariuszu "przynieś własne dane ".
Obsługa trybu JSON
Tryb JSON jest obecnie obsługiwany tylko w przypadku następujących modeli:
Obsługiwane modele
gpt-35-turbo
(1106)gpt-35-turbo
(0125)gpt-4
(1106-Preview)gpt-4
(0125-Preview)gpt-4o
gpt-4o-mini
Obsługa interfejsu API
Obsługa trybu JSON została po raz pierwszy dodana w wersji interfejsu API 2023-12-01-preview
Przykład
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)
Wyjście
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
Istnieją dwa kluczowe czynniki, które muszą być obecne, aby pomyślnie użyć trybu JSON:
response_format={ "type": "json_object" }
- Poinformowaliśmy model o danych wyjściowych JSON w ramach komunikatu systemowego.
Dołączanie wskazówek do modelu, które powinno zawierać dane JSON w ramach konwersacji komunikatów, jest wymagane. Zalecamy dodanie instrukcji w ramach komunikatu systemowego. Zgodnie z błędem openAI dodania tej instrukcji może spowodować, że model "wygeneruje niekończący się strumień białych znaków, a żądanie może być uruchamiane stale, dopóki nie osiągnie limitu tokenu".
Nie można uwzględnić ciągu "JSON" w komunikatach zwraca następujące elementy:
Wyjście
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}}
Inne uwagi
Przed przeanalizowanie odpowiedzi należy sprawdzić finish_reason
wartość length
. Model może wygenerować częściowy kod JSON. Oznacza to, że dane wyjściowe z modelu były większe niż dostępne max_tokens ustawione jako część żądania lub sama konwersacja przekroczyła limit tokenu.
Tryb JSON generuje prawidłowy kod JSON i analizuje bez błędu. Nie ma jednak gwarancji, że dane wyjściowe pasują do określonego schematu, nawet jeśli zostanie wyświetlony monit.