เจาะลึกการทำงานภายใน AI Agent
การสาธิต AI agent ในวิดีโอดูดีมาก แต่พวกมันมักจะล้มเหลวเมื่อคุณถามคำถามจริงๆ
เอเจนต์ทำสิ่งที่ผิดพลาด ลืมการตัดสินใจ เรียกใช้เครื่องมือที่ไม่มีอยู่จริง หรือวนลูปไม่รู้จบ สิ่งเหล่านี้ไม่ใช่ความล้มเหลวของโมเดล แต่เป็นความล้มเหลวของเวิร์กโฟลว์ (workflow)
เอเจนต์คือเวิร์กโฟลว์ของซอฟต์แวร์ โมเดลภาษาจะเลือกขั้นตอนถัดไปและเรียกใช้เครื่องมือ ความฉลาดอยู่ที่การประสานงาน (orchestration) ไม่ใช่แค่ที่ตัวโมเดลเพียงอย่างเดียว
เอเจนต์ที่ใช้งานจริง (production agent) ทุกตัวอาศัยเสาหลัก 5 ประการ:
- การวางแผน (Planning): คิดก่อนลงมือทำ
- การใช้เครื่องมือ (Tool Use): การโต้ตอบกับโลกภายนอก
- หน่วยความจำ (Memory): การจัดเก็บบริบทและข้อเท็จจริง
- ข้อจำกัด (Constraints): การกำหนดขอบเขตและงบประมาณ
- การตรวจสอบ (Verification): การพิสูจน์ว่างานที่ทำนั้นถูกต้อง
รูปแบบการวางแผน (Planning Styles)
เอเจนต์แบบพื้นฐาน (Naive agents) จะกระโดดไปลงมือทำทันที ซึ่งนำไปสู่การหลอน (hallucinations) เอเจนต์ที่ดีต้องวางแผนก่อน
- วางแผนแล้วค่อยทำ (Plan-then-execute): โมเดลจะเขียนแผนการทั้งหมดออกมา วิธีนี้ตรวจสอบได้ง่ายแต่ปรับเปลี่ยนได้ยากหากสถานการณ์จริงเปลี่ยนไป
- ReAct (Reason + Act): โมเดลจะคิด ลงมือทำ และสังเกตการณ์ในรูปแบบลูป วิธีนี้มีความยืดหยุ่นมากกว่าแต่ต้องแลกด้วยจำนวน token และเวลาที่มากขึ้น
การใช้เครื่องมือ (Tool Use)
หากไม่มีเครื่องมือ เอเจนต์ก็เป็นเพียงแค่แชทบอท เครื่องมือหนึ่งอย่างจำเป็นต้องมีชื่อ, JSON schema และฟังก์ชัน
โมเดลจะเลือกเครื่องมือตามคำอธิบาย หากคำอธิบายของคุณคลุมเครือ เอเจนต์จะล้มเหลว ให้ปฏิบัติกับคำอธิบายเหมือนเป็นเอกสารข้อกำหนด (spec sheets) โดยระบุให้ชัดเจนว่าเครื่องมือนั้นมีไว้เพื่ออะไรและไม่ควรใช้ทำอะไร
ควรตรวจสอบการเรียกใช้เครื่องมือ (tool calls) เสมอ หากโมเดลส่งอาร์กิวเมนต์ (arguments) ที่ไม่ถูกต้อง ให้ปฏิเสธการเรียกนั้นและส่งข้อผิดพลาดกลับไปยังโมเดล วิธีนี้จะช่วยให้เอเจนต์เรียนรู้ได้ในระหว่างการทำงานในลูป
หน่วยความจำ (Memory)
หน่วยความจำไม่ได้มีเพียงรูปแบบเดียว
- หน่วยความจำระยะสั้น (Working Memory): บทสนทนาปัจจุบันและผลลัพธ์จากเครื่องมือ
- กระดาษทด (Scratchpad): พื้นที่สำหรับให้เอเจนต์เขียนบันทึกถึงตัวเอง
- หน่วยความจำระยะยาว (Long-term Memory): การจัดเก็บข้อเท็จจริงสำหรับการใช้งานในอนาคต
อย่าพึ่งพาเพียงแค่ vector databases เท่านั้น หน่วยความจำแบบใช้ไฟล์ (File-based memory) โดยใช้ไฟล์ markdown มักจะดีกว่า เพราะตรวจสอบ แก้ไข และค้นหา (grep) ได้ง่าย
ข้อจำกัดและความปลอดภัย (Constraints and Safety)
เอเจนต์ที่ใช้งานจริงต้องการการควบคุม (guardrails) โดยใช้ 4 วิธีนี้:
- รายการเครื่องมือที่อนุญาต (Tool allowlists): อนุญาตเฉพาะเครื่องมือที่ระบุชื่อไว้เท่านั้น
- งบประมาณรอบการทำงาน (Iteration budgets): จำกัดจำนวนขั้นตอนเพื่อป้องกันการวนลูปไม่รู้จบ
- งบประมาณ token (Token budgets): จำกัดค่าใช้จ่ายโดยการกำหนดเพดานจำนวน token ทั้งหมด
- จุดอนุมัติ (Approval gates): กำหนดให้ต้องมีการอนุญาตจากมนุษย์สำหรับการกระทำที่มีความเสี่ยงสูง เช่น การส่งอีเมลหรือการลบข้อมูล
การตรวจสอบ (Verification)
อย่าเชื่อใจโมเดลเมื่อมันบอกว่างานเสร็จสิ้นแล้ว เพราะโดยธรรมชาติแล้วโมเดลมักจะมีความมั่นใจสูงเสมอ
ใช้การตรวจสอบจริง หากเอเจนต์เขียนโค้ด ให้รันการทดสอบ (tests) หากมันสร้าง JSON ให้ตรวจสอบ schema หากมันทำงานบางอย่าง ให้รันคำสั่ง query เพื่อยืนยันการเปลี่ยนแปลงนั้น
เอเจนต์ที่ดีที่สุดจะใช้การตรวจสอบภายในลูป หากการทดสอบล้มเหลว ให้ส่งข้อผิดพลาดกลับไปที่เอเจนต์ และปล่อยให้มันลองใหม่อีกครั้ง
เลิกวิ่งตามการเขียน prompt ที่ฉลาดขึ้น แต่เริ่มสร้างระบบหลังบ้าน (plumbing) ที่ดีกว่าเดิม
Optional learning community: https://t.me/GyaanSetuAi
