تعرف على كيفية استخدام وضع JSON

يسمح لك وضع JSON بتعيين تنسيق استجابة النماذج لإرجاع كائن JSON صالح كجزء من إكمال الدردشة. بينما كان إنشاء JSON صالحا ممكنا مسبقا، قد تكون هناك مشكلات في تناسق الاستجابة من شأنها أن تؤدي إلى إنشاء كائنات JSON غير صالحة.

دعم وضع JSON

يتم دعم وضع JSON حاليا فقط مع النماذج التالية:

النماذج المدعومة

  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (1106-Preview)
  • gpt-4 (0125-Preview)

دعم API

تمت إضافة دعم وضع JSON لأول مرة في إصدار واجهة برمجة التطبيقات 2023-12-01-preview

مثال

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="gpt-4-0125-Preview", # Model = should match the deployment name you chose for your 0125-Preview 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)

المخرجات

{
  "winner": "Los Angeles Dodgers",
  "event": "World Series",
  "year": 2020
}

هناك عاملان رئيسيان يجب أن يكونا موجودين لاستخدام وضع JSON بنجاح:

  • response_format={ "type": "json_object" }
  • لقد أخبرنا النموذج لإخراج JSON كجزء من رسالة النظام.

بما في ذلك إرشادات النموذج التي يجب أن تنتج JSON كجزء من محادثة الرسائل مطلوب. نوصي بإضافة التعليمات كجزء من رسالة النظام. وفقا لفشل OpenAI في إضافة هذه التعليمات يمكن أن يتسبب النموذج في "إنشاء دفق لا ينتهي من المسافة البيضاء ويمكن تشغيل الطلب باستمرار حتى يصل إلى حد الرمز المميز."

فشل تضمين "JSON" ضمن الرسائل التي ترجع:

المخرجات

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}}

اعتبارات أخرى

يجب التحقق من finish_reason القيمة length قبل تحليل الاستجابة. قد ينشئ النموذج JSON جزئيا. وهذا يعني أن الإخراج من النموذج كان أكبر من max_tokens المتوفرة التي تم تعيينها كجزء من الطلب، أو تجاوزت المحادثة نفسها حد الرمز المميز.

ينتج وضع JSON JSON صالحا ويوزع دون خطأ. ومع ذلك، لا يوجد ضمان للإخراج لمطابقة مخطط معين، حتى إذا طلب منك ذلك في المطالبة.