MiddleAI Agent

Context window là gì? Chatbot "nhớ" cuộc trò chuyện bằng cách nào, và làm gì khi hội thoại quá dài?

Context window là toàn bộ phần chữ mô hình đọc được trong một lần gọi: system prompt, định nghĩa công cụ, mọi tin nhắn gửi kèm và cả câu trả lời nó đang viết. Kích thước tính bằng token và mỗi mô hình có một giới hạn riêng.

Ý người phỏng vấn muốn nghe đầu tiên là API của mô hình không có trạng thái. Nó không nhớ gì giữa hai lần gọi. Chatbot "nhớ" được là vì code của bạn giữ mảng tin nhắn và gửi lại toàn bộ ở mỗi lượt. Quên gửi thì tin nhắn thứ hai của khách đến với mô hình như câu đầu tiên của một người lạ.

Hệ quả là lịch sử càng dài thì mỗi lần gọi càng tốn. Lần gọi thứ N gửi lại cả N−1 lượt trước, nên tổng số token của cả cuộc trò chuyện tăng nhanh hơn nhiều so với số tin nhắn. Với các mô hình có context window lớn, bạn thường gặp chi phí và độ trễ trước khi gặp giới hạn.

Khi hội thoại dài, có ba cách thường dùng, và có thể kết hợp:

  • Cửa sổ trượt: chỉ gửi vài lượt gần nhất. Phải cắt ở ranh giới lượt, vì một kết quả công cụ (tool_result) phải đứng ngay sau lời gọi công cụ (tool_use) tương ứng. Cắt theo số tin nhắn rất dễ chẻ đôi một cặp và bị API từ chối.
  • Ghi nhớ có cấu trúc: code tự rút những dữ kiện quan trọng (mã đơn, tên khách) từ kết quả công cụ rồi đưa vào system prompt. Ít thông tin nhưng không sai.
  • Tóm tắt: nhờ mô hình tóm tắt phần cũ thành một đoạn ngắn. Nhớ được nhiều hơn nhưng có thể bỏ sót hoặc ghi sai chi tiết, nên không dùng cho những con số phải chính xác.

Điểm cộng: nói rằng bạn sẽ đo số token đầu vào thật (trường usage trong phản hồi) trước khi tối ưu, lưu lịch sử đầy đủ ở database và chỉ cắt bản gửi đi, và biết phân biệt bộ nhớ trong một cuộc trò chuyện với bộ nhớ lâu dài giữa các phiên.