Agent chạy bằng LLM của bạn có thể hoạt động hoàn hảo trong bản demo, nhưng sau đó sẽ chạy chậm lại và làm tăng vọt hóa đơn chỉ sau vài lượt tương tác. Thủ phạm ẩn giấu không phải là một mô hình kém ổn định—mà là hiện tượng token drift, sự phình to dần của prompt mà mô hình phải xử lý mỗi lần.

Token drift xảy ra khi mỗi tương tác đều thêm nhiều văn bản hơn vào ngữ cảnh đầu vào (input context) của mô hình. Lịch sử trò chuyện, schema của công cụ, phản hồi API và các tài liệu được truy xuất đều tích tụ lại, khiến mỗi lần gọi tiếp theo đều mang một lượng payload lớn hơn. Vì thời gian xử lý và giá thành của mô hình tăng theo số lượng token đầu vào, chi phí sẽ tăng theo hàm bậc hai thay vì hàm tuyến tính.

Tại sao vấn đề này xuất hiện trong môi trường production chứ không phải trong bản demo

Các triển khai thực tế lưu giữ mọi thứ: mọi câu nói của người dùng, mọi kết quả từ công cụ, mọi mảnh kiến thức được truy xuất. Sự tích tụ này vẫn ẩn giấu cho đến khi độ trễ tăng vọt và hóa đơn gửi đến.

Các nguồn gây ra token drift phổ biến

  • Bản ghi lặp lại – Giữ lại mọi tin nhắn cũ trong prompt thay vì tóm tắt hoặc loại bỏ chúng.
  • Schema công cụ cồng kềnh – Gửi các định nghĩa JSON lớn về khả năng của công cụ trong mỗi lượt.
  • Kết quả công cụ quá lớn – Bao gồm toàn bộ phản hồi API hoặc các hàng trong cơ sở dữ liệu chứa nhiều dữ liệu hơn mức agent thực sự cần.
  • Sự phình to của RAG – Retrieval-augmented generation (RAG) thêm vào nhiều mảnh tài liệu, trong đó một số mảnh đã lỗi thời hoặc không liên quan.
  • Bộ nhớ bị trùng lặp – Đóng gói một bản tóm tắt, một đối tượng trạng thái (state object) và bản ghi thô cùng nhau, khiến cùng một thông tin bị lặp lại ba lần.

Mỗi yếu tố này đều thêm vào các token không đóng góp thêm khả năng suy luận mới, nhưng lại làm tăng kích thước của prompt.

Cách kiểm soát ngân sách token

1. Áp dụng thiết kế ngữ cảnh phân lớp

  • Chỉ dẫn ổn định – Giữ các system prompt và quy tắc an toàn ở trên cùng và tham chiếu đến chúng thay vì gửi lại chúng trong mỗi lượt.
  • Trạng thái có cấu trúc – Lưu trữ một biểu diễn gọn nhẹ của các mục tiêu, quyết định và các định danh mà agent có thể đọc nhanh chóng.
  • Lịch sử được nén – Tóm tắt các lượt cũ thành một đoạn văn ngắn, dễ đọc cho con người, và chỉ cập nhật khi đạt đến một ngưỡng nhất định.
  • Các lượt gần đây – Bao gồm vài tin nhắn cuối cùng một cách nguyên văn để duy trì tính liên tục.

Việc tách biệt văn bản cố định khỏi nội dung có thể tóm tắt sẽ giúp bạn tránh việc gửi đi gửi lại cùng một từ ngữ.

2. Cắt tỉa kết quả đầu ra của công cụ

  • Chỉ trích xuất các trường (fields) mà agent thực sự sử dụng; loại bỏ các mô tả rườm rà.
  • Thay thế các kết quả lớn bằng một bản tóm tắt ngắn gọn hoặc một ID tham chiếu, và lưu trữ toàn bộ payload trong cơ sở dữ liệu, bộ nhớ đệm (cache) hoặc kho lưu trữ blob.
  • Khi một công cụ trả về một danh sách, chỉ gửi N mục hàng đầu quan trọng cho quyết định hiện tại.

3. Áp dụng tóm tắt thông minh

  • Bỏ qua việc tóm tắt sau mỗi lượt; việc xử lý thêm sẽ làm tăng chi phí vận hành (overhead).
  • Chỉ làm mới bản tóm tắt khi số lượng token tích lũy của các lượt cũ vượt quá một giới hạn đã thiết lập sẵn.
  • Giữ các sự thật quan trọng—ID, số tiền, dấu thời gian—trong một kho lưu trữ có cấu trúc thay vì nhúng chúng vào văn bản xuôi, để bản tóm tắt luôn ngắn gọn.

4. Theo dõi các chỉ số phù hợp

  • Ghi nhật ký (log) việc sử dụng token trên mỗi lần gọi mô hình, chứ không chỉ trên mỗi yêu cầu của người dùng. Điều này giúp tiết lộ sự tăng trưởng ẩn ở phía đầu vào.
  • Theo dõi số lượng token đầu vào được thêm vào mỗi lượt; một sự nhảy vọt đột ngột sẽ chỉ ra nguồn gây ra drift.
  • Tách biệt các token đã được lưu trong bộ nhớ đệm (cached tokens - được tái sử dụng từ các lần gọi trước) với các token mới được tạo ra; chỉ có loại trước mới là nguyên nhân gây ra drift.

Hãy coi prompt là một tài nguyên hữu hạn, không phải là một bản ghi vô hạn. Bằng cách đo lường, tóm tắt và cắt tỉa một cách có chủ đích, bạn sẽ giữ cho agent LLM của mình hoạt động nhanh chóng, tiết kiệm và sẵn sàng để mở rộng quy mô production.

Bài học rút ra: Token drift âm thầm làm tăng chi phí và làm chậm các agent. Hãy xác định các phần đang phình to trong prompt của bạn, nén hoặc đưa chúng ra bên ngoài, và theo dõi việc sử dụng token trên mỗi lần gọi. Một cách tiếp cận kỷ luật sẽ biến những cú sốc hóa đơn không thể đoán trước thành một hoạt động có thể quản lý và thân thiện với ngân sách.