Đừng đổ dồn bộ nhớ của Agent vào Prompt nữa

Hầu hết các nhà phát triển xây dựng các vòng lặp agent bằng cách nối thêm mọi thứ vào prompt tiếp theo.

Bạn thêm các quan sát trước đó, các lệnh gọi công cụ (tool calls) và các dấu vết suy luận (reasoning traces). Bạn cứ tiếp tục thêm dữ liệu cho đến khi prompt trở thành một "ngăn kéo chứa rác". Mô hình nhìn thấy nhiều hơn, nhưng bạn lại mất kiểm soát. Bạn không còn biết mảnh bộ nhớ nào đã dẫn đến một quyết định cụ thể.

Một bài báo nghiên cứu mới có tên AgenticSTS đề xuất một hướng đi khác. Nó coi bộ nhớ là một giao diện thay vì là một cuộc đua giành lấy cửa sổ ngữ cảnh (context window) lớn nhất.

Bài báo sử dụng trò chơi Slay the Spire 2 làm môi trường thử nghiệm. Môi trường này đòi hỏi hàng trăm quyết định chiến lược. Nó không phải là một chatbot đơn giản.

Ý tưởng cốt lõi là thế này: Bộ nhớ là một bản hợp đồng về những gì một quyết định trong tương lai được phép nhìn thấy.

Thay vì các bản ghi thô, các tác giả soạn thảo các prompt mới bằng cách sử dụng năm lớp cụ thể:

  • Các hướng dẫn giao thức cố định
  • Trạng thái hiện tại và các schema hành động
  • Các quy tắc trò chơi được truy xuất
  • Bản tóm tắt từ các lượt chạy trước đó
  • Các kỹ năng chiến lược được kích hoạt

Cấu trúc này thay đổi mọi thứ. Bạn có thể kiểm tra, đóng băng hoặc vô hiệu hóa từng lớp. Bạn biến bộ nhớ từ một đống dữ liệu thành những bằng chứng được chọn lọc.

Nhiều thất bại của agent trong môi trường thực tế không phải là lỗi của mô hình. Đó là lỗi về ngữ cảnh. Agent trộn lẫn trạng thái cũ với trạng thái mới hoặc mang theo những suy ngẫm (reflections) đã lỗi thời. Nếu chính sách duy nhất của bạn là nối thêm văn bản, việc gỡ lỗi (debugging) sẽ giống như đang làm khảo cổ học.

Một giao diện bộ nhớ có kiểu dữ liệu (typed memory interface) cung cấp cho bạn thứ gì đó để so sánh.

Đối với các agent chạy lâu dài, một cửa sổ ngữ cảnh khổng lồ là một cái bẫy. Nó trở thành một hỗn hợp của các sự thật, các sự thật lỗi thời và các nỗ lực thất bại. Cửa sổ càng lớn, bạn càng dễ nhầm lẫn lớp trầm tích với bộ nhớ.

Để xây dựng các agent tốt hơn, hãy tuân theo các mô hình sau:

  • Tách biệt các hướng dẫn ổn định khỏi trạng thái hiện tại
  • Giữ các quy tắc trong một lớp truy xuất
  • Lưu trữ kinh nghiệm dưới dạng các bản ghi rõ ràng, không phải là tàn dư của cuộc trò chuyện
  • Biến các lần sửa lỗi lặp đi lặp lại thành các kỹ năng được kích hoạt
  • Làm cho mỗi lớp bộ nhớ có thể gỡ bỏ được để thử nghiệm

Nếu bạn không thể tắt một lớp bộ nhớ, bạn sẽ không biết liệu nó có thực sự giúp ích hay không. Bạn chỉ biết rằng cả đống đó đôi khi hoạt động.

Đừng coi bộ nhớ của agent như một "lớp cảm tính" (vibes layer) nữa. Hãy hướng tới một hệ thống mà bạn biết chính xác điều gì được đưa vào quyết định tiếp theo, nó đến từ đâu và cách để vô hiệu hóa nó.

Nếu agent của bạn không thể giải thích nó được phép nhớ những gì, nó không hề có bộ nhớ. Nó chỉ có một prompt kèm theo một cái tầng hầm mà thôi.

Source: https://dev.to/komo/stop-dumping-agent-memory-into-the-prompt-58ka

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