เลิกเทความจำของ 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