Bagikan melalui


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.

Nota

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.

Nota

Output terstruktur saat ini tidak didukung pada skenario bawa data 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 (1106-Pratinjau)
  • 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="2025-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)

Keluaran

{
  "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 bahwa model harus menghasilkan JSON sebagai bagian dari percakapan pesan adalah 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:

Keluaran

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 untuk 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.