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.
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)
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="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)
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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk