เจาะลึกการทำงานภายใน AI Agent

การสาธิต AI agent ในวิดีโอดูดีมาก แต่พวกมันมักจะล้มเหลวเมื่อคุณถามคำถามจริงๆ

เอเจนต์ทำสิ่งที่ผิดพลาด ลืมการตัดสินใจ เรียกใช้เครื่องมือที่ไม่มีอยู่จริง หรือวนลูปไม่รู้จบ สิ่งเหล่านี้ไม่ใช่ความล้มเหลวของโมเดล แต่เป็นความล้มเหลวของเวิร์กโฟลว์ (workflow)

เอเจนต์คือเวิร์กโฟลว์ของซอฟต์แวร์ โมเดลภาษาจะเลือกขั้นตอนถัดไปและเรียกใช้เครื่องมือ ความฉลาดอยู่ที่การประสานงาน (orchestration) ไม่ใช่แค่ที่ตัวโมเดลเพียงอย่างเดียว

เอเจนต์ที่ใช้งานจริง (production agent) ทุกตัวอาศัยเสาหลัก 5 ประการ:

  • การวางแผน (Planning): คิดก่อนลงมือทำ
  • การใช้เครื่องมือ (Tool Use): การโต้ตอบกับโลกภายนอก
  • หน่วยความจำ (Memory): การจัดเก็บบริบทและข้อเท็จจริง
  • ข้อจำกัด (Constraints): การกำหนดขอบเขตและงบประมาณ
  • การตรวจสอบ (Verification): การพิสูจน์ว่างานที่ทำนั้นถูกต้อง

รูปแบบการวางแผน (Planning Styles)

เอเจนต์แบบพื้นฐาน (Naive agents) จะกระโดดไปลงมือทำทันที ซึ่งนำไปสู่การหลอน (hallucinations) เอเจนต์ที่ดีต้องวางแผนก่อน

  1. วางแผนแล้วค่อยทำ (Plan-then-execute): โมเดลจะเขียนแผนการทั้งหมดออกมา วิธีนี้ตรวจสอบได้ง่ายแต่ปรับเปลี่ยนได้ยากหากสถานการณ์จริงเปลี่ยนไป
  2. 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) ที่ดีกว่าเดิม

Source: https://dev.to/nazar_boyko/inside-an-ai-agent-planning-tool-use-memory-constraints-and-verification-2fcc

Optional learning community: https://t.me/GyaanSetuAi