Khi xây dựng chatbot dùng mô hình ngôn ngữ lớn, nhiều đội phát triển thường bắt đầu bằng cách đưa toàn bộ lịch sử hội thoại vào prompt. Cách này đơn giản, nhưng nhanh chóng gặp vấn đề: prompt dài, chi phí tăng, phản hồi chậm, và quan trọng hơn là mô hình có thể bám vào thông tin cũ không còn đúng. Vì vậy, “bộ nhớ” của chatbot không nên được hiểu là lưu càng nhiều càng tốt, mà là thiết kế cơ chế nhớ có kiểm soát. Một chatbot hỗ trợ khách hàng chẳng hạn không cần nhớ mọi câu chào, lời cảm ơn hay đoạn trao đổi lan man. Thứ cần nhớ có thể là: khách đang dùng gói dịch vụ nào, lỗi đang gặp, mã đơn hàng, bước xử lý đã thử, hoặc cam kết mà nhân viên ảo đã đưa ra. Ngược lại, các thông tin nhạy cảm như mật khẩu, số thẻ, mã OTP nên bị loại bỏ ngay từ đầu thay vì lưu vào bộ nhớ dài hạn. Có thể chia bộ nhớ của chatbot thành ba lớp: - Bộ nhớ ngắn hạn: là vài lượt hội thoại gần nhất, giúp mô hình trả lời mạch lạc trong phiên hiện tại. - Tóm tắt phiên: sau một số lượt trao đổi, hệ thống tạo bản tóm tắt ngắn gọn về mục tiêu, trạng thái và quyết định đã có. - Bộ nhớ dài hạn: chỉ lưu những thông tin có giá trị sử dụng lại, ví dụ sở thích người dùng, cấu hình dự án, hoặc hồ sơ hỗ trợ đã được xác nhận. Một lỗi phổ biến là để LLM tự quyết định toàn bộ việc ghi nhớ. Cách an toàn hơn là định nghĩa quy tắc rõ ràng: thông tin nào được lưu, thông tin nào phải bỏ, thông tin nào cần người dùng xác nhận. Ví dụ, nếu người dùng nói “từ giờ gọi tôi là Minh”, hệ thống có thể lưu tên hiển thị. Nhưng nếu người dùng vô tình nhập “mật khẩu của tôi là...”, hệ thống nên che hoặc loại bỏ trước khi ghi log. Về mặt triển khai, bạn có thể dùng một bước phân loại sau mỗi lượt hội thoại: 1. Trích xuất các sự kiện có khả năng cần nhớ. 2. Kiểm tra xem chúng có thuộc nhóm được phép lưu không. 3. Chuẩn hóa thành dạng có cấu trúc, ví dụ: {"user_preference": "thích câu trả lời ngắn gọn"}. 4. Gắn thời gian cập nhật và nguồn gốc thông tin. 5. Cho phép ghi đè hoặc xóa khi người dùng thay đổi ý định. Khi đưa bộ nhớ vào prompt, cũng không nên nhồi tất cả. Hãy truy xuất theo ngữ cảnh: câu hỏi hiện tại liên quan đến thanh toán thì lấy thông tin gói dịch vụ và lịch sử giao dịch hỗ trợ; câu hỏi liên quan đến phong cách trả lời thì lấy tùy chọn giao tiếp. Bộ nhớ không liên quan chỉ làm mô hình dễ nhiễu. Một mẹo thực tế là luôn phân biệt giữa “thông tin người dùng nói” và “thông tin hệ thống đã xác nhận”. Nếu người dùng nói “tôi đã thanh toán rồi”, đó mới là tuyên bố của người dùng. Nếu hệ thống kiểm tra cơ sở dữ liệu và thấy hóa đơn đã thanh toán, đó mới là trạng thái đã xác nhận. Prompt nên thể hiện rõ sự khác biệt này để tránh chatbot khẳng định sai. Cuối cùng, hãy thiết kế khả năng quên. Người dùng nên có cách xem, sửa hoặc xóa các thông tin đã lưu. Ngoài ra, một số loại bộ nhớ nên có hạn sử dụng: lỗi kỹ thuật của tháng trước có thể không còn liên quan hôm nay. Bộ nhớ tốt không phải là kho lưu trữ vô hạn, mà là một lớp ngữ cảnh được quản lý cẩn thận. Nếu mới bắt đầu, lời khuyên là đừng xây hệ thống bộ nhớ quá phức tạp. Hãy bắt đầu với tóm tắt phiên và một danh sách nhỏ các trường được phép lưu. Sau đó theo dõi các lỗi thực tế: chatbot nhớ sai, nhớ thiếu, dùng thông tin cũ, hoặc lưu thông tin không nên lưu. Chính những lỗi này sẽ cho bạn biết cần mở rộng bộ nhớ theo hướng nào.