Mục lục Ẩn Hiện
Tổng quan
Dù bạn đang xây dựng ứng dụng sử dụng API LLM đơn thuần, hệ thống RAG hay các AI agent phức tạp, vẫn luôn có một câu hỏi quan trọng: làm sao để hệ thống có thể mở rộng hiệu quả? Đặc biệt, chi phí và độ trễ sẽ thay đổi thế nào khi số lượng request tăng lên?Vấn đề này càng trở nên quan trọng với các AI agent phức tạp, nơi một truy vấn của người dùng có thể dẫn đến nhiều lần gọi LLM khác nhau. Trong thực tế, nhiều request LLM thường chứa các token đầu vào giống nhau. Người dùng thường hỏi những câu hỏi tương tự, các system prompt lặp lại trong mỗi request, và ngay cả khi tạo phản hồi, mô hình cũng phải xử lý lại nhiều token trước đó.
Chính vì vậy, caching trở thành một giải pháp quan trọng để tối ưu chi phí và độ trễ. Theo tài liệu của OpenAI, Prompt Caching có thể giảm độ trễ tới 80% và giảm chi phí token đầu vào tới 90%.
Caching là gì?
Caching không phải là khái niệm mới trong khoa học máy tính. Về cơ bản, cache là một thành phần lưu trữ tạm thời dữ liệu để phục vụ các request lặp lại nhanh hơn.Có hai trạng thái chính của cache:
- Cache hit: dữ liệu được tìm thấy trong cache, truy xuất nhanh và chi phí thấp
- Cache miss: dữ liệu không có trong cache, hệ thống phải truy xuất nguồn gốc, tốn thời gian và tài nguyên hơn
Caching đặc biệt hiệu quả trong các hệ thống có dữ liệu được truy cập lặp lại. Trong thực tế, nhiều hệ thống tuân theo nguyên lý Pareto, tức khoảng 80% request thường tập trung vào 20% dữ liệu. Điều này giúp cache phát huy hiệu quả mà không cần dung lượng quá lớn.
Prompt Caching hoạt động như thế nào?
Để hiểu Prompt Caching, cần hiểu cách LLM tạo phản hồi. Quá trình inference của LLM thường gồm hai giai đoạn:Pre-fill
Ở bước này, mô hình xử lý toàn bộ prompt để tạo token đầu tiên. Đây là giai đoạn cần tính toán nặng.
Decoding
Sau đó, mô hình tạo token tiếp theo theo kiểu autoregressive, nghĩa là mỗi token mới phụ thuộc vào các token trước đó.
Ví dụ với prompt:
Mã:
"What should I cook for dinner?"
Mã:
Here
Here are
Here are 5
Here are 5 easy
Here are 5 easy dinner ideas
Để giải quyết vấn đề này, LLM sử dụng KV caching . Các tensor trung gian được lưu lại để tránh tính toán lại từ đầu. Tuy nhiên, KV caching chỉ hoạt động trong một prompt duy nhất.
Prompt Caching mở rộng cơ chế này sang nhiều prompt khác nhau.
Prompt Caching hoạt động trong thực tế
Prompt Caching lưu lại các phần lặp lại của prompt, thường là:- system prompt
- hướng dẫn cố định
- context từ RAG
Điểm quan trọng là caching hoạt động ở token level . Nghĩa là nếu hai prompt có cùng prefix, phần đó có thể được cache.
Ví dụ:
Mã:
Prompt 1
What should I cook for dinner?
Mã:
Prompt 2
What should I cook for lunch?
Tuy nhiên:
Mã:
Prompt 1
Dinner time! What should I cook?
Mã:
Prompt 2
Lunch time! What should I cook?
Do đó, một nguyên tắc quan trọng là:
- Thông tin cố định đặt ở đầu prompt
- Thông tin thay đổi đặt ở cuối prompt
Prompt Caching trong API hiện đại
Hiện nay, nhiều mô hình như GPT hoặc Claude đã hỗ trợ Prompt Caching trực tiếp trong API. Cache thường được chia sẻ giữa các user trong cùng tổ chức sử dụng chung API key.Điều này đặc biệt hữu ích trong môi trường doanh nghiệp, nơi nhiều người dùng sử dụng cùng ứng dụng và cùng prefix.
Một số tùy chọn caching phổ biến gồm:
- In-memory cache: giữ cache từ 5–60 phút
- Extended cache: giữ cache tới 24 giờ (tùy model)
Mã:
from openai import OpenAI
api_key = "your_api_key"
client = OpenAI(api_key=api_key)
prefix = """
You are a helpful cooking assistant. Your task is to suggest simple, practical dinner ideas for busy people.
Và sau đó đến prompt 2:
Mã:
prompt2 = prefix + "What should I cook for lunch?"
response2 = (
model="gpt-5.2",
input=prompt2
)
print("\nResponse 2:")
print(_text)
print("\nUsage stats:")
print()
Như vậy, đối với prompt số 2, chúng ta sẽ chỉ bị tính phí đầy đủ cho phần còn lại, không giống hệt với prompt đó. Đó sẽ là số token đầu vào trừ đi số token đã được lưu vào bộ nhớ cache: 20.014 – 19.840 = chỉ 174 token, hay nói cách khác, ít hơn 99% số token mà chúng ta bị tính giá đầy đủ.
Trong mọi trường hợp, vì OpenAI áp đặt ngưỡng tối thiểu 1.024 token để kích hoạt tính năng lưu vào bộ nhớ cache lời nhắc và bộ nhớ cache có thể được lưu giữ tối đa 24 giờ, nên rõ ràng là những lợi ích về chi phí đó chỉ có thể đạt được trong thực tế khi chạy các ứng dụng AI ở quy mô lớn, với nhiều người dùng hoạt động thực hiện nhiều yêu cầu mỗi ngày. Tuy nhiên, như đã giải thích cho những trường hợp như vậy, tính...
- Tổng token: 20.014
- Token cache: 19.840
- Token tính phí đầy đủ: 174
Tuy nhiên, OpenAI yêu cầu tối thiểu 1.024 token để kích hoạt Prompt Caching và cache tối đa 24 giờ. Vì vậy, lợi ích lớn nhất xuất hiện khi hệ thống có quy mô lớn và nhiều request.
Tổng kết
Prompt Caching là một kỹ thuật tối ưu mạnh mẽ giúp giảm chi phí và độ trễ của hệ thống LLM. Bằng cách tái sử dụng các phần prompt lặp lại, hệ thống có thể tránh tính toán dư thừa và cải thiện hiệu suất.Khi ứng dụng AI ngày càng mở rộng, đặc biệt trong các hệ thống RAG hoặc multi-agent, Prompt Caching sẽ trở thành một yếu tố quan trọng để đảm bảo khả năng mở rộng và tối ưu chi phí lâu dài.
Sửa lần cuối: