JSON modunu kullanmayı öğrenin
JSON modu, sohbet tamamlama işleminin bir parçası olarak geçerli bir JSON nesnesi döndürmek için modellerin yanıt biçimini ayarlamanıza olanak tanır. Daha önce geçerli JSON oluşturmak mümkün olsa da, geçersiz JSON nesnelerinin oluşturulmasına neden olabilecek yanıt tutarlılığı sorunları olabilir.
Not
JSON modu hala destekleniyor olsa da, mümkün olduğunda yapılandırılmış çıkışları kullanmanızı öneririz. JSON modu yapılandırılmış çıkışlarının geçerli JSON oluşturması gibi, ancak eklenen avantajla modeli belirli bir JSON şemasını kullanacak şekilde kısıtlayabilirsiniz.
Not
Şu anda yapılandırılmış çıkışlar kendi verilerinizi getirme senaryosunda desteklenmemektedir.
JSON modu desteği
JSON modu şu anda yalnızca aşağıdaki modellerle desteklenmektedir:
Desteklenen modeller
gpt-35-turbo
(1106)gpt-35-turbo
(0125)gpt-4
(1106-Önizleme)gpt-4
(0125-Önizleme)gpt-4o
gpt-4o-mini
API desteği
JSON modu desteği ilk olarak API sürümünde eklendi 2023-12-01-preview
Örnek
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)
Çıktı
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
JSON modunu başarıyla kullanmak için mevcut olması gereken iki önemli faktör vardır:
response_format={ "type": "json_object" }
- Modele sistem iletisinin bir parçası olarak JSON çıkışını oluşturmasını söyledik.
İleti konuşmasının bir parçası olarak JSON üretmesi gereken modele yönelik yönergeler de gereklidir. Sistem iletisinin bir parçası olarak yönerge eklemenizi öneririz. OpenAI'nin bu yönergeyi ekleyememesine göre model "uçamayan bir boşluk akışı oluşturabilir ve istek belirteç sınırına ulaşana kadar sürekli olarak çalıştırılabilir."
İletilere "JSON" eklenemedi:
Çıktı
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}}
Dikkat edilecek diğer noktalar
Yanıtı ayrıştırmadan önce değeri length
denetlemeniz finish_reason
gerekir. Model kısmi JSON oluşturabilir. Bu, modelin çıkışının isteğin parçası olarak ayarlanan kullanılabilir max_tokens daha büyük olduğu veya konuşmanın belirteç sınırını aştığı anlamına gelir.
JSON modu geçerli olan JSON üretir ve hatasız ayrıştırılır. Ancak, isteminde istense bile çıkışın belirli bir şemayla eşleşmesi garanti değildir.