Quest 67 - Self-Reflecting Agent
Quest 67: Self-Reflecting Agent
hard 30-45 minutes🎯 Learning Objectives
- สร้าง agent ที่ generate output แล้ว self-assess คุณภาพ
- เข้าใจ confidence levels — high, medium, low
- รู้จัก retry mechanism — ลองใหม่เมื่อคุณภาพต่ำ
- รู้จัก needsHelp flag — รู้ตัวว่าต้องขอความช่วยเหลือ
📖 Concept: Self-Reflection in Agents
Self-Reflection คือ ability ของ agent ที่จะ ประเมิน output ของตัวเอง — เหมือนนักเรียนที่ตรวจงานตัวเองก่อนส่ง
ทำไมถึงสำคัญ? เพราะ agent ที่ไม่สามารถ self-assess ได้ไม่รู้ว่าเมื่อไหร่ต้องขอความช่วยเหลือ — มันจะส่ง output คุณภาพต่ำโดยไม่รู้ตัว
const agent = createSelfReflectingAgent(generateFn, evaluateFn);const result = agent.generate('Write a summary of AI trends');// {// output: '...',// selfScore: 85, // 0-100// confidence: 'high', // high/medium/low// needsHelp: false // true ถ้า confidence === 'low'// }⚙️ How It Works
วงจร Self-Reflection
1. generate(task) — สร้าง output ↓2. evaluateFn(output) — คำนวณ score (0-100) ↓3. ถ้า selfScore >= 60 → return ผลลัพธ์ ↓4. ถ้า selfScore < 60 → retry ครั้งเดียว ↓5. ถ้ายังต่ำ → return พร้อม needsHelp: trueConfidence Levels
Confidence ไม่ใช่แค่ score — มันเป็น categorical assessment ที่ช่วยให้ agent ตัดสินใจ:
function getConfidence(score) { if (score > 80) return 'high'; // มั่นใจในคุณภาพ if (score >= 50) return 'medium'; // พอใช้ได้ แต่อาจต้องปรับปรุง return 'low'; // ต้องขอความช่วยเหลือ}
// needsHelp = confidence === 'low'💡 Example: Self-Reflecting Agent ใน action
// Generator: สร้าง outputconst generateFn = (task) => `Generated output for: ${task}`;
// Evaluator: ให้คะแนนconst evaluateFn = (output) => { if (output.length > 20) return 85; // ยาว = ดี return 40; // สั้น = ไม่ดี};
const agent = createSelfReflectingAgent(generateFn, evaluateFn);
// ทดสอบconst result = agent.generate('Write a summary');console.log(result);// {// output: 'Generated output for: Write a summary',// selfScore: 40, // ต่ำ!// confidence: 'low',// needsHelp: true // ต้องขอความช่วยเหลือ// }สังเกต: Agent รู้ว่า output ของตัวเองมีคุณภาพต่ำ และบอกว่าต้องขอความช่วยเหลือ
⚠️ Common Mistakes
Mistake 1: ไม่ retry เมื่อคุณภาพต่ำ
“Just report the low score” → Self-reflecting agent ควร retry ครั้งเดียวก่อนรายงาน — ไม่ใช่ยอมแพ้ทันที
Mistake 2: คิดว่า score สูง = ไม่ต้องทำอะไร
“Score 90, done!” → แม้ score สูง ก็ควรมี logging — เพื่อ debug เมื่อมีปัญหา
Mistake 3: needsHelp เท่ากับ failure
“needsHelp: true แสดงว่า agent ล้มเหลว” → ไม่จริง! needsHelp คือ self-awareness — รู้ตัวว่าต้องขอความช่วยเหลือ นั่นคือจุดแข็ง
Mistake 4: ไม่บันทึก selfScore ใน history
“Just return the final result” → Self-score ช่วย debug และเข้าใจว่า agent 评估 output อย่างไร
📝 Knowledge Check
📝 Knowledge Check
Q1:Self-Reflecting Agent ทำอะไร?
Q2:needsHelp: true หมายถึงอะไร?
Q3:Agent ควร retry กี่ครั้งเมื่อ selfScore < 60?
🏋️ Quest: Self-Reflecting Agent
สร้าง agent ที่ generate output แล้ว self-assess คุณภาพ พร้อม retry mechanism
-
Download ไฟล์เริ่มต้นของ quest:
Terminal window npx bluebeltdojo download quest-67-self-reflectingcd quest-67-self-reflecting -
เปิด
problem.jsใน editor ของคุณพร้อม AI tool -
Implement
createSelfReflectingAgent(generateFn, evaluateFn)ตาม instructions ในproblem.js -
ตรวจสอบ solution ของคุณ:
Terminal window node test.js -
สำคัญ! ทดสอบ edge case: retry ครั้งเดียว, คุณภาพยังต่ำ → needsHelp: true
-
แก้ไขจน tests ทุกตัวผ่าน
-
ส่งคำตอบ:
Terminal window npx bluebeltdojo submit
💡 Tip: ลองนึกถึง scenario ที่ agent generate ได้ score 40 — มันควร retry แล้วกลับมา report อย่างไร?
คำใบ้
- อ่าน instructions ใน
problem.jsอย่างละเอียด - Self-reflecting agent ต้อง retry ครั้งเดียวถ้า selfScore < 60
- Confidence: >80 = high, 50-80 = medium,
<50= low - needsHelp = true เฉพาะเมื่อ confidence === ‘low’
- ถ้าติดขัด ลองอ่าน “Common Mistakes” อีกครั้ง