เลิกเทความจำของ Agent ลงใน Prompt เสียที
นักพัฒนาส่วนใหญ่สร้าง Agent loop โดยการต่อท้ายทุกอย่างลงใน Prompt ถัดไป
คุณเพิ่มทั้งสิ่งที่สังเกตเห็นก่อนหน้า, การเรียกใช้เครื่องมือ (tool calls), และร่องรอยการใช้เหตุผล (reasoning traces) คุณเพิ่มข้อมูลไปเรื่อยๆ จน Prompt กลายเป็นเหมือนลิ้นชักเก็บของจิปาถะ โมเดลอาจจะเห็นข้อมูลมากขึ้น แต่คุณจะสูญเสียการควบคุม คุณจะไม่รู้เลยว่าความจำชิ้นไหนที่เป็นสาเหตุของการตัดสินใจเฉพาะเจาะจงนั้นๆ
งานวิจัยใหม่ที่ชื่อว่า AgenticSTS เสนอแนวทางที่แตกต่างออกไป โดยมองว่าความจำคืออินเทอร์เฟซ (interface) แทนที่จะเป็นการแย่งชิงพื้นที่ใน context window ให้ใหญ่ที่สุด
งานวิจัยนี้ใช้เกม Slay the Spire 2 เป็นสนามทดสอบ ซึ่งสภาพแวดล้อมนี้ต้องใช้การตัดสินใจเชิงกลยุทธ์หลายร้อยครั้ง มันไม่ใช่แค่แชทบอทธรรมดา
แนวคิดหลักคือ: ความจำคือข้อตกลง (contract) ว่าการตัดสินใจในอนาคตจะได้รับอนุญาตให้เห็นข้อมูลอะไรบ้าง
แทนที่จะใช้บันทึกการสนทนาแบบดิบๆ (raw transcripts) ผู้เขียนได้สร้าง Prompt ใหม่ขึ้นมาโดยใช้ 5 เลเยอร์เฉพาะทาง:
- คำแนะนำโปรโตคอลแบบคงที่ (Fixed protocol instructions)
- สถานะปัจจุบันและโครงสร้างการทำงาน (Current state and action schemas)
- กฎของเกมที่ดึงมาใช้ (Retrieved game rules)
- สรุปผลจากการรันครั้งก่อนหน้า (Summaries from prior runs)
- ทักษะเชิงกลยุทธ์ที่ถูกกระตุ้นขึ้นมา (Triggered strategic skills)
โครงสร้างนี้เปลี่ยนทุกอย่าง คุณสามารถตรวจสอบ, แช่แข็ง (freeze), หรือปิดการใช้งานแต่ละเลเยอร์ได้ คุณเปลี่ยนความจำจากกองข้อมูลให้กลายเป็นหลักฐานที่ถูกคัดสรรมาแล้ว
ความล้มเหลวของ Agent ในระดับโปรดักชันหลายครั้งไม่ใช่ความล้มเหลวของโมเดล แต่เป็นความล้มเหลวของบริบท (context failures) Agent ผสมปนเปสถานะเก่าเข้ากับสถานะใหม่ หรือนำการสะท้อนความคิด (reflections) ที่ล้าสมัยติดตัวไปด้วย หากนโยบายเดียวของคุณคือการต่อท้ายข้อความเพิ่มเข้าไปเรื่อยๆ การดีบั๊กจะให้ความรู้สึกเหมือนการขุดค้นทางโบราณคดี
อินเทอร์เฟซความจำแบบกำหนดประเภท (typed memory interface) จะช่วยให้คุณมีสิ่งที่จะนำมาเปรียบเทียบได้
สำหรับ Agent ที่ทำงานต่อเนื่องเป็นเวลานาน Context window ขนาดใหญ่คือกับดัก มันจะกลายเป็นส่วนผสมของข้อเท็จจริง, ข้อเท็จจริงที่ล้าสมัย, และความพยายามที่ล้มเหลว ยิ่งหน้าต่างบริบทใหญ่เท่าไหร่ คุณก็ยิ่งแยกไม่ออกระหว่าง "ตะกอนข้อมูล" กับ "ความจำ" ได้ง่ายเท่านั้น
เพื่อสร้าง Agent ที่ดีขึ้น ให้ทำตามรูปแบบเหล่านี้:
- แยกคำแนะนำที่คงที่ออกจากสถานะปัจจุบัน
- เก็บกฎต่างๆ ไว้ในเลเยอร์การดึงข้อมูล (retrieval layer)
- เก็บประสบการณ์ในรูปแบบบันทึกที่ชัดเจน ไม่ใช่แค่เศษซากจากการแชท (chat residue)
- เปลี่ยนการแก้ไขปัญหาที่เกิดขึ้นซ้ำๆ ให้เป็นทักษะที่ถูกกระตุ้นขึ้นมา (triggered skills)
- ทำให้ทุกเลเยอร์ของความจำสามารถถอดออกได้เพื่อการทดสอบ
หากคุณไม่สามารถปิดเลเยอร์ความจำบางอย่างได้ คุณก็จะไม่รู้เลยว่ามันช่วยได้จริงหรือไม่ คุณจะรู้แค่ว่ากองข้อมูลทั้งหมดนั้นทำงานได้ในบางครั้งเท่านั้น
เลิกปฏิบัติกับความจำของ Agent เหมือนเป็นแค่ "เลเยอร์ความรู้สึก" (vibes layer) แต่จงเปลี่ยนไปสู่ระบบที่คุณรู้แน่ชัดว่าอะไรถูกใส่เข้าไปในการตัดสินใจครั้งถัดไป มันมาจากไหน และจะปิดการใช้งานมันได้อย่างไร
หาก Agent ของคุณไม่สามารถอธิบายได้ว่ามันได้รับอนุญาตให้จำอะไรบ้าง นั่นแปลว่ามันไม่มีความจำ มันก็แค่ Prompt ที่มีห้องใต้ดินรกๆ เท่านั้นเอง
Source: https://dev.to/komo/stop-dumping-agent-memory-into-the-prompt-58ka
Optional learning community: https://t.me/GyaanSetuAi
