berita

Akurat dan 0 kesalahan, masukkan harga dan itu akan rusak! API pengumuman resmi OpenAI mendukung keluaran terstruktur, akurasi JSON 100%

2024-08-07

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



  Laporan Kebijaksanaan Baru

Editor: Departemen Editorial
[Pengantar Kebijaksanaan Baru] Kabar baik untuk programmer! Model API OpenAI yang baru diluncurkan semuanya mendukung keluaran terstruktur, tingkat pencocokan Skema JSON mencapai 100%, dan biaya segera berkurang setengahnya.
Masih memeras otak untuk memikirkan sekumpulan kata-kata cepat, dan pusing karena berbagai hasil keluaran setelah satu operasi?
OpenAI akhirnya mendengar suara massa dan menyediakan fitur No. 1 yang telah lama ditunggu-tunggu oleh para pengembang.
OpenAI hari ini mengumumkan peluncuran fitur baru, dan ChatGPT API kini mendukung keluaran terstruktur JSON.
JSON (JavaScript Object Notation) adalah standar industri untuk format pertukaran file dan data karena mudah dibaca oleh manusia dan mudah diurai oleh mesin.
Namun, LLM sering kali bekerja melawan JSON, sering kali menghasilkan halusinasi, baik menghasilkan respons yang hanya mengikuti sebagian instruksi, atau menghasilkan sekumpulan "buku surgawi" yang tidak dapat diuraikan sepenuhnya sama sekali.
Hal ini mengharuskan pengembang untuk menggunakan beberapa alat sumber terbuka, mencoba perintah yang berbeda, atau mengulangi permintaan untuk menghasilkan keluaran yang diinginkan, yang memakan waktu dan tenaga.
Fitur keluaran terstruktur, yang dirilis hari ini, memecahkan masalah pelik di atas dan memastikan bahwa keluaran yang dihasilkan oleh model cocok dengan skema yang ditentukan dalam JSON.
Fungsi keluaran terstruktur selalu menjadi fitur nomor satu yang diminta oleh pengembang. Ultraman juga menyatakan dalam tweetnya bahwa versi ini dirilis sebagai tanggapan atas permintaan dari pengguna.
Fitur-fitur baru yang dirilis oleh OpenAI memang telah menyentuh hati banyak pengembang, dan mereka semua setuju bahwa "Ini adalah masalah besar."
Banyak orang meninggalkan pesan yang mengungkapkan pujian mereka, dengan menyebut "Luar Biasa!"
Ada yang senang dan ada pula yang sedih. Pembaruan OpenAI ini membuat masyarakat khawatir akan menelan startup.
Namun, bagi pengguna awam, pertanyaan yang lebih mereka khawatirkan adalah kapan GPT-5 akan dirilis? Sedangkan untuk Skema JSON, "Apa itu?"
Lagi pula, tanpa berita tentang GPT-5, DevDay OpenAI musim gugur ini mungkin jauh lebih sepi dibandingkan tahun lalu.

Pastikan konsistensi skema dengan mudah

Dengan keluaran terstruktur, Anda hanya perlu mendefinisikan Skema JSON, dan AI tidak lagi “sengaja” dan patuh mengeluarkan data sesuai petunjuk.
Selain itu, fungsi baru ini tidak hanya membuat AI lebih patuh, namun juga sangat meningkatkan keandalan konten keluaran.
Dalam evaluasi pelacakan skema JSON kompleks, model baru gpt-4o-2024-08-06 dengan keluaran terstruktur menerima skor sempurna 100%. Sebagai perbandingan, gpt-4-0613 mendapat skor kurang dari 40%.
Faktanya, fungsi Skema JSON diluncurkan oleh OpenAI pada DevDay tahun lalu.
Sekarang, OpenAI telah memperluas fungsionalitas ini di API, memastikan bahwa keluaran yang dihasilkan oleh model sama persis dengan Skema JSON yang disediakan oleh pengembang.
Menghasilkan data terstruktur dari masukan tidak terstruktur adalah salah satu kasus penggunaan inti kecerdasan buatan dalam aplikasi saat ini.
Pengembang menggunakan OpenAI API untuk membangun asisten canggih yang dapat memperoleh data dan menjawab pertanyaan melalui pemanggilan fungsi, mengekstrak data terstruktur untuk entri data, dan membangun alur kerja agen multi-langkah, sehingga memungkinkan LLM mengambil tindakan.

Prinsip teknis

OpenAI mengambil pendekatan dua arah untuk meningkatkan kecocokan antara keluaran model dan Skema JSON.
Meskipun performa model telah meningkat secara signifikan, mencapai akurasi 93% dalam pengujian benchmark, ketidakpastian tetap ada.
Untuk memastikan stabilitas aplikasi yang dibangun oleh pengembang, OpenAI menyediakan metode dengan akurasi lebih tinggi untuk membatasi keluaran model, sehingga mencapai keandalan 100%.

Penguraian batasan

OpenAI menggunakan teknik yang disebut sampling terbatas atau decoding terbatas. Secara default, model menghasilkan keluaran yang sepenuhnya tidak dibatasi, sehingga berpotensi memilih token apa pun dari kosakata sebagai keluaran berikutnya.
Fleksibilitas ini dapat menyebabkan kesalahan, seperti memasukkan karakter yang tidak valid secara sembarangan saat membuat JSON yang valid.
Untuk menghindari kesalahan seperti itu, OpenAI menggunakan metode decoding batasan dinamis untuk memastikan bahwa token keluaran yang dihasilkan selalu sesuai dengan skema yang disediakan.
Untuk mencapai hal ini, OpenAI mengubah Skema JSON yang disediakan menjadi tata bahasa bebas konteks (CFG).
Untuk setiap Skema JSON, OpenAI menghitung sintaksis yang mewakili skema dan secara efisien mengakses komponen yang telah diproses sebelumnya selama pengambilan sampel.
Pendekatan ini tidak hanya membuat keluaran yang dihasilkan lebih akurat namun juga mengurangi penundaan yang tidak perlu. Permintaan pertama untuk skema baru mungkin memerlukan waktu pemrosesan tambahan, namun permintaan berikutnya ditanggapi dengan cepat melalui mekanisme cache.

Pilihan

Selain metode CFG, metode lain biasanya menggunakan finite state machine (FSM) atau ekspresi reguler untuk decoding batasan.
Namun, metode ini memiliki kemampuan terbatas dalam memperbarui token valid secara dinamis. Khususnya untuk struktur data bersarang atau rekursif yang kompleks, FSM seringkali sulit ditangani.
Metode CFG OpenAI bekerja dengan baik ketika mengekspresikan skema yang kompleks. Misalnya, skema JSON yang mendukung skema rekursif diimplementasikan pada OpenAI API tetapi tidak dapat diekspresikan melalui metode FSM.

Menghemat setengah biaya masukan

Output terstruktur tersedia untuk semua model yang mendukung panggilan fungsi, termasuk model GPT-4o dan GPT-4o-mini terbaru, serta model yang disempurnakan.
Fitur ini tersedia di Chat Completions API, Assistants API, dan Batch API dan kompatibel dengan input visual.
Dibandingkan dengan versi gpt-4o-2024-05-13, versi gpt-4o-2024-08-06 juga lebih hemat biaya. Pengembang dapat menghemat 50% biaya di sisi input ($2,50/1 juta token) , menghemat 33% biaya pada hasil keluaran ($10,00/1 juta token).

Cara menggunakan keluaran terstruktur

Ada dua bentuk yang dapat digunakan untuk memperkenalkan keluaran terstruktur di API:

panggilan fungsi

Output terstruktur melalui alat dapat dicapai dengan mengatur strict: true dalam definisi fungsi.
Fitur ini tersedia di semua model dengan alat yang didukung, termasuk semua model gpt-4-0613 dan gpt-3.5-turbo-0613 ke atas.
Jika keluaran terstruktur diaktifkan, keluaran model akan cocok dengan definisi alat yang disediakan.
Contoh permintaan:
Contoh keluaran:
{
  "table_name": "orders",
  "columns": ["id", "status", "expected_delivery_date", "delivered_at"],
  "conditions": [
    {
      "column": "status",
      "operator": "=",
      "value": "fulfilled"
    },
    {
      "column": "ordered_at",
      "operator": ">=",
      "value": "2023-05-01"
    },
    {
      "column": "ordered_at",
      "operator": "<",
      "value": "2023-06-01"
    },
    {
      "column": "delivered_at",
      "operator": ">",
      "value": {
        "column_name": "expected_delivery_date"
      }
    }
  ],
  "order_by": "asc"
}

Opsi baru untuk parameter respon_format

Pengembang sekarang dapat memilih apakah akan memerlukan keluaran yang diformat melalui opsi baru json_schema dari respon_format.
Fitur ini berguna ketika model tidak memanggil alat, namun merespons pengguna dengan cara yang terstruktur.
Fitur ini tersedia untuk model GPT-4o terbaru: gpt-4o-2024-08-06 dan gpt-4o-mini-2024-07-18 yang dirilis hari ini.
Ketika respon_format diatur ke strict:true, keluaran model akan cocok dengan skema yang disediakan.
Contoh permintaan:
Contoh keluaran:
{
  "steps": [
    {
      "explanation": "Subtract 31 from both sides to isolate the term with x.",
      "output": "8x + 31 - 31 = 2 - 31"
    },
    {
      "explanation": "This simplifies to 8x = -29.",
      "output": "8x = -29"
    },
    {
      "explanation": "Divide both sides by 8 to solve for x.",
      "output": "x = -29 / 8"
    }
  ],
  "final_answer": "x = -29 / 8"
}
Pengembang dapat menghasilkan jawaban langkah demi langkah menggunakan keluaran terstruktur untuk memandu keluaran yang diinginkan.
Menurut OpenAI, pengembang tidak perlu memvalidasi atau mencoba ulang respons yang salah, dan fitur ini memungkinkan perintah yang lebih sederhana.

Dukungan SDK asli

OpenAI mengatakan Python dan Node SDK mereka telah diperbarui untuk mendukung keluaran terstruktur secara asli.
Menyediakan skema atau format respons ke alat semudah menyediakan objek Pydantic atau Zod. SDK OpenAI dapat mengonversi tipe data ke skema JSON yang didukung, secara otomatis melakukan deserialisasi respons JSON ke dalam struktur data yang diketik, dan mengurai penolakan.
Selain itu, dukungan keluaran terstruktur asli juga tersedia untuk format_respons.

Kasus penggunaan lainnya

Pengembang sering kali menggunakan model OpenAI untuk menghasilkan data terstruktur untuk berbagai kasus penggunaan.
Beberapa contoh lainnya meliputi:
-Menghasilkan antarmuka pengguna secara dinamis berdasarkan niat pengguna
Pengembang dapat menggunakan keluaran terstruktur untuk membuat kode atau aplikasi pembuatan UI.
Dengan menggunakan format_response yang sama, UI yang berbeda dapat dibuat berdasarkan masukan pengguna.
Misalnya, buat "Antarmuka Login Tukang Kebun":
Itu dihasilkan dengan kode berikut:
{
  "type": "div",
  "label": "",
  "children": [
    {
      "type": "header",
      "label": "",
      "children": [
        {
          "type": "div",
          "label": "Green Thumb Gardening",
          "children": [],
          "attributes": [{ "name": "className", "value": "site-title" }]
        },
        {
          "type": "div",
          "label": "Bringing Life to Your Garden",
          "children": [],
          "attributes": [{ "name": "className", "value": "site-tagline" }]
        }
      ],
      "attributes": [{ "name": "className", "value": "header" }]
    },
    {
      "type": "section",
      "label": "",
      "children": [
        {
          "type": "div",
          "label": "",
          "children": [
            {
              "type": "div",
              "label": "About Us",
              "children": [
                {
                  "type": "div",
                  "label": "At Green Thumb Gardening, we specialize in transforming your outdoor spaces into beautiful, thriving gardens. Our team has decades of experience in horticulture and landscape design.",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "about-description" }
                  ]
                }
              ],
              "attributes": [{ "name": "className", "value": "about-section" }]
            }
          ],
          "attributes": [{ "name": "className", "value": "content" }]
        }
      ],
      "attributes": [{ "name": "className", "value": "about-container" }]
    },
    {
      "type": "section",
      "label": "",
      "children": [
        {
          "type": "div",
          "label": "",
          "children": [
            {
              "type": "div",
              "label": "Our Services",
              "children": [
                {
                  "type": "div",
                  "label": "Garden Design",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "service-item" }
                  ]
                },
                {
                  "type": "div",
                  "label": "Plant Care & Maintenance",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "service-item" }
                  ]
                },
                {
                  "type": "div",
                  "label": "Seasonal Cleanup",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "service-item" }
                  ]
                },
                {
                  "type": "div",
                  "label": "Custom Landscaping",
                  "children": [],
                  "attributes": [
                    { "name": "className", "value": "service-item" }
                  ]
                }
              ],
              "attributes": [{ "name": "className", "value": "services-list" }]
            }
          ],
          "attributes": [{ "name": "className", "value": "content" }]
        }
      ],
      "attributes": [{ "name": "className", "value": "services-container" }]
    }
  ],
  "attributes": [{ "name": "className", "value": "landing-page" }]
}
- Pisahkan jawaban akhir dari alasan pendukung atau komentar tambahan
Menyediakan model dengan bidang rantai pemikiran terpisah dapat meningkatkan kualitas akhir respons.
bertanya:
Keluaran terstruktur:
{
  "reasoning_steps": [
    "First step is to compare the numbers 9.11 and 9.9.",
    "Both numbers have the same whole number part, which is 9.",
    "To compare the decimal parts, convert them to the same number of decimal places.",
    "9.11 has two decimal places: it is 9.11.",
    "9.9 has one decimal place: it can be rewritten as 9.90.",
    "Now, compare 9.11 and 9.90 by looking at the decimal parts.",
    "Compare 11 with 90.",
    "90 is greater than 11, so 9.90 is greater than 9.11."
  ],
  "answer": "9.9 is bigger than 9.11."
}
- Ekstrak data terstruktur dari data tidak terstruktur
Misalnya, instruksikan model untuk mengekstrak hal-hal seperti tugas, tenggat waktu, dan tugas dari catatan rapat.
bertanya:
Keluaran terstruktur:
{
  "action_items": [
    {
      "description": "Collaborate on optimizing the path planning algorithm",
      "due_date": "2024-06-30",
      "owner": "Jason Li"
    },
    {
      "description": "Reach out to industry partners for additional datasets",
      "due_date": "2024-06-25",
      "owner": "Aisha Patel"
    },
    {
      "description": "Explore alternative LIDAR sensor configurations and report findings",
      "due_date": "2024-06-27",
      "owner": "Kevin Nguyen"
    },
    {
      "description": "Schedule extended stress tests for the integrated navigation system",
      "due_date": "2024-06-28",
      "owner": "Emily Chen"
    },
    {
      "description": "Retest the system after bug fixes and update the team",
      "due_date": "2024-07-01",
      "owner": "David Park"
    }
  ]
}
Keluaran terstruktur yang aman
Keamanan adalah prioritas utama OpenAI – fitur keluaran terstruktur baru akan mematuhi kebijakan keamanan OpenAI yang ada dan tetap memungkinkan model untuk menolak permintaan yang tidak aman.
Untuk mempermudah pengembangan, terdapat nilai string penolakan baru pada respons API yang memungkinkan pengembang mendeteksi secara terprogram apakah suatu model menghasilkan penolakan, bukan keluaran yang cocok dengan skema.
Jika respons tidak berisi penolakan dan respons model tidak terganggu sebelum waktunya (seperti yang ditunjukkan oleh finish_reason), respons model akan menghasilkan JSON valid yang cocok dengan skema yang disediakan.
Referensi: