Aracılığıyla paylaş


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.