Dukungan output terstruktur untuk Prompt API

Dipublikasikan: 13 Mei 2025

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

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

Apa itu Skema JSON

Skema JSON adalah kosakata yang memungkinkan konsistensi, validitas, dan interoperabilitas data JSON dalam skala besar. Dalam hal pertukaran data, Skema JSON menonjol sebagai standar yang efektif untuk menentukan struktur dan aturan data JSON. Fitur ini menggunakan sekumpulan kata kunci untuk menentukan properti data Anda.

Skema JSON 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 yang ideal mungkin terlihat mirip dengan JSON berikut:

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

Bentuk objek output yang diminta ini dan Skema JSON yang sesuai akan terlihat seperti 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 kasus 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 dimulai dengan #.
      • [^\\s#]+ → diikuti oleh satu atau beberapa karakter yang bukan spasi (\s) atau # lainnya.
      • $ → harus berakhir di sana.
  • "required": ["hashtags"]: Objek harus berisi properti hashtags.

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

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

Faktanya, LLM sangat bagus dalam membuat Skema JSON. Jelaskan batasan dalam bahasa alami di 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, Validator Skema JSON Newtonsoft online.

Berhasil memvalidasi objek JSON terhadap Skema JSON dalam 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 membahas 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 pemrosesan pasca lainnya, developer kini dapat mengasumsikan bahwa respons model adalah JSON yang valid.

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