Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
JSON modu, sohbet tamamlama işleminin bir parçası olarak geçerli bir JSON nesnesi döndürmek için modelin 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.
JSON modu geçerli JSON çıkışını garanti eder, ancak çıkışın belirli bir şemayla eşleştiğinden emin değildir. Şema garantilerine ihtiyacınız varsa Yapılandırılmış Çıkışlar'ı kullanın.
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:
API desteği
JSON modu desteği ilk olarak API sürümü 2023-12-01-preview eklendi
Örnek
Örnekleri çalıştırmadan önce:
-
YOUR-RESOURCE-NAMEdeğerini Azure OpenAI kaynak adınızla değiştirin. -
YOUR-MODEL_DEPLOYMENT_NAMEöğesini model dağıtımınızın adıyla değiştirin.
Aşağıdaki örneklerde Python ve .NET SDK'larını kullanan JSON modu ve doğrudan REST etkileşimi için PowerShell gösterilmektedir.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
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)
Çıkış
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
JSON modunun başarıyla kullanılabilmesi için iki gereksinimin de karşılanması gerekir:
- İsteğinizde yanıt biçimini olarak
json_objectayarlayın. Python'daresponse_format={ "type": "json_object" }geçin; .NET'teChatResponseFormat.CreateJsonObjectFormat()kullanın; PowerShell'deresponse_format = @{type = 'json_object'}ayarlayın. - İleti konuşmasında bir yere "JSON" sözcüğünü ekleyin (genellikle sistem iletisi).
İleti konuşmasının bir parçası olarak JSON üretmesi gereken modele yönelik yönergeler de gereklidir. Bu yönergeyi sistem iletisinin bir parçası olarak eklemenizi öneririz. OpenAI'ye göre, bu talimatın eklenmemesi, modelin "sonsuz boşluk karakterleri dizisi oluşturmasına neden olabilir ve istek, belirteç sınırına ulaşana kadar kesintisiz olarak çalışmaya devam edebilir."
"İletilere 'JSON' eklenmemesi şu hatayı döndürür:"
Çıkış
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 edilmesi gereken diğer noktalar
Yanıtı ayrıştırmadan önce finish_reason'da length değerini denetlemelisiniz. Model kısmi JSON oluşturabilir. Bu, modelden gelen çıktının isteğe dahil edilen max_tokens limitinden daha büyük olduğu ya da konuşmanın kendisinin 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, talep edilse bile çıkışın belirli bir şemayla eşleşmesi kesin değildir.
Sorun giderme
- Eğer
finish_reasonlengthise,max_tokens'yi artırın (veya istemin uzunluğunu azaltın) ve yeniden deneyin. JSON verisini kısmen ayrıştırmayın. - Şema garantilerine ihtiyacınız varsa Yapılandırılmış Çıkışlar'a geçin.