Caching thường là thứ cho ROI cao nhất: cùng lúc giảm token phải trả và giảm độ trễ. Nhưng "cache" trong hệ thống agent có ba loại khác nhau, dùng sai loại thì hoặc vô dụng, hoặc trả về câu trả lời sai.
Ba loại cache
- Prompt/Prefix caching (phía nhà cung cấp): nhà cung cấp lưu phần đầu prompt cố định (system prompt, tool schema, tài liệu tĩnh). Lần sau gửi lại y hệt phần đầu → token đó tính giá rẻ hơn nhiều và TTFT giảm mạnh. Bạn không lưu gì cả, chỉ cần đặt phần bất biến lên đầu.
- Exact-match cache (phía bạn): băm toàn bộ input; nếu trùng, trả kết quả cũ, khỏi gọi model. Hoàn hảo cho câu hỏi lặp y hệt (FAQ, retry).
- Semantic cache (phía bạn): nhúng câu hỏi thành vector; nếu gần một câu đã trả lời (cosine ≥ ngưỡng), tái dùng. Bắt được câu "hỏi khác chữ, cùng ý".
Ví dụ: prefix caching cho agent
Agent của bạn có system prompt 3.000 token + 15 tool schema (2.000 token) — tổng 5.000 token không đổi mỗi lượt. Đặt chúng ở đầu, phần động (câu hỏi người dùng) ở cuối:
[ system prompt cố định ] <- được cache
[ tool schema cố định ] <- được cache
[ tài liệu tĩnh cố định ] <- được cache
--- điểm cache ---
[ lịch sử + câu hỏi (động) ] <- không cache
Kết quả điển hình: 5.000 token input đầu chuyển sang giá cache (rẻ ~10x) và TTFT giảm rõ rệt. Chỉ cần không xáo trộn thứ tự phần đầu.
Các bước triển khai
- Tách bất biến khỏi biến thiên trong prompt; dồn bất biến lên đầu để hưởng prefix cache.
- Bật/khai báo prefix caching theo tài liệu nhà cung cấp (thường là đánh dấu đoạn cần cache).
- Thêm exact-match cache cho các lệnh gọi phụ trợ có input hữu hạn (phân loại intent, chuẩn hóa dữ liệu):
key = sha256(model + serialize(messages) + str(temperature))
if (hit := cache.get(key)):
return hit # 0 token, ~0 ms
resp = call_llm(...)
cache.set(key, resp, ttl=3600)
- Cân nhắc semantic cache cho câu hỏi ngôn ngữ tự nhiên lặp ý: nhúng → tìm gần nhất → nếu cosine ≥ 0.92 thì tái dùng, kèm log để kiểm định.
- Đặt TTL và invalidation: cache theo phiên bản tri thức; khi tài liệu đổi phải xóa cache liên quan.
- Đo cache hit rate (đã dựng ở Bài 2) và chi phí đã tránh được.
Khung quyết định: dùng loại cache nào?
- Input cố định, lặp lại y hệt → prefix cache (nhà cung cấp).
- Truy vấn trùng khít, temperature=0 → exact-match.
- Truy vấn cùng ý khác chữ, chấp nhận sai số nhỏ → semantic (kèm ngưỡng an toàn).
- Kết quả phải luôn mới/cá nhân hóa mạnh → không cache lớp trả lời cuối.
Sai lầm thường gặp
- Nhét phần động lên đầu prompt → phá vỡ prefix cache, mất toàn bộ lợi ích.
- Semantic cache ngưỡng quá thấp → trả câu trả lời của câu hỏi khác, gây sai lệch nguy hiểm.
- Cache câu trả lời cá nhân hóa/nhạy thời gian (số dư, tồn kho) → rò dữ liệu người này sang người khác hoặc trả số cũ.
- Quên invalidation khi tài liệu nguồn thay đổi → agent trả lời theo tri thức lỗi thời.
- temperature > 0 mà exact-cache → cache một mẫu ngẫu nhiên rồi lặp lại mãi, mất tính đa dạng cần thiết.
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