ทุกคนพูดถึงแต่เรื่อง Prompt แต่จุดที่ Agent ล้มเหลวจริงๆ คือ Loop
Prompt engineering เป็นสิ่งที่ได้รับความสนใจมากที่สุด ผู้คนต่างแชร์ prompt และรู้สึกว่าตัวเองเก่ง แต่ในระบบ Agentic ที่ผมสร้างขึ้น Prompt ไม่ใช่สิ่งที่ทำให้ระบบพัง แต่เป็น Loop ต่างหากที่พัง
Agent ไม่ใช่แค่การส่ง prompt และรับคำตอบเพียงครั้งเดียว แต่มันคือ Loop
- สังเกตสถานะ (Observe the state)
- ดำเนินการ (Take an action)
- ประเมินผลลัพธ์ (Evaluate the result)
- ตัดสินใจว่าจะทำต่อหรือหยุด (Decide to continue or stop)
หากขั้นตอนใดขั้นตอนหนึ่งล้มเหลว Agent ก็จะล้มเหลวด้วย ผมได้วิเคราะห์โมเดล 12 ตัวจากการรันทั้งหมด 1,412 ครั้งเพื่อศึกษาเรื่องนี้ และนี่คือสาเหตุที่ทำให้ Loop ล้มเหลวและวิธีแก้ไข
ความล้มเหลวของ Loop ที่พบบ่อย:
- Token Spirals: Agent พูดซ้ำไปซ้ำมาและใช้ token มากเกินไป
- Blind Spots: Agent มองไม่เห็นสภาพแวดล้อมของตัวเองและทำผิดพลาดซ้ำเดิม
- False Success: Agent ให้คำตอบที่ผิดแต่กลับคิดว่าตัวเองตอบถูก
- Dead Ends: Agent พบข้อผิดพลาดแต่ไม่สามารถนำข้อมูลนั้นมาใช้เพื่อปรับปรุงได้
Prompt ที่ดีขึ้นไม่สามารถแก้ปัญหาเหล่านี้ได้ คุณจำเป็นต้องทำ Loop engineering
4 หลักการออกแบบเพื่อ Loop ที่ดีขึ้น:
- จำกัดขอบเขตของ Loop (Bound the loop): กำหนดขีดจำกัดที่ชัดเจนสำหรับจำนวนรอบ (iterations) และจำนวน token หาก Agent ทำงานจนถึงขีดจำกัด มันต้องหยุดและขอความช่วยเหลือ
- ทำให้สภาพแวดล้อมอ่านง่าย (Make the environment legible): ตรวจสอบให้แน่ใจว่าขั้นตอนการสังเกต (observe) ให้ข้อมูลข้อเท็จจริงทั้งหมดแก่ Agent หาก Agent ทำการกระทำที่ล้มเหลวซ้ำๆ แสดงว่ามันขาดข้อมูลที่ถูกต้อง
- แยกผู้กระทำออกจากผู้ประเมิน (Separate the actor from the evaluator): อย่าปล่อยให้โมเดลตัวเดิมตรวจสอบงานของตัวเอง ให้ใช้โมเดลอื่นหรือการตรวจสอบตามกฎ (rule-based check) ในการตัดสินผลลัพธ์
- ปิดวงจรให้สมบูรณ์ (Close the loop): ใช้ข้อผิดพลาดเพื่อนำไปสู่การแก้ไขที่แท้จริง เมื่อ Loop ล้มเหลว ให้เพิ่มการทดสอบแบบ regression test เพื่อไม่ให้เกิดปัญหาเดิมซ้ำอีก
ผมได้สร้าง support agent ที่ชื่อว่า RelayOps โดยใช้กฎเหล่านี้ เราใช้ผู้ตัดสินที่เป็นอิสระ (independent judge) ในการให้คะแนน Agent
มีครั้งหนึ่งที่ Agent อ้างอิงบทความที่ถูกต้องแต่กลับไม่สามารถตอบคำถามจริงๆ ได้ การตรวจสอบด้วยกฎแบบง่ายๆ (rule-based check) ผ่านการทดสอบ แต่ผู้ประเมินที่เป็นอิสระของเราตรวจพบ เราจึงใช้ความล้มเหลวนั้นมาแก้ไขระบบและเพิ่มการทดสอบเพื่อป้องกันไม่ให้มันเกิดขึ้นอีก
Agent ไม่จำเป็นต้องฉลาดขึ้น แต่ Loop ต่างหากที่ต้องได้รับการออกแบบให้ดีขึ้น
เลิกโฟกัสแค่เรื่อง prompt แต่ให้โฟกัสที่โครงสร้าง
คุณเคยเจอความล้มเหลวของ Loop แบบไหนบ้าง? Token spiral, blind spot หรือ Agent ที่มั่นใจในคำตอบที่ผิด?
Optional learning community: https://t.me/GyaanSetuAi