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

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