เผยแพร่: 13 พฤษภาคม 2025
โมเดลภาษาขนาดใหญ่ (LLM) มีชื่อเสียงในด้านการตอบกลับที่ยาว เป็นบางครั้ง แม้ว่าคุณจะบอกโมเดลให้ตอบด้วย "จริง" หรือ "เท็จ" เท่านั้น แต่โมเดลอาจตอบกลับด้วยเอาต์พุตที่เป็นมิตรและมากกว่าที่คุณขอ เช่น "แน่นอน คำตอบคือ จริง"
Prompt API
ช่วยให้คุณระบุรูปแบบเอาต์พุต JSON ของการตอบกลับของโมเดลได้โดยการส่งJSON Schema ไปยังเมธอด 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 Schema เพื่อดูคำอธิบายทั้งหมดเกี่ยวกับความสามารถของรูปแบบ
ในความเป็นจริงแล้ว LLM ทำได้ดีมากในการสร้าง JSON Schema อธิบายข้อจำกัด ในภาษาธรรมชาติในพรอมต์ และระบุออบเจ็กต์ JSON ตัวอย่างที่ถูกต้อง คุณก็มาถึงครึ่งทางแล้ว จากนั้นคุณจะตรวจสอบออบเจ็กต์ JSON กับ JSON Schema ที่สร้างขึ้นได้โดยใช้เครื่องมือตรวจสอบ JSON Schema อย่างใดอย่างหนึ่ง เช่น เครื่องมือตรวจสอบ JSON Schema ของ Newtonsoft ออนไลน์
ส่ง 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 ฝั่งไคลเอ็นต์ในเครื่อง