สิ่งที่ผมได้เรียนรู้จากการรัน AI Agents ในระบบโปรดักชันจริง
ผมสร้างระบบ AI ผมคุยกับวิศวกรที่ส่งมอบโค้ดจริง และผมพบว่ามีความแตกต่างอย่างมากระหว่างเดโมที่ดูหวือหวา กับระบบโปรดักชันที่ใช้งานจริง
เดี๋ยวนี้ใครๆ ก็เรียกทุกอย่างว่าเป็น agent ไปหมด สคริปต์ที่มีลูปก็เป็น agent แชทบอทที่มีหน่วยความจำก็เป็น agent ความเข้าใจผิดนี้ส่งผลให้เกิดวิศวกรรมที่แย่
หลายทีมพยายามออกแบบระบบที่ซับซ้อนเกินความจำเป็นสำหรับงานง่ายๆ พวกเขาเพิ่มการจัดการลำดับงาน (orchestration) ที่ซับซ้อนให้กับเวิร์กโฟลว์ที่ต้องการเพียงแค่ prompt ดีๆ เพียงอันเดียวเท่านั้น
Agent ต้องมีวัตถุประสงค์ ไม่ใช่แค่คำสั่ง มันต้องตัดสินใจได้ว่าจะทำอะไรต่อไป ต้องรับมือกับความล้มเหลวได้ และต้องรู้ว่าเมื่อไหร่ที่งานเสร็จสิ้น
นอกเหนือจากนั้น มันก็เป็นแค่การเรียกใช้ฟังก์ชัน (function call) เท่านั้น
• ถ้ามนุษย์ต้องคอยชี้นำในทุกขั้นตอน นั่นคืออินเทอร์เฟซการแชท (chat interface) • ถ้าระบบสามารถกู้คืนตัวเองได้จากการเรียกใช้เครื่องมือที่ล้มเหลว นั่นคือ agent • ถ้าระบบสามารถย่อยเป้าหมายออกเป็นงานย่อยๆ ได้ นั่นคือ agent ที่แท้จริง
การนำ agent ไปใช้งานจริงมักจะมีขอบเขตที่เฉพาะเจาะจง พวกมันทำสิ่งใดสิ่งหนึ่งได้ดี เช่น การสกัดข้อมูลจากเอกสาร (document extraction) หรือการรีวิวโค้ด (code review) พวกมันไม่ใช่เครื่องมือที่ใช้ในการใช้เหตุผลทั่วไป (general reasoning engines)
ทีมที่ประสบความสำเร็จจะมุ่งเน้นไปที่ 3 สิ่งนี้:
- การออกแบบเครื่องมือ (Tool design): อินเทอร์เฟซที่สะอาดและชัดเจนสำหรับสิ่งที่ agent เรียกใช้
- การรับมือกับความล้มเหลว (Failure handling): จะเกิดอะไรขึ้นเมื่อเครื่องมือไม่ส่งค่าใดๆ กลับมา
- การสังเกตการณ์ (Observability): การติดตามร่องรอยว่าทำไม agent ถึงตัดสินใจเช่นนั้น
เฟรมเวิร์กอย่าง LangChain หรือ CrewAI เปลี่ยนแปลงทุกเดือน แต่รูปแบบ (patterns) นั้นสำคัญกว่าตัวเฟรมเวิร์ก
ใช้รูปแบบเหล่านี้เพื่อความสำเร็จ:
- วางแผนแล้วค่อยลงมือทำ (Plan then execute): ใช้ขั้นตอนหนึ่งสำหรับการวางแผน และอีกขั้นตอนแยกต่างหากสำหรับการลงมือทำ
- แยกการดึงข้อมูลออกจากกระบวนการใช้เหตุผล (Separate retrieval from reasoning): การดึงบริบท (context) และการใช้บริบทเป็นงานที่ต่างกัน
- การส่งต่องานที่ชัดเจน (Explicit handoffs): ใช้ log ที่มีโครงสร้างเมื่อ agent ตัวหนึ่งส่งต่องานให้อีกตัวหนึ่ง
RAG เป็นมาตรฐานทั่วไป แต่คนส่วนใหญ่มักจะพลาดตรงขั้นตอนการแบ่งส่วนข้อมูล (chunking) หากคุณแบ่งข้อความไม่ดี โมเดลจะสูญเสียบริบท หากผลลัพธ์ของ RAG ไร้ประโยชน์ ให้ตรวจสอบ metadata และกลยุทธ์การทำ chunking ของคุณก่อนที่จะไปโทษโมเดล
โมเดลจะเก่งขึ้นและราคาถูกลง แต่นั่นไม่ได้เปลี่ยนความท้าทายหลักทางวิศวกรรม คุณต้องสร้างระบบที่ทำงานได้อย่างถูกต้องแม้ในเวลาที่คุณไม่ได้เฝ้าดูอยู่
มุ่งเน้นไปที่การกำกับดูแล (governance) และการสังเกตการณ์ (observability) วิศวกรที่มีความสำคัญคือผู้ที่สามารถสร้างระบบที่ผู้อื่นไว้วางใจได้ นี่คือการออกแบบระบบ (systems design) ไม่ใช่การวิจัยโมเดล (model research)
Source: https://dev.to/aibughunter/what-i-learned-after-running-ai-agents-in-production-for-a-year-49n
