ทำความเข้าใจ Agent Loop
หากคุณสร้างระบบด้วยโมเดลแบบ tool-calling การตัดสินใจที่สำคัญที่สุดของคุณไม่ใช่เรื่องของ prompt แต่คือ loop ที่ล้อมรอบโมเดลนั้น
LLM ตัดสินใจว่าจะใช้เครื่องมือ (tool) แต่ตัวมันเองไม่สามารถรันเครื่องมือนั้นได้ แอปพลิเคชันหรือ SDK จะต้องเป็นผู้รวบรวม context, รันเครื่องมือ และเพิ่มผลลัพธ์กลับเข้าไป วงจรนี้เองคือ agent loop
โมเดลเป็นเพียงส่วนหนึ่งของระบบเท่านั้น ส่วน harness หรือ SDK จะทำหน้าที่จัดการ orchestration ซึ่งรวมถึงการประกอบ prompt, การรันเครื่องมือ, การลองใหม่ (retries) และการสิ้นสุดการทำงาน (termination)
แนวคิดสำคัญในการสร้าง agent ที่เชื่อถือได้:
- การจัดการสถานะ (State management) เป็นสิ่งสำคัญ หากคุณสูญเสียผลลัพธ์จากเครื่องมือ agent จะลืมสิ่งที่เกิดขึ้น
- ประสิทธิภาพขึ้นอยู่กับการควบคุมการขยายตัวของ prompt ควรใช้ stable prefixes และการทำ caching เพื่อรักษาต้นทุนให้ต่ำ
- ความปลอดภัยต้องมีการตรวจสอบ (validation) ควรใช้ approval gates สำหรับการกระทำที่มีการเปลี่ยนแปลงข้อมูล
- harness เป็นผู้จัดการวงจรชีวิต (lifecycle) ไม่ใช่โมเดล
โมเดลทางความคิดเชิงปฏิบัติสำหรับ loop:
- สร้าง input state
- เรียกใช้โมเดล
- ตรวจสอบการตอบกลับ (response)
- หากโมเดลร้องขอเครื่องมือ ให้ตรวจสอบความถูกต้องและรันเครื่องมือนั้น
- เพิ่มผลลัพธ์จากเครื่องมือกลับเข้าไปใน context
- เรียกใช้โมเดลอีกครั้ง
- หยุดทำงานก็ต่อเมื่อโมเดลให้คำตอบสุดท้ายแล้วเท่านั้น
สองระบบอาจใช้โมเดลเดียวกันแต่มีพฤติกรรมที่ต่างกันได้ สิ่งนี้เกิดขึ้นเพราะ harness ของแต่ละระบบมีการตัดสินใจที่ต่างกันเกี่ยวกับ context, ลำดับของเครื่องมือ และประวัติ (history)
ระวังปัญหาที่พบบ่อยเหล่านี้:
- พฤติกรรมซ้ำซาก (Repetitive behavior): มักเกิดจากการที่ความต่อเนื่องของสถานะ (state continuity) ขาดหายไป
- คุณภาพต่ำ (Low quality): มักเกิดจากผลลัพธ์ของเครื่องมือที่ยาวเกินไปหรือมีข้อมูลรบกวน (noisy) มากเกินไป
- ต้นทุนสูง (High costs): มักเกิดจากการจัดลำดับ prompt ที่ไม่ดีจนทำให้การทำ caching ล้มเหลว
- การกระทำที่ไม่ปลอดภัย (Unsafe actions): เกิดขึ้นเมื่อคุณไม่ได้ตรวจสอบความถูกต้องของ tool arguments ก่อนที่จะรัน
โมเดลเป็นผู้เลือกการกระทำ แต่ harness เป็นผู้ควบคุมความเป็นจริง หากคุณต้องการระบบที่ดีขึ้น อย่าเพียงแค่ปรับแต่ง prompt แต่จงสร้าง loop ที่ดีกว่าเดิม
Optional learning community: https://t.me/GyaanSetuAi