𝗙𝗮𝘀𝘁𝗖𝗼𝗻𝘁𝗲𝘅: 𝗦𝗲𝗽𝗮𝗿𝗮𝘁𝗲 𝗦𝗲𝗮𝗿𝗰𝗵 𝗳𝗿𝗼𝗺 𝗦𝗼𝗹𝘃𝗶𝗻𝗴
Coding agents เสียเวลามากเกินไปกับการค้นหาโค้ด
Microsoft และ Shanghai Jiao Tong University ได้ทำการศึกษาปัญหานี้ และพบว่าการค้นหาโค้ดใช้สัดส่วนถึง 56.2% ของจำนวนครั้งในการใช้เครื่องมือ (tool use turns) และยังใช้โทเคน (tokens) ไปถึง 46.5% ของจำนวนทั้งหมด
เมื่อโมเดลเพียงตัวเดียวต้องทำทั้งการค้นหาและแก้ไขโค้ด หน่วยความจำของมันจะเริ่มสับสนวุ่นวาย เพราะเต็มไปด้วยเศษเสี้ยวของไฟล์ (file snippets) ที่ไม่จำเป็นและการคาดเดาที่ผิดพลาด ซึ่งสิ่งนี้ทำให้การใช้เหตุผล (reasoning) ทำได้ยากขึ้น
FastContext เข้ามาแก้ปัญหานี้ โดยการใช้ subagent แยกต่างหากสำหรับการสำรวจ repository
วิธีการทำงาน: • explorer agent จะค้นหาไฟล์และเลขบรรทัดที่ถูกต้อง • มันจะไม่ส่งสรุปเนื้อหายาวๆ ไปยัง agent หลัก • มันจะส่งเพียงชุดข้อมูลหลักฐานที่แม่นยำจำนวนเล็กน้อยเท่านั้น • agent หลักจะสามารถจดจ่ออยู่กับการแก้ไขบั๊กได้อย่างเต็มที่
การออกแบบนี้ให้ผลลัพธ์ที่ดีเยี่ยม 2 ประการ:
- ลดสัญญาณรบกวน (noise) agent หลักไม่จำเป็นต้องเห็นทุกทางตันที่ค้นหาไม่เจอ
- ประสิทธิภาพดีขึ้น โมเดลขนาดเล็ก (4B ถึง 30B parameters) ก็สามารถจัดการงานด้านการค้นหาได้อย่างมีประสิทธิภาพ
ผลลัพธ์ที่ได้นั้นชัดเจน การใช้ FastContext ร่วมกับ Mini-SWE-Agent ช่วยเพิ่มความสำเร็จในการทำงานขึ้น 5.5% และยังช่วยลดการใช้โทเคนลงได้ถึง 60%
บทเรียนสำหรับการสร้าง agent:
- มองว่าการค้นหาเป็นงานหลัก ไม่ใช่แค่ขั้นตอนรอง
- ส่งเฉพาะเส้นทางไฟล์ (file paths) และเลขบรรทัด ไม่ใช่ประวัติการแชททั้งหมด
- ฝึกฝนโมเดลให้ส่งข้อมูลที่มีโครงสร้าง (structured data) เพื่อส่งต่อให้โมเดลถัดไป
- ให้ความสำคัญกับการใช้โทเคนพอๆ กับอัตราความสำเร็จของงาน
อย่าบังคับให้โมเดลเพียงตัวเดียวทำทุกอย่าง การมีผู้เชี่ยวชาญเฉพาะด้านสำหรับการค้นหา จะช่วยให้ตัวแก้ปัญหา (solver) ทำงานได้เร็วขึ้นและน่าเชื่อถือยิ่งขึ้น
Optional learning community: https://t.me/GyaanSetuAi