𝗕𝗼𝘂𝗻𝗱𝗲𝗱 𝗥𝗲𝘁𝗿𝗶𝗲𝘀 𝗙𝗼𝗿 𝗔𝗴𝗲𝗻𝘁 𝗧𝗼𝗼𝗹 𝗖𝗮𝗹𝗹𝘀
เหตุการณ์ที่เลวร้ายที่สุดที่ Agent ของเราก่อขึ้นไม่ใช่การตอบผิด แต่มันคือการเกิด Loop
การเรียกใช้ Tool ล้มเหลว Agent จึงพยายามใหม่ (retry) แล้วการ retry ก็ล้มเหลวอีกครั้ง Agent ก็ยังคงทำต่อไปเรื่อยๆ ส่งผลให้สิ้นเปลือง Token และเรียกใช้งาน API ของเราหลายร้อยครั้งภายในเวลาเพียงหนึ่งนาที
Agent ทำตามสิ่งที่เราสั่ง เราบอกให้มัน retry หาก Tool ล้มเหลว แต่เราลืมบอกมันว่าควรหยุดเมื่อไหร่
การ retry นั้นมีประโยชน์สำหรับข้อผิดพลาดชั่วคราว (temporary errors) แต่ปัญหาคือ Agent ไม่สามารถแยกแยะได้ว่าข้อผิดพลาดนั้นเป็นแบบชั่วคราวหรือแบบถาวร (permanent error) หากไม่มีการจำกัดขอบเขต Agent จะพยายาม retry การเรียกใช้งานที่เสียไปเรื่อยๆ จนกว่าจะมีบางอย่างมาหยุดมัน
ในโค้ดแบบดั้งเดิม เราจะมีการกำหนดขีดจำกัดการ retry ไว้ แต่สำหรับการเรียกใช้ Tool ของ Agent การตัดสินใจนี้ถูกย้ายไปอยู่ในส่วนของการใช้เหตุผลของ Model (model reasoning) ซึ่งทำให้ Loop ที่เกิดขึ้นนั้นมองไม่เห็นและไม่มีขอบเขตจำกัด
เราแก้ไขปัญหานี้โดยการเพิ่ม "งบประมาณ" (budgets) สองรูปแบบที่อยู่นอกเหนือการควบคุมของ Model:
• Per-call cap: กำหนดจำนวนครั้งสูงสุดในการพยายามใช้ Tool เฉพาะอย่าง หากล้มเหลว Agent จะต้องเปลี่ยนไปใช้วิธีอื่นแทน • Per-session budget: กำหนดขีดจำกัดจำนวนการเรียกใช้ Tool ทั้งหมดสำหรับงานนั้นๆ หาก Agent เรียกใช้จนถึงขีดจำกัด มันจะหยุดทำงานและขอความช่วยเหลือ
ตัวการจำกัดขอบเขตเองไม่ใช่ทางออก แต่สิ่งที่เกิดขึ้นหลังจากถึงขีดจำกัดต่างหากที่สำคัญ
หากคุณแค่สั่งให้หยุด Agent จะติดขัด (stuck) แทนที่จะทำเช่นนั้น เราเลือกที่จะส่งข้อความที่ชัดเจนไปให้ Agent โดยบอกว่าการเรียกใช้งานล้มเหลวและห้าม retry อีก วิธีนี้จะเปลี่ยนจาก Loop ให้กลายเป็นการตัดสินใจ ซึ่งโดยปกติแล้ว Agent จะเลือกใช้วิธีการใหม่แทน
ตั้งแต่เราเพิ่มระบบนี้เข้ามา ปัญหา Loop จากการใช้ Tool ผิดพลาดก็แทบจะหมดไป และเมื่อมันเกิดขึ้น มันจะถูกจัดการอย่างเป็นระบบแทนที่จะสร้างบิลค่า API มหาศาล
การหาขีดจำกัดที่เหมาะสมนั้นเป็นเรื่องยาก หากตั้งไว้เข้มงวดเกินไป งานที่ต้องใช้เวลานานก็จะถูกขัดจังหวะ แต่หากตั้งไว้หลวมเกินไป ก็จะปล่อยให้เกิด Loop ที่สิ้นเปลือง เราจึงตั้งขีดจำกัดโดยอิงจากความยาวของงานที่ระดับ Percentile ที่ 95
คุณมีวิธีที่ดีกว่าในการตั้งงบประมาณเหล่านี้ไหม? บอกให้ผมรู้ในคอมเมนต์ได้เลย
Optional learning community: https://t.me/GyaanSetuAi