Saat melakukan tugas ekstraksi informasi atau pembuatan data terstruktur, model dapat mengembalikan teks tambahan (seperti ```json ) yang mengganggu penguraian downstream. Mengaktifkan output terstruktur memastikan model mengembalikan string JSON yang valid. Mode Skema JSON juga memberikan kontrol presisi atas struktur dan tipe output, menghilangkan kebutuhan akan validasi tambahan atau percobaan ulang.
Penggunaan
Output terstruktur mendukung dua mode: Objek JSON dan Skema JSON.
-
Mode Objek JSON: Memastikan output adalah string JSON yang valid, tetapi tidak menjamin struktur tertentu. Penggunaan:
- Atur parameter
response_format: Di badan permintaan, aturresponse_formatmenjadi{\"type\": \"json_object\"}. - Sertakan kata kunci JSON dalam prompt Anda: Pesan sistem atau pesan pengguna harus mengandung kata "JSON" (tidak peka huruf besar/kecil), jika tidak API akan mengembalikan:
'messages' must contain the word 'json' in some form, to use 'response_format' of type 'json_object'.
- Atur parameter
-
Mode Skema JSON: Memastikan output sesuai dengan struktur yang ditentukan. Penggunaan: atur
response_formatmenjadi{\"type\": \"json_schema\", \"json_schema\": {...}, \"strict\": true}.Tidak diperlukan kata kunci JSON dalam prompt.
Fitur | Mode Objek JSON | Mode Skema JSON |
|---|---|---|
Menghasilkan JSON valid | Ya | Ya |
Mengikuti skema secara ketat | Tidak | Ya |
Model yang didukung | Sebagian besar model Qwen | Hanya model qwen-plus tertentu |
Pengaturan |
|
|
Persyaratan prompt | Harus menyertakan \"JSON\" | Disarankan untuk mendeskripsikan secara eksplisit |
Kasus penggunaan | Output JSON fleksibel | Validasi skema presisi |
Model yang didukung
- Objek JSON
- Skema JSON
- Qwen
- Kimi
- GLM
- DeepSeek
-
Model generasi teks
- Qwen-Max: Seri Qwen3.8-Max, seri Qwen3.7-Max
- Qwen-Max (mode non-berpikir): Seri Qwen3.6-Max, seri Qwen3-Max, seri Qwen-Max
- Qwen-Plus: Seri Qwen3.7-Plus
- Qwen-Plus (mode non-berpikir): Seri Qwen3.6-Plus, seri Qwen3.5-Plus, seri Qwen-Plus
- Qwen-Flash: Seri Qwen3.8-Flash, Seri Qwen3.7-Flash
- Qwen-Flash (mode non-berpikir): Seri Qwen3.6-Flash, seri Qwen3.5-Flash, seri Qwen-Flash
- Qwen-Turbo (mode non-berpikir): Seri Qwen-Turbo
- Qwen-Coder: Seri Qwen3-Coder
- Qwen-Long: Seri Qwen-Long
- Seri open-source Qwen3.8
- Seri open-source Qwen3.6 (mode non-berpikir)
- Seri open-source Qwen3.5 (mode non-berpikir)
- Seri open-source Qwen3 (mode non-berpikir)
- Seri open-source Qwen3-Coder
- Seri open-source Qwen2.5 (tidak termasuk model math dan coder)
-
Model multimodal
- Qwen-VL (mode non-berpikir): Seri Qwen3-VL-Plus, seri Qwen3-VL-Flash, seri Qwen-VL-Max (tidak termasuk versi terbaru dan snapshot), seri Qwen-VL-Plus (tidak termasuk versi terbaru dan snapshot)
- Qwen-Omni: Seri Qwen3.5-Omni-Plus
- Seri open-source Qwen3-VL (mode non-berpikir)
response_format yang diatur ke {\"type\": \"json_object\"} dalam mode berpikir tanpa error, tetapi beberapa mungkin mengembalikan konten yang tidak sepenuhnya valid JSON; jika Anda memerlukan JSON yang valid secara andal, lihat FAQ.Memulai
Contoh ini mengekstrak informasi terstruktur dari profil pribadi.
Dapatkan kunci API dan ekspor kunci API sebagai variabel lingkungan. Jika Anda menggunakan OpenAI SDK atau DashScope SDK untuk melakukan panggilan, instal SDK.
- Kompatibel OpenAI
- DashScope
- Python
- Node.js
- curl
Respons
Pemrosesan data gambar dan video
Model multimodal juga mendukung output terstruktur untuk gambar dan video. Gunakan mode JSON untuk mengekstrak data terstruktur dari konten visual, seperti nilai bidang dari tanda terima, lokasi objek dalam gambar, atau peristiwa dalam video.
Untuk batas file gambar dan video, lihat Pemahaman gambar dan video .
- Kompatibel OpenAI
- DashScope
- Python
- Node.js
- curl
Respons
Mengoptimalkan prompt
Prompt yang ambigu seperti "kembalikan informasi pengguna" menyebabkan struktur output yang tidak dapat diprediksi. Untuk hasil yang andal, jelaskan skema yang diharapkan dalam prompt Anda: tentukan nama field, tipe, status wajib atau opsional, batasan format (seperti format tanggal), dan sertakan contoh.
- Kompatibel OpenAI
- DashScope
- Python
- Node.js
Respons
Mendapatkan output terstruktur
Mengatur response_format type ke json_object akan mengembalikan string JSON yang valid, namun strukturnya mungkin tidak sesuai dengan ekspektasi Anda—cocok untuk skenario sederhana. Untuk penguraian otomatis, interoperabilitas API, dan skenario kompleks lainnya yang memerlukan batasan tipe yang ketat, atur type ke json_schema untuk memaksa model menghasilkan konten yang secara ketat sesuai dengan format yang ditentukan. Format dan contoh response_format:
name dan age) serta satu bidang opsional email.
Model di wilayah Singapura belum didukung.
Cara menggunakan
Dengan metode parse pada OpenAI SDK, Anda dapat meneruskan kelas Pydantic Python atau objek Zod Node.js secara langsung. SDK akan secara otomatis mengonversinya menjadi JSON Schema—tidak perlu menulis JSON kompleks secara manual. Untuk DashScope SDK, buat JSON Schema secara manual mengikuti format di atas.
- Kompatibel dengan OpenAI
- DashScope
Python
Node.js
Panduan konfigurasi
Ikuti pedoman ini saat menggunakan JSON Schema untuk output terstruktur yang lebih andal:
-
Deklarasi field wajib
Disarankan untuk mencantumkan field wajib dalam array
required. Field opsional dapat dihilangkan, misalnya:
-
Mengimplementasikan field opsional
Selain mengecualikan dari
required, Anda juga dapat mengizinkan tipenull:
email, tetapi nilainya dapat berupa null.
- Konfigurasi additionalProperties Mengontrol apakah field tambahan yang tidak didefinisikan dalam skema diizinkan:
\"Saya Zhang San, berusia 25 tahun\"; output: {\"name\": \"Zhang San\", \"age\": 25} (menyertakan field age yang tidak didefinisikan).
Nilai | Perilaku | Kasus penggunaan |
|---|---|---|
| Hanya mengeluarkan field yang didefinisikan | Kontrol struktur yang presisi |
| Mengizinkan field tambahan | Menangkap lebih banyak informasi |
- Tipe data yang didukung: string, number, integer, boolean, object, array, enum.
Peluncuran produksi
- Validasi sebelum diteruskan ke downstream Saat menggunakan mode JSON Object, validasi output sebelum meneruskannya ke layanan downstream. Gunakan pustaka seperti jsonschema (Python), Ajv (JavaScript), atau Everit (Java) untuk memastikan output sesuai dengan JSON Schema yang diharapkan, sehingga mencegah kegagalan parsing downstream, kehilangan data, atau gangguan logika bisnis akibat field yang hilang, kesalahan tipe, atau format yang tidak valid. Jika gagal, coba ulang permintaan atau gunakan model untuk menulis ulang output.
-
Jangan menetapkan max_tokens
Jangan menetapkan
max_tokenssaat output terstruktur diaktifkan. Parameter ini membatasi jumlah token output dan defaultnya adalah maksimum model. Penetapan parameter ini dapat memutus string JSON di tengah output, menghasilkan JSON yang tidak valid dan gagal diparsing. -
Gunakan SDK untuk membuat skema
Gunakan SDK untuk membuat skema secara otomatis. Hal ini menghindari kesalahan dari pemeliharaan manual serta menyediakan validasi dan parsing otomatis.
Python
FAQ
T: Bagaimana model mode berpikir Qwen menghasilkan output terstruktur?
Model yang dilabeli "mode non-berpikir" mengembalikan konten yang bukan merupakan string JSON yang valid secara ketat dalam mode berpikir. Anda dapat menggunakan pendekatan dua langkah berikut untuk memperbaikinya: pertama, panggil model berpikir untuk mendapatkan output berkualitas tinggi, lalu lewati JSON yang salah format melalui model yang mendukung mode JSON untuk memperbaikinya.
-
Dapatkan output dari model mode berpikir
Panggil model mode berpikir. Hasilnya mungkin bukan JSON yang valid.
Catatan: menetapkan parameter
response_formatke{\"type\": \"json_object\"}saat mode berpikir diaktifkan tidak menyebabkan error. Berikut adalah contoh fallback yang sengaja mengabaikanresponse_format; gunakan hanya untuk memperbaiki kasus di mana output model bukan JSON yang valid.
-
Validasi dan perbaiki output
Coba parse
json_stringdari langkah sebelumnya:- Jika model mengembalikan JSON yang valid, parse dan gunakan langsung.
- Jika model mengembalikan JSON yang tidak valid, panggil model yang mendukung output terstruktur (model cepat dan berbiaya rendah seperti qwen-flash dalam mode non-berpikir bekerja dengan baik) untuk memperbaiki format.