Pelajari cara menggunakan mode JSON
Mode JSON memungkinkan Anda mengatur format respons model untuk mengembalikan objek JSON yang valid sebagai bagian dari penyelesaian obrolan. Meskipun menghasilkan JSON yang valid dimungkinkan sebelumnya, mungkin ada masalah dengan konsistensi respons yang akan menyebabkan objek JSON yang tidak valid dibuat.
Catatan
Meskipun mode JSON masih didukung, jika memungkinkan, sebaiknya gunakan output terstruktur. Seperti output terstruktur mode JSON menghasilkan JSON yang valid, tetapi dengan manfaat tambahan yang dapat Anda batasi model untuk menggunakan skema JSON tertentu.
Catatan
Output terstruktur saat ini tidak didukung pada skenario bawa data Anda sendiri.
Dukungan mode JSON
Mode JSON saat ini hanya didukung dengan model berikut:
Model yang didukung
gpt-35-turbo
(1106)gpt-35-turbo
(0125)gpt-4
(Pratinjau 1106)gpt-4
(Pratinjau 0125)gpt-4o
gpt-4o-mini
Dukungan API
Dukungan untuk mode JSON pertama kali ditambahkan dalam versi API 2023-12-01-preview
Contoh
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)
Output
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
Ada dua faktor utama yang perlu ada agar berhasil menggunakan mode JSON:
response_format={ "type": "json_object" }
- Kami memberi tahu model untuk mengeluarkan JSON sebagai bagian dari pesan sistem.
Termasuk panduan untuk model bahwa itu harus menghasilkan JSON sebagai bagian dari percakapan pesan diperlukan. Sebaiknya tambahkan instruksi sebagai bagian dari pesan sistem. Menurut Kegagalan OpenAI untuk menambahkan instruksi ini dapat menyebabkan model "menghasilkan aliran spasi kosong yang tidak berujung dan permintaan dapat berjalan terus sampai mencapai batas token."
Kegagalan untuk menyertakan "JSON" dalam pesan mengembalikan:
Output
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}}
Pertimbangan lain
Anda harus memeriksa finish_reason
nilai length
sebelum mengurai respons. Model mungkin menghasilkan JSON parsial. Ini berarti bahwa output dari model lebih besar dari max_tokens yang tersedia yang ditetapkan sebagai bagian dari permintaan, atau percakapan itu sendiri melebihi batas token.
Mode JSON menghasilkan JSON yang valid dan diurai tanpa kesalahan. Namun, tidak ada jaminan output untuk mencocokkan skema tertentu, bahkan jika diminta dalam perintah.