Prompt Caching là gì? Cách giảm chi phí và tăng tốc LLM

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

Một ví dụ quen thuộc là cache của trình duyệt. Khi truy cập một website lần đầu, trình duyệt phải tải dữ liệu từ server (cache miss). Sau đó, dữ liệu được lưu vào cache. Nếu truy cập lại, trình duyệt có thể tải từ cache (cache hit), giúp trang web mở nhanh hơn và tiết kiệm tài nguyê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:

"What should I cook for dinner?"

Mô hình có thể tạo phản hồi từng bước như:

Here
Here are
Here are 5
Here are 5 easy
Here are 5 easy dinner ideas

Vấn đề là mỗi lần tạo token mới, mô hình phải xử lý lại toàn bộ token trước đó, gây lãng phí tài nguyên.

Để 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

Khi request mới có cùng prefix, mô hình sẽ tái sử dụng các tính toán trước đó thay vì xử lý lại từ đầu. Điều này giúp giảm chi phí và độ trễ đáng kể.

Đ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ụ:

Prompt 1
What should I cook for dinner?
Prompt 2
What should I cook for lunch?

Trong trường hợp này, phần "What should I cook" sẽ được cache.

Tuy nhiên:

Prompt 1
Dinner time! What should I cook?
Prompt 2
Lunch time! What should I cook?

Hai prompt này sẽ không cache được vì prefix khác nhau.

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)

Chúng ta có thể thấy tất cả những điều này trong thực tế với ví dụ Python tối thiểu sau đây, thực hiện các yêu cầu đến API của OpenAI, sử dụng Prompt Caching và các lời nhắc nấu ăn đã đề cập trước đó. Tôi đã thêm một tiền tố chung khá lớn vào các lời nhắc của mình để làm cho hiệu quả của việc lưu vào bộ nhớ đệm trở nên rõ ràng hơn:

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.
Follow these guidelines carefully when generating suggestions:

General cooking rules:
- Meals should take less than 30 minutes to prepare.
- Ingredients should be easy to find in a regular supermarket.
- Recipes should avoid overly complex techniques.
- Prefer balanced meals including vegetables, protein, and carbohydrates.

Formatting rules:
- Always return a numbered list.
- Provide 5 suggestions.
- Each suggestion should include a short explanation.

Ingredient guidelines:
- Prefer seasonal vegetables.
- Avoid exotic ingredients.
- Assume the user has basic pantry staples such as olive oil, salt, pepper, garlic, onions, and pasta.

Cooking philosophy:
- Favor simple home cooking.
- Avoid restaurant-level complexity.
- Focus on meals that people realistically cook on weeknights.

Example meal styles:
- pasta dishes
- rice bowls
- stir fry
- roasted vegetables with protein
- simple soups
- wraps and sandwiches
- sheet pan meals

Diet considerations:
- Default to healthy meals.
- Avoid deep frying.
- Prefer balanced macronutrients.

Additional instructions:
- Keep explanations concise.
- Avoid repeating the same ingredients in every suggestion.
- Provide variety across the meal suggestions.

""" * 80   
# huge prefix to make sure i get the 1000 something token threshold for activating prompt caching

prompt1 = prefix + "What should I cook for dinner?"

Và sau đó đến prompt 2:

prompt2 = prefix + "What should I cook for lunch?"

response2 = client.responses.create(
    model="gpt-5.2",
    input=prompt2
)

print("\nResponse 2:")
print(response2.output_text)

print("\nUsage stats:")
print(response2.usage)

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 đủ. Đối với các token còn lại được lưu vào bộ nhớ cache, chúng ta được hưởng mức giá chiết khấu cực kỳ cao (như được giảm giá lên đến 90%).

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 năng Lưu vào Bộ nhớ Caching Lời nhắc có thể mang lại lợi ích đáng kể về chi phí và thời gian cho các ứng dụng được hỗ trợ bởi LLM.

  • Tổng token: 20.014
  • Token cache: 19.840
  • Token tính phí đầy đủ: 174

Điều này tương đương giảm 99% token tính phí đầy đủ .

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.

Thứ Sáu, 03/04/2026 21:10
31 👨 10
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
    ❖ Làm chủ AI