Dukungan output terstruktur untuk Prompt API

Dipublikasikan: 13 Mei 2025

Model bahasa besar (LLM) terkenal karena responsnya yang terkadang panjang. Meskipun Anda memberi tahu model untuk menjawab dengan "benar" atau "salah" saja, model tersebut dapat merespons dengan output yang mudah dipahami dan lebih dari yang Anda minta, seperti: "Tentu saja, jawabannya adalah: benar".

Untuk mengatasi tantangan ini, Prompt API memungkinkan Anda menentukan format output JSON respons model dengan meneruskan Skema JSON ke metode LanguageModel.prompt() dan LanguageModel.promptStreaming(). Dukungan output terstruktur tersedia mulai Chrome versi 137.

Pengertian JSON Schema

JSON Schema adalah kosakata yang memungkinkan konsistensi, validitas, dan interoperabilitas data JSON dalam skala besar. Dalam hal pertukaran data, JSON Schema tampil sebagai standar yang andal untuk menentukan struktur dan aturan data JSON. Model ini menggunakan kumpulan kata kunci untuk menentukan properti data Anda.

JSON Schema adalah standar industri untuk memastikan output terstruktur, yang digunakan, antara lain, oleh OpenAI API dan Gemini API.

Misalnya, Anda meminta model untuk menetapkan maksimal tiga hashtag untuk postingan di jaringan sosial online, seperti Mastodon. Output idealnya mungkin terlihat mirip dengan JSON berikut:

{
  "hashtags": [
    "#pottery",
    "#dyi"
  ] 
}

Skema JSON yang sesuai untuk bentuk objek output yang diminta ini akan terlihat sebagai berikut:

{
  "type": "object",
  "properties": {
    "hashtags": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "string",
        "pattern": "^#[^\\s#]+$"
      }
    }
  },
  "required": ["hashtags"],
  "additionalProperties": false
}

Skema JSON ini menentukan struktur untuk objek yang harus berisi kolom hashtags dengan batasan berikut:

  • "type": "object": Nilai root harus berupa objek JSON.
  • "properties": { "hashtags": ... }: Objek dapat (dan dalam hal ini, harus) memiliki properti yang disebut hashtags.
  • "hashtags":

    • "type": "array": Nilai harus berupa array.
    • "maxItems": 3: Array dapat berisi maksimal 3 item.
    • "items": { "type": "string", "pattern": "^#[^\\s#]+$" }: Setiap item dalam array harus berupa string yang cocok dengan pola ekspresi reguler yang diberikan: ^#[^\\s#]+$:
      • ^# → harus diawali dengan #.
      • [^\\s#]+ → diikuti dengan satu atau beberapa karakter yang bukan spasi (\s) atau # lain.
      • $ → harus diakhiri di sana.
  • "required": ["hashtags"]: Objek harus berisi properti hashtags.

  • "additionalProperties": false: Tidak ada properti selain hashtag yang diizinkan.

Baca dokumentasi Dasar-Dasar Schema JSON untuk mengetahui deskripsi lengkap tentang kemampuan format.

Faktanya, LLM sangat mahir dalam membuat Skema JSON. Jelaskan batasan dalam bahasa alami dalam perintah Anda dan berikan contoh objek JSON yang valid, dan Anda sudah setengah jalan. Kemudian, Anda dapat memvalidasi objek JSON terhadap Skema JSON yang dihasilkan dengan salah satu validator Skema JSON, misalnya, Newtonsoft JSON Schema Validator online.

Berhasil memvalidasi objek JSON terhadap Skema JSON di validator Skema JSON.

Meneruskan Skema JSON ke Prompt API

Untuk memastikan model mematuhi Skema JSON yang diminta, Anda harus meneruskan Skema JSON sebagai argumen ke objek opsi metode prompt() atau promptStreaming() sebagai nilai kolom responseConstraint.

Berikut adalah contoh Skema JSON yang sangat mendasar yang memastikan model merespons dengan true atau false dalam mengklasifikasikan apakah pesan tertentu seperti postingan Mastodon ini tentang tembikar.

const session = await LanguageModel.create();

const schema = {
  "type": "boolean"
};

const post = "Mugs and ramen bowls, both a bit smaller than intended- but that's
how it goes with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";

const result = await session.prompt(  
  `Is this post about pottery?\n\n${post}`,  
  {  
    responseConstraint: schema,  
  }  
);  
console.log(JSON.parse(result));  
// true  

Mendukung output yang dapat diprediksi

Dukungan output terstruktur untuk Prompt API membuat respons LLM jauh lebih dapat diprediksi. Daripada mengekstrak objek dari respons Markdown atau pascapemrosesan lainnya, developer kini dapat mengasumsikan bahwa respons model adalah JSON yang valid.

Hal ini membuat AI bawaan selangkah lebih dekat ke API berbasis cloud, dengan semua manfaat menjalankan AI sisi klien lokal.