เผยแพร่: 13 พฤษภาคม 2025
โมเดลภาษาขนาดใหญ่ (LLM) ขึ้นชื่อเรื่องการตอบกลับที่ยาว เป็นบางครั้ง แม้ว่าคุณจะบอกโมเดลให้ตอบเพียง "จริง" หรือ "เท็จ" แต่โมเดลอาจตอบกลับด้วยเอาต์พุตที่เป็นมิตรและมากกว่าที่คุณขอ เช่น "แน่นอน คำตอบคือ จริง"
เพื่อรับมือกับความท้าทายนี้ Prompt API ช่วยให้คุณระบุรูปแบบเอาต์พุต JSON ของการตอบกลับของโมเดลได้โดยการส่งสคีมา JSON ไปยังเมธอด LanguageModel.prompt() และ LanguageModel.promptStreaming() การรองรับเอาต์พุตที่มีโครงสร้าง
พร้อมใช้งานแล้วตั้งแต่ Chrome เวอร์ชัน 137 เป็นต้นไป
JSON Schema คืออะไร
สคีมา JSON คือคำศัพท์ที่ช่วยให้ข้อมูล JSON มีความสอดคล้องกัน ถูกต้อง และทำงานร่วมกันได้ในวงกว้าง เมื่อพูดถึงการแลกเปลี่ยนข้อมูล สคีมา JSON เป็นมาตรฐานที่มีประสิทธิภาพในการกำหนดโครงสร้างและกฎของข้อมูล JSON โดยจะ ใช้ชุดคีย์เวิร์ดเพื่อกำหนดพร็อพเพอร์ตี้ของข้อมูล
JSON Schema เป็นมาตรฐานอุตสาหกรรมสำหรับการรับประกันเอาต์พุตที่มีโครงสร้าง ซึ่งใช้โดย OpenAI API และ Gemini API เป็นต้น
เช่น คุณแจ้งโมเดลให้กำหนดแฮชแท็กอย่างน้อย 3 รายการสำหรับโพสต์ในโซเชียลเน็ตเวิร์กออนไลน์ เช่น Mastodon เอาต์พุตที่เหมาะสมอาจมีลักษณะคล้ายกับ JSON ต่อไปนี้
{
"hashtags": [
"#pottery",
"#dyi"
]
}
จากนั้น JSON Schema ที่เกี่ยวข้องสำหรับรูปร่างออบเจ็กต์เอาต์พุตที่ขอจะมีลักษณะดังนี้
{
"type": "object",
"properties": {
"hashtags": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"pattern": "^#[^\\s#]+$"
}
}
},
"required": ["hashtags"],
"additionalProperties": false
}
รูปแบบ JSON สคีมานี้กําหนดโครงสร้างสําหรับออบเจ็กต์ที่ต้องมีฟิลด์ hashtags ที่มีข้อจํากัดต่อไปนี้
"type": "object": ค่ารูทต้องเป็นออบเจ็กต์ JSON"properties": { "hashtags": ... }: ออบเจ็กต์มี (และในกรณีนี้ ต้องมี) พร็อพเพอร์ตี้ที่ชื่อhashtags"hashtags":"type": "array": ค่าต้องเป็นอาร์เรย์"maxItems": 3: อาร์เรย์มีได้ไม่เกิน 3 รายการ"items": { "type": "string", "pattern": "^#[^\\s#]+$" }: รายการแต่ละรายการในอาร์เรย์ต้องเป็นสตริงที่ตรงกับรูปแบบนิพจน์ทั่วไปที่ระบุ:^#[^\\s#]+$:^#→ ต้องเริ่มต้นด้วย#[^\\s#]+→ ตามด้วยอักขระอย่างน้อย 1 ตัวที่ ไม่ใช่การเว้นวรรค (\s) หรือ#อื่น$→ ต้องสิ้นสุดที่นั่น
"required": ["hashtags"]: ออบเจ็กต์ต้องมีพร็อพเพอร์ตี้hashtags"additionalProperties": false: ไม่อนุญาตให้ใช้พร็อพเพอร์ตี้อื่นนอกเหนือจากแฮชแท็ก
อ่านเอกสารประกอบพื้นฐานของ JSON สคีมา เพื่อดูคำอธิบายทั้งหมดเกี่ยวกับความสามารถของรูปแบบ
ในความเป็นจริงแล้ว LLM ทำได้ดีมากในการสร้าง JSON Schema อธิบายข้อจำกัด ในภาษาธรรมชาติในพรอมต์ และระบุออบเจ็กต์ JSON ตัวอย่างที่ถูกต้อง คุณก็มาถึงครึ่งทางแล้ว จากนั้นคุณจะตรวจสอบออบเจ็กต์ JSON กับ JSON Schema ที่สร้างขึ้นได้โดยใช้เครื่องมือตรวจสอบ JSON Schema อย่างใดอย่างหนึ่ง เช่น Newtonsoft JSON Schema Validator ออนไลน์

ส่ง JSON Schema ไปยัง Prompt API
หากต้องการให้โมเดลเป็นไปตามสคีมา JSON ที่ขอ คุณต้องส่งสคีมา JSON เป็นอาร์กิวเมนต์ไปยังออบเจ็กต์ตัวเลือกของเมธอด prompt() หรือ promptStreaming() เป็นค่าของฟิลด์ responseConstraint
ต่อไปนี้คือตัวอย่าง JSON Schema พื้นฐานมากที่ช่วยให้มั่นใจได้ว่าโมเดลจะตอบกลับด้วย true หรือ false ในการจัดประเภทว่าข้อความที่กำหนด เช่น โพสต์ Mastodon นี้เกี่ยวกับเครื่องปั้นดินเผาหรือไม่
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
รองรับเอาต์พุตที่คาดการณ์ได้
การรองรับเอาต์พุตที่มีโครงสร้างสำหรับ Prompt API ทำให้คำตอบของ LLM คาดเดาได้มากขึ้น ตอนนี้ผู้พัฒนาสามารถถือว่าการตอบกลับของโมเดลเป็น JSON ที่ถูกต้องได้ แทนที่จะดึงออบเจ็กต์จากการตอบกลับของมาร์กดาวน์ หรือการประมวลผลภายหลังอื่นๆ
ซึ่งจะช่วยให้ AI ในตัวเข้าใกล้ API ในระบบคลาวด์มากขึ้นอีกขั้น พร้อมด้วยข้อดีทั้งหมดของการเรียกใช้ AI ฝั่งไคลเอ็นต์ในเครื่อง