Quest 79 - Meta-Prompt Generator
Quest 79: Meta-Prompt Generator
hard 30-35 minutes🎯 Learning Objectives
- เข้าใจว่า meta-prompts ช่วย automate prompt creation ได้อย่างไร
- สร้าง prompt generator ที่มี generate, validate, และ improve methods
- รู้จัก validate prompt ว่ามีองค์ประกอบครบหรือไม่
- เข้าใจว่า prompts ที่ดีต้องมี role, constraints, และ output format
📖 Concept: Meta-Prompts
Meta-prompt คือ prompt ที่สร้าง prompt อื่น — เหมือน template สำหรับสร้าง templates
ลองนึกภาพเหมือนโรงงานผลิตแม่พิมพ์ — แทนที่จะหล่อชิ้นส่วนทีละชิ้น คุณสร้างแม่พิมพ์หนึ่งตัวแล้วหล่อได้หลายร้อยชิ้น
ทำไมถึงสำคัญ: ถ้าคุณต้องสร้าง prompt ใหม่ทุกวันสำหรับ task คล้ายๆ กัน — meta-prompt จะช่วย generate prompt ที่มีคุณภาพสูงให้โดยอัตโนมัติ
Manual: เขียน prompt ใหม่ทุกครั้ง → เสียเวลา, คุณภาพไม่ consistentMeta: ใช้ template generate prompt → เร็ว, คุณภาพ consistentโครงสร้างของ Meta-Prompt Template
const template = { role: "security auditor", constraints: ["ไม่แก้โค้ด", "ต้อง rate ด้วย CVSS"], outputFormat: "bullet points with severity", examples: ["CRITICAL: SQL injection in line 42"]};⚙️ How It Works
วิธีการทำงานของ Generator
Template { role, constraints, outputFormat, examples } ↓generator.generate(taskDescription, context) ↓Returns: "You are a {role}...\n\nTask: {taskDescription}\n\nConstraints:\n{constraints}..." ↓generator.validate(prompt) ↓Returns: { valid: true/false, issues: [...] } ↓generator.improve(prompt, feedback) ↓Returns: improved prompt stringทำไมต้องมี Validate
Meta-prompt สร้าง prompt ให้ — แต่ prompt ที่สร้างออกมาอาจไม่ครบองค์ประกอบ Validate จะเช็คว่า:
- มี role ไหม
- มี constraints ไหม
- มี output format ไหม
- มี task description ไหม
💡 Example: Meta-Prompt Generator ใน Action
function createMetaPrompt(template) { return { generate(taskDescription, context = '') { let prompt = `You are a ${template.role}.\n\n`;
if (context) { prompt += `Context: ${context}\n\n`; }
prompt += `Task: ${taskDescription}\n\n`;
if (template.constraints.length > 0) { prompt += `Constraints:\n`; template.constraints.forEach(c => { prompt += `- ${c}\n`; }); prompt += '\n'; }
prompt += `Output Format: ${template.outputFormat}\n`;
if (template.examples.length > 0) { prompt += `\nExamples:\n`; template.examples.forEach(e => { prompt += `- ${e}\n`; }); }
return prompt; },
validate(prompt) { const issues = [];
if (!prompt.includes('You are a')) { issues.push('Missing role definition'); } if (!prompt.includes('Constraints:')) { issues.push('Missing constraints section'); } if (!prompt.includes('Output Format:')) { issues.push('Missing output format'); } if (!prompt.includes('Task:')) { issues.push('Missing task description'); }
return { valid: issues.length === 0, issues }; },
improve(prompt, feedback) { return prompt + `\n\nAdditional Instructions: ${feedback}`; } };}
// ตัวอย่างการใช้งานconst meta = createMetaPrompt({ role: 'security auditor specialized in OWASP Top 10', constraints: ['Do NOT rewrite code', 'Rate by CVSS score'], outputFormat: 'bullet points with severity levels', examples: ['CRITICAL: SQL injection in query builder']});
const prompt = meta.generate('Review this API endpoint', 'Express.js REST API');console.log(prompt);
const validation = meta.validate(prompt);console.log(validation); // { valid: true, issues: [] }⚠️ Common Mistakes
Mistake 1: ไม่ validate prompt ที่ generate ออกมา
สร้าง prompt แล้วใช้เลยโดยไม่เช็คว่าครบองค์ประกอบ → ได้ prompt ที่ไม่มี role หรือ constraints
Mistake 2: template ไม่มี constraints
ปล่อยให้ prompt ไม่มีข้อจำกัด → AI จะทำอะไรก็ได้ ไม่โฟกัสที่ task
Mistake 3: ไม่รองรับ context parameter
ไม่ส่ง context เข้าไปใน prompt → AI ไม่รู้ background ของ task
Mistake 4: improve ไม่ได้ improve จริงๆ
improve() แค่ return prompt เดิม → ไม่มีค่าจริง ต้องเพิ่ม feedback เข้าไป
📝 Knowledge Check
📝 Knowledge Check
Q1:Meta-prompt คืออะไร?
Q2:ทำไม meta-prompt generator ต้องมี validate() method?
Q3:improve() method ใน meta-prompt generator ควรทำอะไร?
🏋️ Quest: Meta-Prompt Generator
ถึงเวลาฝึกฝน! สร้าง meta-prompt generator ที่มี generate, validate, improve
-
Download ไฟล์เริ่มต้นของ quest:
Terminal window npx bluebeltdojo download quest-79-meta-promptcd quest-79-meta-prompt -
เปิด
problem.jsใน editor ของคุณพร้อม AI assistant -
Implement
createMetaPrompt(template)ที่ return object ที่มี:generate(taskDescription, context)— สร้าง prompt จาก templatevalidate(prompt)— เช็คว่า prompt ครบองค์ประกอบimprove(prompt, feedback)— เพิ่ม feedback เข้าไปใน prompt
-
ตรวจสอบ solution ของคุณ:
Terminal window node test.js -
เมื่อ tests ผ่านทั้งหมด ส่งคำตอบ:
Terminal window npx bluebeltdojo submit
💡 Tip: เริ่มจาก generate() ก่อน — ถ้าสร้าง prompt ได้แล้วค่อยเพิ่ม validate() และ improve()
คำใบ้
- generate() ต้องประกอบ prompt จาก template fields: role, constraints, outputFormat, examples
- validate() ต้องเช็คว่า prompt มี “You are a”, “Constraints:”, “Output Format:”, “Task:”
- improve() ต้องเพิ่ม feedback ต่อท้าย prompt — อย่า return prompt เดิม
- ทดสอบด้วย template ที่ขาด fields ต่างๆ — validate ต้องจับได้ทุก case