Xây dựng tác nhân AI đầu tiên của bạn với bộ nhớ
Tác nhân vs chatbot: sự khác biệt là gì
Một chatbot trả lời tin nhắn một cách độc lập. Mỗi cuộc trò chuyện là riêng biệt. Nếu bạn nói tên mình hôm qua, hôm nay nó không còn nhớ nữa.
Một tác nhân có thêm 3 đặc điểm:
1. Bộ nhớ bền vững: nhớ bạn qua các phiên
2. Công cụ: có thể gọi các API bên ngoài (tìm kiếm Google, gửi email, thực thi code)
3. Lập kế hoạch: có thể phân tách nhiệm vụ phức tạp thành các bước
Trong khóa học này chúng ta sẽ tập trung vào (1): bộ nhớ bền vững. Công cụ và lập kế hoạch là các khóa học riêng.

Kiến trúc bộ nhớ cơ bản
Những gì tác nhân cần lưu trữ về bạn:
- Sự kiện khai báo: "Pedro làm việc với Python", "thích cà phê không đường", "sống ở São Paulo"
- Sở thích: "trả lời bằng tiếng Việt trang trọng", "giải thích ngắn gọn, không rườm rà"
- Lịch sử tương tác: tóm tắt N cuộc hội thoại gần nhất
- Ngữ cảnh tạm thời: những gì bạn đang làm NGAY BÂY (xóa sau phiên)
Mẫu lưu trữ:
`
memoria_usuario = {
"facts": [
{"text": "Pedro trabalha com Python", "pinned": False},
{"text": "prefere respostas curtas", "pinned": True}
],
"summary_last_10_sessions": "Usuário aprendeu sobre TLS, APIs e autenticação...",
"preferences": {"response_language": "pt-BR", "tone": "technical"}
}`
Cách Brainiall thực hiện điều này
Backend của chúng tôi đã triển khai bộ nhớ bền vững. Bạn có thể:
1. Nhấp vào biểu tượng 🧠 trên thanh bên của chat
2. Xem danh sách các sự kiện mà AI đã học được về bạn
3. Ghim các sự kiện quan trọng (không bao giờ quên)
4. Chỉnh sửa hoặc xóa
5. Tắt bộ nhớ qua nút toggle
Nội bộ chúng tôi sử dụng:
- PostgreSQL JSONB để lưu trữ sự kiện theo từng người dùng
- Eviction policy: tối đa 50 sự kiện chưa ghim, cái cũ nhất sẽ bị xóa trước
- Extraction: sau mỗi 10 tin nhắn, LLM đọc cuộc trò chuyện và đề xuất sự kiện mới để phê duyệt
- Retrieval: trước khi trả lời, tìm kiếm các sự kiện liên quan và đưa vào prompt
Xây dựng tác nhân của bạn qua API
Ví dụ tối giản bằng Python:
`python
import httpx
BASE = "https://api.brainiall.com"
KEY = "brnl-xxxxx"
def chat(message, user_memory):
# Inject memory as system prompt context
memory_text = "\n".join(f"- {f}" for f in user_memory["facts"])
system = f"Você é um assistente pessoal. Sobre o usuário:\n{memory_text}"
r = httpx.post(
f"{BASE}/v1/chat/completions",
json={
"model": "claude-sonnet-4-6",
"messages": [
{"role": "system", "content": system},
{"role": "user", "content": message}
]
},
headers={"Authorization": f"Bearer {KEY}"}
)
return r.json()["choices"][0]["message"]["content"]
# Uso
memory = {"facts": ["Pedro trabalha com Python", "gosta de café sem açúcar"]}
print(chat("Que que bebi hoje de manhã?", memory))
# → "Você provavelmente bebeu um café sem açúcar, certo?"`
Đây là một tác nhân cơ bản. Thêm extraction tự động (LLM đọc và trích xuất sự kiện mới) và retrieval (chỉ đưa vào các sự kiện liên quan) sẽ đưa code lên khoảng ~100 dòng.
Những cạm bẫy thường gặp
- Bộ nhớ phình to: không có eviction, bộ nhớ sẽ tăng đến khi vượt giới hạn token
- Sự kiện mâu thuẫn: "Pedro thích cà phê" + "Pedro đã ngừng uống cà phê" — cái nào được ưu tiên?
- Quyền riêng tư: người dùng phải luôn có thể xem + chỉnh sửa + xóa
- Sai phạm vi: ký ức từ công việc không được rò rỉ sang các chat cá nhân
- Drift: LLM có thể bịa ra sự kiện sai nếu prompt mơ hồ; luôn xác thực trước khi lưu

Các trường hợp sử dụng
- Gia sư cá nhân hóa: nhớ những chủ đề bạn đã thành thạo hoặc còn gặp khó khăn
- Chuyên gia dinh dưỡng ảo: lịch sử bữa ăn, sở thích, hạn chế ăn uống
- Coach sự nghiệp: nhớ mục tiêu, thành tích gần đây, điểm cần cải thiện
- Trợ lý viết lách: phong cách của bạn, giọng văn ưa thích, các chủ đề thường xuyên
- Hỗ trợ kỹ thuật nội bộ: nhớ các ticket trước đây, hệ thống bạn đang sử dụng
Thử ngay bây giờ
Trong chat Brainiall, mở một cuộc trò chuyện, kể điều gì đó về bản thân, đóng lại, mở cuộc trò chuyện khác vào ngày hôm sau — tác nhân vẫn nhớ. Bật/tắt qua biểu tượng 🧠 trên thanh bên. Gói Pro có bộ nhớ đầy đủ; gói miễn phí có bộ nhớ giới hạn 10 sự kiện.