Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 5 — Trí nhớ và ngữ cảnh: giúp agent nhớ khách và quy trình

Đã đọc 0/9 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Trí nhớ và ngữ cảnh: giúp agent nhớ khách và quy trình

Mặc định, mỗi lần chạy agent "mất trí nhớ". Nó không biết khách này đã hỏi gì tuần trước, dự án đang tới đâu. Để agent làm việc như một trợ lý thật, bạn cần cấp cho nó trí nhớ đúng cách — và đúng cách nghĩa là ít mà đủ, không nhồi tất cả.

Ba loại trí nhớ

  • Trí nhớ hội thoại (ngắn hạn): lịch sử tin nhắn trong một phiên. Tự có sẵn khi bạn truyền lại messages.
  • Trí nhớ dài hạn (hồ sơ): thông tin bền vững về khách/dự án, lưu trong file hoặc database.
  • Trí nhớ tra cứu (RAG): kho tài liệu lớn (hợp đồng, portfolio, FAQ) mà agent tìm phần liên quan khi cần, thay vì đọc hết.

Ví dụ: agent chăm sóc khách

Hùng có 40 khách. Anh lưu mỗi khách một hồ sơ ngắn:

{
  "khach": "Cty ABC",
  "nguoi_lien_he": "chị Mai",
  "goi_dich_vu": "quản lý fanpage",
  "giong_van": "trang trọng",
  "ghi_chu": "thích báo cáo thứ 6, không thích gọi điện"
}

Khi soạn tin cho chị Mai, agent nạp đúng hồ sơ này vào context → email tự động đúng giọng, đúng thói quen. Khách tưởng Hùng nhớ mọi thứ.

Nguyên tắc: nhồi ít, nhồi đúng

Cửa sổ context có giới hạn và tốn tiền theo lượng chữ. Đừng dán cả 40 hồ sơ vào mỗi lần chạy. Quy trình đúng:

  • Xác định agent đang xử lý khách nào.
  • Chỉ nạp hồ sơ của khách đó.
  • Với tài liệu lớn, dùng tìm kiếm để lấy 3–5 đoạn liên quan nhất.

RAG tối giản cho freelancer

Bạn không cần hạ tầng phức tạp. Một cách nhẹ:

# Tìm các đoạn liên quan trong kho tài liệu bằng so khớp
def tim_lien_quan(cau_hoi, tai_lieu, k=3):
    diem = score_similarity(cau_hoi, tai_lieu)  # embedding hoặc keyword
    return top_k(diem, k)

doan = tim_lien_quan(email_khach, kho_faq, k=3)
context = "\n".join(doan)  # chỉ nhồi phần này vào prompt

Với quy mô nhỏ (vài chục tài liệu), thậm chí so khớp từ khóa đơn giản đã đủ tốt.

Khung quyết định: nhớ ở đâu?

Thông tinLưu ở đâu
Hội thoại đang diễn raMessages của phiên
Hồ sơ khách, quy tắc dự ánFile/DB, nạp theo khách
Tài liệu tham chiếu lớnKho + tra cứu (RAG)
Bí mật (API key, mật khẩu)KHÔNG bao giờ đưa vào prompt

Các bước làm

  • Tạo một hồ sơ chuẩn (JSON) cho mỗi khách/dự án.
  • Viết hàm "nạp hồ sơ theo ID" để chỉ lấy đúng phần cần.
  • Gom tài liệu tham chiếu vào một kho, thêm hàm tra cứu top-k.
  • Trong system prompt, nói rõ agent được dùng thông tin nào.
  • Kiểm tra: agent có bịa thông tin không có trong hồ sơ không?

Sai lầm thường gặp

  • Nhồi toàn bộ dữ liệu mỗi lần: đốt token, chậm, agent lạc trọng tâm.
  • Để agent "nhớ" bằng cách bịa: không cấp dữ liệu thật thì nó tự tưởng tượng lịch sử khách.
  • Đưa bí mật vào context: mật khẩu, API key lọt vào log/hội thoại.
  • Không cập nhật hồ sơ: agent dùng thông tin cũ, báo cáo sai tình trạng dự án.
  • RAG nhồi quá nhiều đoạn: 20 đoạn không liên quan làm nhiễu hơn 3 đoạn đúng.

Checklist

  • [ ] Có mẫu hồ sơ khách/dự án
  • [ ] Nạp theo ID, không nạp tất cả
  • [ ] Tài liệu lớn dùng tra cứu top-k
  • [ ] Không có bí mật trong context
Bài sau: nối agent vào workflow thật để chạy tự động end-to-end.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi