Mỗi request gửi cùng một system prompt 10,000 token. Cùng tiêu chuẩn code. Cùng ví dụ few-shot. Cùng định nghĩa công cụ. Bạn trả giá đầu vào đầy đủ cho từng cái. Với 500 request/ngày trên GPT-5.5 ở $5/M đầu vào, đó là $25/ngày —$750/tháng— chỉ cho nội dung mà model đã xử lý 500 lần trước đó.
Prompt caching giảm con số đó xuống $75/tháng. Cùng nội dung. Cùng chất lượng đầu ra. Một thay đổi code. Prompt caching là một trong 12 chiến lược trong bài phân tích tối ưu chi phí của chúng tôi —và nó mang lại ROI cao nhất với thay đổi code nhỏ nhất.
Bài viết này bao quát cách caching hoạt động trên cả bốn nhà cung cấp lớn, mã chính xác để triển khai và cách chẩn đoán khối lượng công việc của bạn có thân thiện với cache hay không. Đây là tài liệu tham khảo chính thức về prompt caching trên toàn blog TokSpan —các bài viết khác liên kết đến đây để có chi tiết triển khai đầy đủ.
Prompt caching hoạt động thế nào (và tại sao không phải viên đạn bạc)
Khi bạn gửi prompt cho LLM, model xử lý mọi token —kể cả những token nó đã thấy hàng trăm lần. Phép tính lặp lại cho mỗi request. Cache những token đó và model bỏ qua phép tính dư thừa.
Cơ chế: Bạn đánh dấu một phần prompt là có thể cache. Nhà cung cấp băm phần đó. Với các request tiếp theo có cùng tiền tố, nhà cung cấp lấy phép tính đã cache thay vì chạy lại. Bạn trả mức giảm cho token đã cache —hoặc, với một số nhà cung cấp, không mất chi phí suy luận nào cho phần đã cache.
Có thể cache: System prompt (trường hợp phổ biến nhất và ROI cao nhất). Định nghĩa công cụ —chúng giống hệt giữa các request. Ví dụ few-shot. Ngữ cảnh tài liệu tĩnh —tài liệu sản phẩm, bài viết cơ sở tri thức, tiêu chuẩn code. Lịch sử hội thoại đến tin nhắn cuối —lịch sử giống hệt cho đến tin nhắn người dùng mới nhất.
Không thể cache: Tin nhắn mới của người dùng —nó ở cuối prompt và duy nhất mỗi request. Tiền tố không xác định —bất cứ thứ gì thay đổi giữa các request. Nội dung ngắn hơn độ dài cache tối thiểu của nhà cung cấp (thường 1,024 token).
Điểm trừ: Cache hết hạn. TTL dao động từ 5 phút (Anthropic, OpenAI) đến giờ cấu hình được (Google). Nếu khoảng cách request của bạn vượt TTL, cache nguội và bạn trả giá đầy đủ. Cache cũng riêng theo nhà cung cấp và model —chuyển từ Opus sang Sonnet làm vô hiệu cache.
Triển khai theo nhà cung cấp
Anthropic —giảm 90%, tốt nhất ngành, kiểm soát tường minh.
Anthropic cung cấp kinh tế caching tốt nhất ngành: giảm 90% cho token đầu vào đã cache. Tài liệu prompt caching của Anthropic bao quát điểm ngắt cache, hành vi TTL và giá chi tiết. Ghi cache chịu phụ phí nhỏ trên giá đầu vào cơ sở (xem bảng giá bên dưới). Điểm hòa vốn: khoảng 1.3 tổng request mỗi lần ghi cache —nghĩa là chỉ 2 request dùng chung một tiền tố cache đã tiết kiệm ~32.5%. Với hầu hết khối lượng sản xuất, bạn sẽ có hàng chục lần. Cho hướng dẫn đầy đủ thiết lập SDK Anthropic với caching, xem hướng dẫn phát triển Claude API của chúng tôi.
import anthropic
client = anthropic.Anthropic(
base_url="https://api.tokspan.com/anthropic",
api_key="ts-your-key-here"
)
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1000,
system=[
{
"type": "text",
"text": "You are a code reviewer. Here are our 10,000-token coding standards...",
"cache_control": {"type": "ephemeral"} # Cache this
}
],
messages=[{"role": "user", "content": "Review this PR."}]
)
Điểm ngắt cache. Bạn có thể đặt nhiều khối cache_control khắp tin nhắn. Mỗi khối đánh dấu một điểm nơi tiền tố đến điểm đó được cache. Vị trí chiến lược: cache system prompt (luôn luôn). Cache lịch sử hội thoại trừ tin nhắn người dùng cuối (lịch sử tĩnh; tin nhắn người dùng mới động). Cache định nghĩa công cụ (chúng hiếm khi thay đổi).
Độ dài cache tối thiểu: 4,096 token cho Opus 4.5+ (gồm Opus 4.8/4.7/4.6/4.5) và Haiku 4.5; 2,048 token cho Sonnet 4.6. Prompt ngắn hơn mức này sẽ không được cache —chi phí quản lý cache vượt khoản tiết kiệm tính toán.
OpenAI —giảm 50%, tự động, không tốn công.
Prompt caching của OpenAI tự động cho prompt dài hơn 1,024 token. Không thay đổi code. Không cần khối cache_control. Nhà cung cấp phát hiện tiền tố lặp lại và áp dụng giảm giá âm thầm. Đánh đổi: giảm 50% so với 90% của Anthropic, và không đảm bảo cache hit —nhà cung cấp quyết định khi nào cache.
# No special code needed. OpenAI automatically caches repeated prefixes.
response = client.chat.completions.create(
model="gpt-5.5",
messages=[
{"role": "system", "content": "Your 5,000-token system prompt here..."},
{"role": "user", "content": "User message here."}
]
)
# If the system prompt was cached, you pay 50% less for those input tokens.
# Check response.usage for cache status.
Google Gemini —context caching, tường minh, TTL cấu hình được.
Cách tiếp cận của Google khác: bạn tạo một tài nguyên “cached content” với TTL tường minh —tài liệu context caching của Google bao quát thiết lập và giá. TTL dao động từ vài phút đến 24 giờ. Bạn tham chiếu nội dung đã cache trong request. Cache tồn tại qua nhiều request và người dùng. Tốt nhất cho: Q&A tài liệu với nội dung tĩnh mà nhiều người dùng truy vấn.
DeepSeek —$0.0036/M mỗi cache hit, tự động, giá tuyệt đối rẻ nhất.
Giá cache hit của DeepSeek là $0.0036 mỗi triệu token —rẻ đến phi lý —rẻ hơn 40 lần mức cơ sở vốn đã rẻ của họ. Caching tự động (tương tự OpenAI). Không kiểm soát tường minh. Nhưng ở mức giá này, kinh tế thuận lợi cho hầu như mọi khối lượng có nội dung lặp lại.
Giá cache: khoản tiết kiệm thực
| Nhà cung cấp | Ghi cache | Đọc cache | So với giá đầu vào cơ sở | TTL | Tự động? |
|---|---|---|---|---|---|
| Anthropic | 1.25x giá cơ sở | 10% giá cơ sở | Giảm 90% | ~5 phút | Không (tường minh) |
| OpenAI | — | 50% giá cơ sở | Giảm 50% | 5–60 phút | Có |
| Google Gemini | Thay đổi theo TTL | Thay đổi theo TTL | Giảm đến 75% | Cấu hình được | Không (tường minh) |
| DeepSeek | — | $0.0036/M | Giảm ~97% | ~5 phút | Có |
Hướng dẫn chọn lựa. Ngoài giá thô, triển khai caching của mỗi nhà cung cấp có đánh đổi kiến trúc. Anthropic cho bạn kiểm soát tường minh và giảm giá sâu nhất —nhưng bạn trả phụ phí ghi 25% và tự quản lý vị trí điểm ngắt. OpenAI là “bắn rồi quên”: không code, tiết kiệm 50%, không đảm bảo hit. TTL cấu hình được của Google là độc nhất: đặt cache 24 giờ trên tài liệu sản phẩm và phục vụ hàng nghìn người dùng từ một tài nguyên cache. Mức sàn giá tuyệt đối của DeepSeek ($0.0036 mỗi triệu token cache) khiến việc tối ưu tỷ lệ hit gần như không liên quan —ở mức giá đó, dù tỷ lệ hit 10% cũng tiết kiệm tiền.
| Nhà cung cấp | Độ dài cache tối thiểu | Công sức | Tốt nhất cho | Lưu ý |
|---|---|---|---|---|
| Anthropic | 4,096 token (Opus 4.5+, Haiku 4.5); 2,048 (Sonnet 4.6) | Thêm 3 dòng code | System prompt, định nghĩa công cụ, few-shot | Chi phí ghi 1.25x; TTL 5 phút |
| OpenAI | 1,024 token | Không | Mọi khối lượng, tiết kiệm thụ động | Không đảm bảo hit; chỉ giảm 50% |
| Google Gemini | Thay đổi theo model | Tạo tài nguyên | Hỏi đáp tài liệu, nhu cầu TTL dài | Chi phí cao hơn cho TTL dài hơn |
| DeepSeek | ~1,024 token | Không | Khối lượng lớn, nhạy cảm giá | Chỉ tự động; kém dự đoán hơn |
Máy tính tiết kiệm. Khối lượng 500 request/ngày, system prompt cache 10,000 token, tin nhắn người dùng 500 token, dùng Claude Opus ở $5/M đầu vào:
- Không caching: 500 × (10,000/1,000,000 × $5) = $25/ngày chỉ riêng nội dung cache được
- Có caching: 500 × (10,000/1,000,000 × $0.50) = $2.50/ngày trên nội dung cache
- Tiết kiệm năm: $8,212 —$821 trên nội dung đó. Một thay đổi code.
Chi phí ghi cache ẩn. Anthropic tính 1.25x giá đầu vào cơ sở cho ghi cache. Điểm hòa vốn khoảng 1.3 tổng request mỗi lần ghi —nghĩa là dù một lần đọc cache (2 request dùng chung prompt) cũng tiết kiệm ~32.5% so với không caching. Với system prompt và định nghĩa công cụ giống hệt mọi request, đây không bao giờ là lo ngại. Với nội dung nơi hầu hết request duy nhất (không đọc cache), bạn trả phụ phí ghi 25% với không khoản tiết kiệm bù trừ. Giám sát tỷ lệ cache hit của bạn. Mục tiêu >80%.
Khối lượng công việc của bạn có thân thiện với cache không?
Khối lượng tốt nhất cho caching:
- Chatbot với system prompt dài —prompt giống hệt giữa mọi người dùng và hội thoại. Tỷ lệ hit: gần 100%.
- Ứng dụng RAG với ngữ cảnh tài liệu tĩnh —nội dung cơ sở tri thức giống nhau cho mọi truy vấn. Tỷ lệ hit: cao, tùy số tài liệu khác nhau bạn truy vấn.
- Tác vụ few-shot —ví dụ giống hệt giữa các request. Hãy cache chúng.
- Hội thoại nhiều lượt với lịch sử dài —lịch sử đến tin nhắn cuối là tĩnh. Cache mọi thứ trừ lượt người dùng cuối.
- Agent code với định nghĩa công cụ —schema công cụ tĩnh. Hãy cache chúng.
Khối lượng tệ nhất cho caching:
- Prompt một lần —mỗi request duy nhất. Không tiền tố lặp lại. Tỷ lệ hit: 0%.
- Tài liệu duy nhất mỗi request —nếu mỗi truy vấn trên một tài liệu khác, không có gì để cache.
- Prompt rất ngắn (<1,024 token) —dưới độ dài cache tối thiểu của hầu hết nhà cung cấp.
- Tạo sinh ngẫu nhiên cao —nếu mỗi phản hồi sáng tạo và không ràng buộc, đầu ra không cache được (caching là về token đầu vào).
Chẩn đoán đơn giản. Ghi log 2,000 ký tự đầu của mỗi request API trong một ngày. Đếm bao nhiêu giống hệt. Nếu >50% request của bạn dùng chung tiền tố dài hơn 1,000 token, prompt caching sẽ tiết kiệm cho bạn khoản tiền đáng kể. Nếu <20%, khoản tiết kiệm không xứng đáng công sức triển khai caching tường minh (dù caching tự động vẫn cho tiết kiệm thụ động).
Chẩn đoán tỷ lệ cache hit: script 5 phút
Trước khi đụng code sản xuất, hãy xác minh khối lượng của bạn thân thiện với cache. Chạy script này trên 1,000 request API gần nhất. Nó băm phần cache được của mỗi request và báo tỷ lệ trùng lặp —phần trăm request dùng chung tiền tố với ít nhất một request khác.
import hashlib
import json
from collections import Counter
# Load your request log —adapt the path and format to your setup
with open("api_requests.jsonl") as f:
requests = [json.loads(line) for line in f]
def get_cacheable_prefix(req):
"""Extract the static portion of each request.
For most applications this is the system prompt + any messages
before the final user turn."""
messages = req.get("messages", [])
prefix = messages[:-1] if len(messages) > 1 else messages
return json.dumps(prefix, sort_keys=True)
prefixes = [get_cacheable_prefix(r) for r in requests]
hashes = [hashlib.md5(p.encode()).hexdigest() for p in prefixes]
counts = Counter(hashes)
total = len(requests)
unique = len(counts)
most_common = counts.most_common(1)[0] if counts else (None, 0)
dup_rate = (total - unique) / total * 100 if total else 0
print(f"Total requests analyzed: {total}")
print(f"Unique prefixes: {unique}")
print(f"Most-repeated prefix: {most_common[1]} occurrences")
print(f"Duplication rate: {dup_rate:.1f}%")
if dup_rate > 70:
print("=> Cache-friendly. Implement explicit caching —high ROI.")
elif dup_rate > 40:
print("=> Borderline. Caching helps, but audit write costs first.")
else:
print("=> Not cache-friendly. Skip caching; use other optimizations.")
Các con số nghĩa gì cho hóa đơn của bạn. Tỷ lệ trùng lặp 70% trên 500 request/ngày với system prompt 10,000 token ở $5/M đầu vào nghĩa là 350 request hưởng lợi từ caching. Với giảm 90% của Anthropic, token cache có giá $0.50/M thay vì $5/M —tiết kiệm $15.75/ngày chỉ riêng khối đó. Với giảm 50% tự động của OpenAI, bạn tiết kiệm $8.75/ngày không cần đổi code. Dù tỷ lệ 40% cũng quan trọng: 200 request/ngày ở 10,000 token tiết kiệm $9/ngày trên Anthropic.
Không truy cập log request? Dashboard nhà cung cấp LLM của bạn hiển thị tổng số request và token trung bình mỗi request. Đối chiếu với MAU ứng dụng của bạn. Nếu bạn phục vụ 100 người dùng hoạt động hàng ngày với system prompt cố định 5,000 token, bạn có 100 tiền tố giống hệt. Nếu mỗi người dùng tải lên một tài liệu 20 trang duy nhất mỗi phiên, tỷ lệ trùng lặp của bạn về gần không. Dashboard cho bạn biết bạn thuộc nhóm nào mà không cần cạo một dòng log.
Khi prompt caching tốn tiền của bạn
Hầu hết thời gian, prompt caching tiết kiệm tiền. Nhưng trong điều kiện sai, nó làm điều ngược lại —bạn trả nhiều hơn và không nhận lại gì. Đây là các kịch bản bạn nên suy nghĩ kỹ trước khi thêm điều khiển cache.
Phụ phí ghi của Anthropic trên khối lượng tỷ lệ hit thấp. Anthropic tính 1.25x giá đầu vào cơ sở cho mỗi lần ghi cache. Nếu tỷ lệ cache hit của bạn xuống dưới 20%, phụ phí ghi vượt giảm giá đọc. Một khối cache 10,000 token ở $5/M cơ sở: ghi tốn $0.0625 (1.25x), đọc tốn $0.005 (0.1x). Bạn cần khoảng 1.3 tổng request mỗi lần ghi để hòa vốn —nghĩa là dù một lần đọc cache (2 tổng request dùng chung prompt) cũng tiết kiệm ~32.5%. Một bot hỗ trợ xoay system prompt mỗi 3 request (1 ghi + 2 đọc) tiết kiệm ~52% so với không caching. Giám sát cache_read_input_tokens so với cache_creation_input_tokens trong phản hồi usage của Anthropic. Nếu tỷ lệ đọc/ghi dưới 0.5:1 (ít hơn 1 đọc mỗi 2 ghi), hãy bỏ khối cache.
Khối lượng streaming dày, một lần. Chuyển lời nói thời gian thực, sinh code một lần, viết sáng tạo —mỗi prompt duy nhất theo thiết kế. Thêm khối cache_control vào dòng prompt duy nhất thêm ~20 token mỗi khối vào mỗi request và không bao giờ trả về cache hit. Caching tự động của OpenAI bỏ qua chúng âm thầm (không hit, không tính phí). Nhưng khối cache_control tường minh của Anthropic luôn phát sinh chi phí ghi ở lần xuất hiện đầu. Trên khối lượng duy nhất, mỗi request là lần xuất hiện đầu —bạn trả phụ phí 25% trên mỗi lần gọi với không tiết kiệm bù trừ.
Prompt rơi ngay dưới ngưỡng tối thiểu. Anthropic yêu cầu 4,096 token cho Opus 4.5+ và Haiku 4.5, và 2,048 token cho Sonnet 4.6. OpenAI yêu cầu 1,024 token. Một system prompt 1,500 token với khối cache_control trên Opus tốn bằng prompt không có —nhà cung cấp âm thầm bỏ qua chỉ thị cache vì nó dưới mức tối thiểu 4,096 token. Một khối cache_control thêm ~20 token. Với 5 triệu request/tháng và $5/M đầu vào, 20 token lãng phí đó tốn $500/tháng. Kiểm tra số token thực (không phải số ký tự) bằng tokenizer của nhà cung cấp trước khi thêm điều khiển cache.
Quy tắc nhanh. Chỉ đầu tư caching tường minh khi: (a) tiền tố cache được của bạn vượt 1,024 token, (b) nó xuất hiện trong hơn 50% request, và (c) khoảng cách request trung vị của bạn dưới TTL nhà cung cấp. Nếu bất kỳ điều kiện nào không đạt, hãy để caching tự động xử lý hoặc bỏ qua caching và chọn chiến lược khác từ sổ tay tối ưu chi phí.
Hướng dẫn chiến lược caching
Thứ bậc. Anthropic cho tiết kiệm tối đa trên cache tường minh tần suất cao. DeepSeek cho giá đọc cache tuyệt đối rẻ nhất trên khối lượng lớn. Google cho cache tài liệu TTL dài (đến 24 giờ). OpenAI cho tiết kiệm tự động không công sức.
Chiến lược cache đa nhà cung cấp. Cache nội dung tĩnh của bạn trên nhà cung cấp có kinh tế cache tốt nhất (Anthropic, giảm 90%). Định tuyến lưu lượng thân thiện cache đến nhà cung cấp đó. Định tuyến request duy nhất đến nhà cung cấp có giá cơ sở tốt nhất cho trường hợp sử dụng của bạn. Đây là tối ưu nâng cao —triển khai caching cơ bản trước, tinh chỉnh định tuyến sau.
Caching cấp nền tảng. Một số nền tảng tổng hợp xếp lớp caching riêng lên trên caching nhà cung cấp. Nền tảng cache phản hồi ở cấp API gateway —request giống hệt được phục vụ từ cache nền tảng không bao giờ đến nhà cung cấp. Với ứng dụng khối lượng lớn có mẫu truy vấn lặp lại, điều này nhân đôi khoản tiết kiệm. Tài liệu prompt caching của TokSpan bao quát thiết lập caching cấp nền tảng, gồm phân tích hit và theo dõi tiết kiệm theo nhà cung cấp.
Câu hỏi thường gặp
Tôi thực sự tiết kiệm được bao nhiêu với prompt caching?
50–90% trên token đầu vào, tùy nhà cung cấp và khối lượng. Với Anthropic (giảm 90%) và 80% token đầu vào được cache: chi phí đầu vào hiệu quả giảm ~72%. Trên khoản chi đầu vào $1,000/tháng, đó là $280/tháng —tiết kiệm $720/tháng.
Tôi có cần thay đổi code không?
OpenAI và DeepSeek: không, caching tự động. Anthropic: có, thêm khối cache_control (3 dòng code). Google: có, tạo tài nguyên cached content. Công sức triển khai tỷ lệ thuận với khoản tiết kiệm —Anthropic cần nhiều code nhất nhưng cho giảm giá cao nhất.
Cache tồn tại bao lâu?
Anthropic: ~5 phút. OpenAI: 5–60 phút (biến thiên, không đảm bảo). Google: TTL cấu hình được (vài phút đến 24 giờ, với chi phí cao hơn cho TTL dài hơn). DeepSeek: tương tự OpenAI. Với ứng dụng có khoảng cách request dưới 5 phút, caching hoạt động tự động. Với mẫu truy cập ít thường xuyên hơn, chỉ TTL cấu hình được của Google giúp ích.
Tôi có thể cache giữa các model khác nhau cùng nhà cung cấp không?
Thường là không. Cache riêng theo model. Chuyển từ Opus sang Sonnet làm vô hiệu cache. Cố định vào phiên bản model cụ thể trong sản xuất để tối đa tỷ lệ hit.
Điều gì xảy ra nếu cache hết hạn giữa hội thoại?
Nhà cung cấp quay lại giá đầy đủ cho token bị ảnh hưởng —không lỗi, không gián đoạn, chỉ cao giá hơn cho một request đó. Trải nghiệm người dùng không bị ảnh hưởng. Hết hạn cache là sự kiện chi phí, không phải sự kiện độ tin cậy. Rủi ro thấp, phần thưởng cao.
Prompt caching mang lại tiết kiệm đến 90% với gần như không cần code —một bữa trưa miễn phí hiếm hoi trong hạ tầng. Nhưng miễn phí cuối cùng cũng phải trả giá. Khi caching trở thành tiêu chuẩn trên mọi nhà cung cấp, câu hỏi thực là liệu các khoản giảm giá hôm nay có sống sót qua chu kỳ giá tiếp theo, hay khoản tiết kiệm được gộp âm thầm vào mức cơ sở cao hơn trong khi marketing vẫn giữ nguyên.
Nếu cửa sổ giảm giá đóng lại, câu hỏi không phải caching có đáng triển khai không —khoản tiết kiệm chỉ từ sáu tháng token đầu vào giảm 90% là quá đủ để biện minh cho ba dòng code kích hoạt nó. Thiết lập prompt caching trên TokSpan và xếp lớp caching cấp nền tảng lên trên khoản giảm giá tích hợp của mọi nhà cung cấp trong khi kinh tế vẫn còn thuận lợi mạnh mẽ như vậy.