Thực Tiễn Tốt Nhất

Prompt Caching

Prompt Caching là một kỹ thuật mạnh mẽ tái sử dụng tiền tố prompt đã lưu trong bộ nhớ đệm giữa các cuộc gọi API, giảm cả độ trễ và chi phí. Được hỗ trợ bởi Claude, GPT-4o và Gemini.

Cách Thức Hoạt Động

Khi bạn gửi cùng một tiền tố prompt qua nhiều lệnh gọi API, nhà cung cấp ngược dòng nhận ra sự trùng lặp, bỏ qua việc xử lý lại và tính phí cho bạn ở mức chiết khấu cho phần đã cache. Mức tiết kiệm điển hình:

Chỉ SốKhông CacheCache Hit
Thời gian đến token đầu tiênCơ sởNhanh hơn đến 80%
Chi phí prompt tokenGiá đầy đủRẻ hơn 50–90%

Caching được bật theo mặc định trên tất cả mô hình được hỗ trợ — không cần cấu hình. Nhà cung cấp tự động quản lý vòng đời cache (cache thường tồn tại 5–30 phút, tùy nhà cung cấp và tải).

Thiết Kế Prompt Thân Thiện với Cache

Cache khớp theo tiền tố — các token từ đầu mảng messages của bạn. Thiết kế prompt sao cho mọi thứ tĩnh được đặt ở đầu:

python
# ✅ GOOD: Static content first = high cache hit rate
messages = [
    {"role": "system", "content": "You are a legal assistant. Reference case law when answering..."},
    {"role": "user", "content": "What are the elements of negligence?"},
]

# ❌ BAD: Dynamic prefix kills cache
messages = [
    {"role": "user", "content": "What are the elements of negligence?"},  # Cache miss
    {"role": "system", "content": "You are a legal assistant..."},  # Too late
]

Danh Sách Kiểm Tra Thiết Kế

  • System message đầu tiên — Luôn đặt nó làm phần tử đầu tiên trong messages
  • Ngữ cảnh tĩnh trước truy vấn động — Ví dụ few-shot, ngữ cảnh RAG đã truy xuất, định nghĩa công cụ đặt trước câu hỏi hiện tại của người dùng
  • Không có timestamp / ID trong tiền tố — Đừng đặt dữ liệu duy nhất theo từng request trước nội dung có thể cache
  • Giữ system prompt giống hệt — Toàn bộ tiền tố phải khớp từng byte để cache hit
  • Tiền tố dài hơn = tiết kiệm nhiều hơn — Cache một system prompt 10K token tiết kiệm nhiều hơn hẳn so với prompt 200 token

Giám Sát Cache Hit

Đối tượng usage trong response cho biết prompt của bạn có cache hit hay không:

  • Claude (Anthropic): Tìm cache_read_input_tokenscache_creation_input_tokens
  • GPT-4o (OpenAI): Token đã cache được phản ánh qua hóa đơn prompt_tokens thấp hơn
  • Gemini (Google): Context caching hiển thị trong usage metadata
python
import requests

response = requests.post(
    "https://api.tokspan.com/v1/chat/completions",
    headers={"Authorization": "Bearer sk-your-key"},
    json={"model": "claude-opus-4-8", "messages": [...]},
)

# Check for cache hits in the usage object
usage = response.json()["usage"]
if "cache_read_input_tokens" in usage:
    print(f"Cache hit! {usage['cache_read_input_tokens']} tokens served from cache")
    print(f"Cache creation: {usage.get('cache_creation_input_tokens', 0)} tokens written")
else:
    print("Cache miss — all prompt tokens billed at full price")

Mô Hình Được Hỗ Trợ

Mô HìnhNhà Cung CấpToken Có Thể Cache Tối ThiểuCache TTL (điển hình)
Claude Opus 4.8Anthropic1024~5 phút
Claude Sonnet 4.6Anthropic1024~5 phút
GPT-4oOpenAI1024~5–10 phút
Gemini 2.5 ProGoogle32768Có thể cấu hình (context cache API)
Ngưỡng token tối thiểu: Mỗi nhà cung cấp chỉ cache prompt vượt trên số lượng token tối thiểu (thường là 1024 token với Claude và GPT-4o). Prompt ngắn sẽ không được hưởng lợi. Điều này khiến caching có tác động lớn nhất với ứng dụng có system prompt lớn, pipeline RAG hoặc hội thoại nhiều lượt với lịch sử dài.