Hóa đơn AI của bạn tăng gấp ba chỉ sau một đêm. Mô hình, lưu lượng truy cập và thậm chí cả nội dung của các prompt đều không đổi; thủ phạm chính là một dòng mã duy nhất đã làm hỏng cơ chế prompt cache của OpenAI.

Tại sao cache lại quan trọng

Cơ chế prompt cache của nhà cung cấp giúp bạn tiết kiệm tiền bằng cách bỏ qua việc xử lý lại bất kỳ yêu cầu nào bắt đầu bằng một tiền tố giống hệt nhau từng byte. Nếu các token đầu tiên khớp với một lệnh gọi trước đó, nhà cung cấp sẽ tái sử dụng biểu diễn đã được tính toán sẵn của các token đó và chỉ tính phí cho phần hậu tố mới. Quy tắc này rất nghiêm ngặt: sự trùng khớp phải chính xác tuyệt đối, không chỉ đơn thuần là tương tự. Chỉ cần một token khác biệt ở phần đầu sẽ phá hủy toàn bộ hiệu quả của cache.

Sai lầm làm triệt tiêu tỷ lệ trúng cache (hit rate)

Trong agent của chúng tôi, chúng tôi đã đặt một dấu thời gian hiện tại ở ngay đầu system prompt để cung cấp cho mô hình cảm nhận về thời điểm "hiện tại". Vì dấu thời gian thay đổi sau mỗi giây, chuỗi token đầu tiên luôn là duy nhất cho mỗi yêu cầu. Cache không bao giờ tìm thấy sự trùng khớp, vì vậy mỗi lần gọi đều phải chịu toàn bộ chi phí cho 18.000 token tĩnh theo sau—bao gồm schema công cụ, các đoạn tài liệu, ví dụ few-shot và các chỉ dẫn cố định. Kết quả là tỷ lệ trúng cache đạt 0% và hóa đơn tăng vọt gấp ba lần.

Sắp xếp lại để tối ưu khả năng lưu cache

Cách khắc phục rất đơn giản: hãy giữ tất cả những gì không bao giờ thay đổi ở đầu prompt và đẩy bất kỳ dữ liệu biến đổi nào xuống cuối.

Tiền tố tĩnh (có thể lưu cache)

  • Định nghĩa công cụ (tool definitions)
  • Tài liệu truy xuất (retrieval documents)
  • Các ví dụ few-shot
  • Các chỉ dẫn hệ thống cố định

Hậu tố biến đổi (không thể lưu cache)

  • Thời gian hiện tại
  • Định danh phiên (session identifiers)
  • Tin nhắn của người dùng
  • Ngữ cảnh trực tiếp (live context)

Nếu mô hình cần thời gian, hãy chèn nó vào sau khối tĩnh thay vì chèn vào đầu. Khi đó, cache có thể tái sử dụng phần tĩnh nặng nề trong khi bạn vẫn cung cấp được ngữ cảnh mới ở cuối.

Những "kẻ sát nhân" ẩn mình trong hệ thống

Ngay cả khi template trông có vẻ chính xác, middleware hoặc các SDK có thể âm thầm chèn thêm metadata—như ID yêu cầu, dấu thời gian hoặc các header khác—trước khi payload đến được API. Một số quy trình triển khai (deployment pipelines) cũng xáo trộn các định nghĩa công cụ trong mỗi lần triển khai. Những thay đổi vô hình này làm thay đổi trình tự byte và phá hỏng cache mà không có bất kỳ thay đổi mã nào trong trình xây dựng prompt của riêng bạn.

Theo dõi tỷ lệ trúng cache

Hãy coi tỷ lệ trúng cache là một chỉ số sức khỏe chính cho bất kỳ AI agent nào. Sự sụt giảm đột ngột báo hiệu rằng thứ gì đó trong các byte đầu tiên của yêu cầu đã trở nên biến đổi. Các công cụ giám sát hiển thị tỷ lệ phần trăm trúng cache sẽ giúp bạn phát hiện các bất thường về chi phí trước khi chúng bùng nổ.

Bài học rút ra

Việc lưu cache prompt phụ thuộc vào một tiền tố bất biến. Bất cứ thứ gì thay đổi—ngay cả một dấu thời gian duy nhất—ở đầu mỗi yêu cầu đều làm mất tác dụng của cache và có thể khiến hóa đơn của bạn tăng gấp ba. Hãy để nội dung tĩnh lên đầu, nội dung biến đổi xuống cuối, kiểm tra lại chuỗi công cụ của bạn để tìm các thành phần chèn dữ liệu ẩn, và theo dõi tỷ lệ trúng cache. Một cách bố trí prompt có kỷ luật sẽ bảo vệ cả hiệu suất lẫn lợi nhuận của bạn.