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.

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.