Claude đắt vì sao? Cách tính token và chi phí API
Output token đắt gấp 5 lần input, còn mỗi lượt phải đọc lại toàn bộ context. Xem phép tính từ một session thật và 4 cách giảm hóa đơn Claude.
Vì sao Claude đắt? Câu trả lời ngắn gọn
Claude đắt vì 4 lý do cộng dồn. Token output có giá cao gấp 5 lần token input. API không lưu memory của cuộc hội thoại, nên toàn bộ lịch sử được gửi lại và tính phí lại ở mỗi lượt. Một agent biến 1 câu hỏi thành hàng chục lần gọi API, và mỗi lần gọi đều chứa phần lịch sử ngày càng dài đó. Ngoài ra, frontier model được định giá theo độ khó của công việc mà nó thực hiện, không theo chi phí chạy một model nhỏ.
Token là một phần của văn bản. Theo cách ước tính sơ bộ, 1 token tương đương khoảng 4 ký tự hoặc khoảng 0.75 từ tiếng Anh. Mức giá được báo theo mỗi 1 triệu token, viết là MTok (million tokens). Mọi mức giá dưới đây là mức giá API Claude được công bố tại thời điểm October 2026.
Phần lớn hóa đơn tăng ngoài dự kiến đến từ lý do thứ 2 và thứ 3 trong danh sách trên. Thông thường, mọi người nghĩ rằng phần trả lời Claude viết ra mới là thứ tốn tiền. Trong một phiên agent, phần nội dung được viết thường chiếm chưa đến 1/10 tổng hóa đơn.
Mức giá được công bố, để chúng ta thống nhất các con số
Dữ liệu đằng sau biểu đồ này
[
{
"label": "Haiku 4.5",
"input_usd": 1,
"output_usd": 5,
"cache_read_usd": "0.10"
},
{
"label": "Sonnet 5",
"input_usd": 2,
"output_usd": 10,
"cache_read_usd": "0.20"
},
{
"label": "Sonnet 4.6",
"input_usd": 3,
"output_usd": 15,
"cache_read_usd": "0.30"
},
{
"label": "Opus 5",
"input_usd": 5,
"output_usd": 25,
"cache_read_usd": "0.50"
}
]Hãy nhìn vào tỷ lệ thay vì các con số tuyệt đối. Mọi model đều tính phí output cao hơn đúng năm lần so với input. Opus 5 có giá 5 dollar cho mỗi triệu input token và 25 dollar cho mỗi triệu output token. Haiku 4.5 có giá 1 và 5. Vì vậy, khoảng cách từ model rẻ nhất đến model đắt nhất trong bảng này là năm lần, và khoảng cách giữa đọc và ghi cũng là năm lần.
Sonnet 5 có giá 2 và 10 dollar cho mỗi triệu token. Ban đầu Anthropic áp dụng mức giá này như một mức giá giới thiệu đến hết ngày 31 tháng 8, 2026, sau đó chuyển thành giá tiêu chuẩn và hủy kế hoạch tăng lên 3 và 15 dollar. Mức giá thay đổi theo các lần model release, vì vậy hãy kiểm tra mức giá hiện tại trước khi lập ngân sách dựa trên chúng. Các model mới hơn vẫn giữ cùng tỷ lệ năm lần: Opus 5.5 có giá niêm yết 4 và 20 dollar cho mỗi triệu token, Sonnet 5.5 là 2 và 10, còn Haiku 5.5, được release ngày 7 tháng 10, 2026, có giá từ 0.10 và 0.50. Cũng không có free tier nào nằm dưới bảng này, dù account mới bắt đầu với một khoản credit nhỏ và một số phần của API hoàn toàn không tính phí.
Cột cuối cùng là mức phí cache read. Đây là yếu tố quyết định phần lớn hóa đơn. Hãy quay lại cột này sau khi tính toán.
Vì sao output token có giá cao gấp 5 lần input token?
Đọc và viết không đòi hỏi cùng một lượng công việc. Input token được xử lý trong một lượt. Model đọc toàn bộ prompt cùng lúc, còn công việc được chạy song song trên toàn bộ prompt. Vì vậy, prompt 60,000 token không mất thời gian đọc lâu gấp 60,000 lần prompt 1,000 token.
Output token được tạo từng token một. Mỗi token mới cần một lượt chạy riêng qua model và cần toàn bộ các token đứng trước nó làm context. Viết 1,000 token nghĩa là chạy 1,000 lượt, lần lượt từng lượt. Không thể phân tán công việc tuần tự này như khi đọc, nên mỗi output token chiếm dụng phần cứng lâu hơn.
Vì vậy, yêu cầu “làm câu trả lời ngắn hơn” có tác dụng ít hơn nhiều so với mọi người thường nghĩ. Cách này chỉ giảm được phần nhỏ hơn trong chi phí của một agent.
Tại sao toàn bộ cuộc hội thoại lại bị tính phí lại ở mỗi lượt?
Claude API là stateless. Không có cuộc hội thoại nào nằm sẵn ở phía Anthropic để bạn chỉ cần thêm một message vào đó. Mỗi request đều chứa toàn bộ lịch sử message, và model đọc toàn bộ lịch sử trước khi tạo nội dung trả lời. Vì vậy, lượt 30 bị tính phí cho cả các lượt từ 1 đến 29.
Điều đó có nghĩa là chi phí của một cuộc hội thoại tăng nhanh hơn độ dài của nó. Lượt 1 chỉ tính phí cho một context nhỏ. Lượt 40 tính phí cho một context lớn. Cộng cả 40 lượt lại, bạn đã trả phí cho số token lớn hơn nhiều lần tổng số token thực sự được viết.
Dữ liệu đằng sau biểu đồ này
[
{
"turn": 1,
"context_tokens": "20,000"
},
{
"turn": 5,
"context_tokens": "32,000"
},
{
"turn": 10,
"context_tokens": "45,000"
},
{
"turn": 15,
"context_tokens": "55,000"
},
{
"turn": 20,
"context_tokens": "64,000"
},
{
"turn": 25,
"context_tokens": "74,000"
},
{
"turn": 30,
"context_tokens": "84,000"
},
{
"turn": 35,
"context_tokens": "92,000"
},
{
"turn": 40,
"context_tokens": "100,000"
}
]Phiên ở trên bắt đầu với 20,000 token. Đây là system prompt, các tool definition và những file đầu tiên agent đã mở. Đến lượt 40, context chứa 100,000 token. Lấy trung bình trên cả 40 lượt, mỗi request đọc khoảng 60.000 token.
Tại sao agent lại tốn nhiều hơn chat?
Chat gửi một request cho mỗi câu hỏi. Agent gửi một request cho mỗi bước. Đọc một file là một bước. Chạy một bài test là một bước. Đọc output của bài test là một bước. Sửa file là một bước. Một coding agent thường cần 40 bước để hoàn thành một tác vụ.
Tool use phát sinh thêm 2 loại chi phí. Các định nghĩa tool là input token trong từng request, vì model phải được thông báo về những tool hiện có mỗi lần. Anthropic công bố phần overhead này: system prompt cho tool use trên Opus 5 là 286 token khi tool_choice được đặt thành auto, chưa tính token của các tool schema do bạn cung cấp. Một số tool phía server cũng có phí riêng. Web search có giá $10 cho mỗi 1,000 lượt tìm kiếm, chưa tính số token mà kết quả sử dụng.
Mỗi tool result cũng trở thành context cố định. Một command in ra 3,000 dòng sẽ đưa cả 3,000 dòng đó vào mọi request tiếp theo, cho đến khi session kết thúc hoặc history được compact hay xóa. Mức sử dụng token theo từng session mà Claude Code báo cáo giúp bạn thấy rõ điều này: hãy theo dõi số input tăng ngay sau một command tạo nhiều output.
Phép tính trên một session thực tế
Dưới đây là một giờ lập trình agentic thực tế trên Opus 5. Có 40 request API. Context tăng từ 20,000 lên 100,000 token, nên trung bình mỗi request có khoảng 60,000 token. Model viết khoảng 700 token mỗi request. Số này gồm các tool call ngắn và một vài block code dài hơn.
Requests in the session: 40
Average context per request: 60,000 tokens
Total input tokens billed: 40 x 60,000 = 2,400,000
Input cost on Opus 5: 2,400,000 x $5 / 1,000,000 = $12.00
Total output tokens: 40 x 700 = 28,000
Output cost on Opus 5: 28,000 x $25 / 1,000,000 = $0.70
Session total = $12.70Dữ liệu đằng sau biểu đồ này
[
{
"label": "Input, context re-read",
"billed_tokens": "2,400,000",
"cost_usd": "12.00"
},
{
"label": "Output, code and tool calls",
"billed_tokens": "28,000",
"cost_usd": "0.70"
}
]Hãy xem phần phân bổ. Chi phí đọc là 12.00 đô la và chi phí ghi là 0.70 đô la, nên phần output bạn thực sự đọc chỉ chiếm khoảng năm phần trăm tổng chi phí. Model đã viết 28,000 token và bị tính phí cho việc đọc 2,400,000 token. Không ai đã nhập 2.4 triệu token. Cùng 100,000 token đó được đọc đi đọc lại.
Cấp độ 1: cache prompt, cách tiết kiệm lớn nhất
Cache prompt lưu dạng đã được xử lý của phần prefix ổn định trong prompt. Ở request tiếp theo, phần prefix đó được đọc từ cache thay vì xử lý lại. Ghi vào cache có chi phí bằng 1.25 lần giá input đối với cache 5 phút, hoặc 2 lần đối với cache 1 giờ. Đọc từ cache có chi phí bằng 0.1 lần giá input trên hầu hết model, bao gồm Opus 5. Opus 5.5 và Sonnet 5.5 tính 0.05 lần, còn Fable 5.1 tính 0.025 lần. Với Opus 5, chi phí là 0.50 dollar cho mỗi một triệu token thay vì 5 dollar.
Áp dụng cách này cho session ở trên. Mỗi token trong 100,000 token được ghi vào cache một lần khi conversation tăng dần. 2,300,000 input token còn lại trở thành cache read.
Tokens written to cache: 100,000
Cache write at 1.25x input: 100,000 x $6.25 / 1,000,000 = $0.63
Tokens read from cache: 2,300,000
Cache read at 0.1x input: 2,300,000 x $0.50 / 1,000,000 = $1.15
Output cost, unchanged = $0.70
Session total = $2.48Bạn đánh dấu phần có thể cache bằng một trường cache_control. Đặt breakpoint sau phần nội dung không thay đổi giữa các turn: system prompt và các định nghĩa tool. Một tài liệu dài mà bạn thường xuyên tham chiếu cũng thuộc cùng block ổn định đó.
{
"model": "claude-opus-5",
"system": [
{
"type": "text",
"text": "<long, stable instructions>",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [{"role": "user", "content": "..."}]
}Thứ tự của prompt giờ đây quyết định chi phí. Cache hit yêu cầu phần đầu prompt khớp chính xác từ ký tự đầu tiên, vì vậy mọi nội dung thay đổi ở mỗi request phải đặt sau toàn bộ nội dung không thay đổi. Nếu đặt timestamp ở đầu system prompt, bạn sẽ phá cache ở mọi turn: toàn bộ prefix trở thành cache miss và bạn phải trả 1.25 lần giá input để ghi lại.
Response cho biết cache có hoạt động hay không. Gửi một request rồi đọc block usage.
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Hello"}]
}'Mỗi response có một object usage như sau:
{
"usage": {
"input_tokens": 105,
"cache_creation_input_tokens": 7345,
"cache_read_input_tokens": 7123,
"output_tokens": 239
}
}Một request lặp lại nhưng vẫn hiển thị 0 trong cache_read_input_tokens nghĩa là cache không được sử dụng. Nguyên nhân thường gặp là một nội dung nào đó trước breakpoint đã thay đổi. Cache 5 phút cũng hết hạn, vì vậy request được gửi sau 6 phút sẽ bị cache miss rồi được ghi mới.
Đòn bẩy 2: chuyển các lượt xử lý đơn giản sang model nhỏ hơn
Hầu hết các lượt xử lý trong một phiên agent đều không khó. Mở file, chạy formatter, đọc diff. Những việc đó không cần frontier model. Chuyển chúng sang Haiku 4.5 sẽ giảm giá input từ 5 dollar trên mỗi triệu token xuống còn 1. Haiku 5.5 còn rẻ hơn, với mức 0.10 dollar cho prompt tối đa 100,000 token. Tuy nhiên, toàn bộ mức giá của model này tăng gấp năm lần khi prompt vượt ngưỡng đó, và context dài của agent có thể đạt đến ngưỡng này. Haiku 5.5 có giá bao nhiêu và phù hợp với trường hợp nào trình bày cả hai mức giá.
Dữ liệu đằng sau biểu đồ này
[
{
"label": "Opus 5, no caching",
"session_cost_usd": "12.70"
},
{
"label": "Opus 5, cached",
"session_cost_usd": "2.48"
},
{
"label": "Sonnet 5, cached",
"session_cost_usd": "0.99"
},
{
"label": "Haiku 4.5, cached",
"session_cost_usd": "0.50"
}
]Cùng một phiên có giá 12.70 dollar khi chạy trên Opus 5 không bật caching, 2.48 khi bật caching, 0.99 khi chạy trên Sonnet 5 có caching, và 0.50 khi chạy trên Haiku 4.5 có caching. Chỉ riêng caching đã loại bỏ khoảng 80 phần trăm chi phí. Chọn model phù hợp sẽ loại bỏ phần lớn chi phí còn lại.
Có một điểm cần nói rõ. Một model rẻ hơn nhưng trả lời sai sẽ khiến bạn phải trả lại toàn bộ chi phí của phiên, cộng thêm thời gian của chính bạn. Hãy định tuyến theo độ khó của tác vụ, không theo giá. Quy tắc này cũng áp dụng theo chiều ngược lại: Claude Fable 5 và Fable 5.1 có mức giá cao hơn Opus 5, lần lượt là $10 và $50 trên mỗi triệu token. Vì vậy, hãy đọc mức giá đó mang lại cho bạn điều gì trước khi chuyển một lượt xử lý sang các model này. Chọn giữa Opus, Sonnet và Haiku phân tích khả năng phù hợp của từng model.
Mẹo 3: vệ sinh context
Mỗi token bạn để lại trong context đều được tính phí ở mọi lượt còn lại. Vì vậy, xóa token sớm có giá trị hơn nhiều so với xóa muộn. Một file 5,000 token được đưa vào ở lượt 5 trong session 40 lượt sẽ được đọc thêm 35 lần. Như vậy tạo ra thêm 175,000 input token, gần bằng 1 dollar trên Opus 5 chỉ vì một lần paste bất cẩn.
Bốn thói quen giúp giảm con số này:
- Bắt đầu session mới cho mỗi task mới thay vì tiếp tục session của ngày hôm qua.
- Lọc các command có output nhiều trước khi output đến model bằng công cụ như
head -50, thay vì lọc sau đó. - Chỉ yêu cầu function bạn cần, không yêu cầu toàn bộ file.
- Khi một session dài không còn tiến triển, hãy yêu cầu tóm tắt rồi bắt đầu lại từ bản tóm tắt đó. Bản tóm tắt chỉ có vài trăm token. Transcript có thể dài đến một trăm nghìn token.
Đòn bẩy 4: batch mọi tác vụ không cần tương tác
Batch API xử lý request theo cơ chế bất đồng bộ và giảm 50 phần trăm chi phí cho cả input lẫn output. Nếu job không cần câu trả lời trong giây tiếp theo, hãy đưa job đó vào batch. Cách này phù hợp với các tác vụ phân loại, trích xuất, tóm tắt backlog và chạy đánh giá. Mức giảm giá của batch được cộng dồn với prompt caching. Cơ chế này không áp dụng cho session tương tác vì session đó không có thời gian chờ để tận dụng.
Tôi có đang bị tính quá mức không?
Đó mới là câu hỏi thực sự ẩn sau câu “tại sao Claude đắt”, nên đây là câu trả lời thẳng. Mức giá được công khai, giống nhau với mọi người ở các tier tiêu chuẩn và được tính theo token. Ngoại lệ là hợp đồng thương lượng; ngay cả trong trường hợp đó, giá Claude Enterprise vẫn tính phí theo seat bên cạnh số token được đo dùng, chứ không thay thế cách tính này. Nếu bạn đang so sánh với một nhà cung cấp khác thay vì một plan khác, so sánh cùng tác vụ trên API của Claude và ChatGPT cho thấy bên nào rẻ hơn trong từng trường hợp. Không có khoản nào trong hóa đơn được tính tùy ý. Rate card không thể cho bạn biết liệu chi phí đó có tương xứng với giá trị nhận được hay không, vì nó tính token còn bạn quan tâm đến kết quả.
Thay vào đó, hãy tính theo kết quả. Session ở trên có chi phí 12.70 đô la khi không dùng cache. Nếu session đó triển khai một feature vốn sẽ khiến bạn mất 1 giờ, chi phí này là rẻ. Nếu nó mất 40 lượt mà vẫn đi vòng quanh, thì cùng 12.70 đô la không tạo ra kết quả nào, và mức giá chưa bao giờ là vấn đề.
Đây là điều đáng nhớ. Hóa đơn của bạn tăng theo số token, không tăng theo giá trị. Một session hiệu quả và một session lãng phí có cùng độ dài sẽ có cùng chi phí. Vì vậy, 4 đòn bẩy quan trọng hơn rate card: bạn không thể thương lượng giá trên mỗi token, nhưng bạn quyết định tác vụ cần bao nhiêu token.
Vì vậy, hãy theo dõi số đô la trên mỗi tác vụ hoàn tất, không phải số đô la mỗi tháng. Nếu con số đó giảm khi bạn tối ưu caching và routing, cấu hình của bạn đang tốt hơn dù tổng chi phí hằng tháng tăng, vì tổng chi phí tăng do bạn đang hoàn thành nhiều việc hơn.
Những gì không giúp giảm chi phí
Một số lời khuyên phổ biến hầu như không giúp được gì. Yêu cầu model “be concise” sẽ giảm output, nhưng output chỉ chiếm 5 phần trăm trong hóa đơn ví dụ. Rút ngắn câu hỏi của bạn chỉ tiết kiệm vài trăm token so với context 60,000 token. Tắt extended thinking chỉ có ích khi thinking token thực sự chiếm phần đáng kể trong output. Usage block cho bạn biết điều đó, thay vì để bạn phải đoán.
Bản thân context window lớn hơn cũng không làm tăng chi phí. Trên Claude 4.6 trở lên, ngoại trừ Haiku 5.5, toàn bộ window một triệu token được tính theo rate chuẩn trên mỗi token. Vì vậy, request 900,000 token có cùng chi phí trên mỗi token với request 9,000 token. Haiku 5.5 là ngoại lệ: model này tính phí theo độ dài prompt. Prompt trên 100,000 token sẽ chịu mức phí cao gấp 5 lần cho input, output và cache. Vì vậy, input tăng từ 0.10 lên 0.50 dollar mỗi một triệu token, còn output tăng từ 0.50 lên 2.50. Với mọi model hiện tại khác, kích thước window không quyết định giá. Nội dung bạn đưa vào window mới quyết định chi phí.
Hai yếu tố khác cần được tính trong kế hoạch, thay vì chỉ xem xét một session. Nếu bạn sử dụng hằng ngày và có tương tác, hãy so sánh trả phí theo token với gói cố định: so sánh chi phí API và subscription thực hiện phép tính đó. Nếu gói cố định có lợi hơn và bạn đồng thời cân nhắc vendor khác, so sánh giá các gói Claude và ChatGPT thực hiện cùng phép so sánh cho cả hai. Nếu một agent chạy không cần giám sát trên server, hãy đặt hard spend cap trước khi tinh chỉnh bất kỳ thứ gì khác. Đây là nội dung của kiểm soát chi phí cho AI agent trên VPS. Để dễ hình dung quy mô, một triệu Claude token thực sự mua được gì chuyển rate card thành số trang văn bản.
FAQ
Vì sao hóa đơn Claude của tôi tăng mạnh khi bắt đầu dùng agent?
Vì agent gửi nhiều request cho mỗi câu hỏi, và mỗi request đều chứa toàn bộ cuộc hội thoại tính đến thời điểm đó. Một phiên chat chỉ gửi 1 request cho mỗi câu hỏi. Coding agent gửi 1 request cho mỗi bước, và 40 bước cho 1 tác vụ là bình thường. Mỗi request đều được tính phí trên toàn bộ context, nên một session kết thúc ở 100,000 token có thể bị tính phí tổng cộng hơn 2 triệu input token. Đọc input_tokens và cache_read_input_tokens trong API response để thấy trực tiếp.
Prompt caching có thực sự giảm hóa đơn nhiều đến vậy không?
Trong ví dụ tính toán, nó giảm chi phí session từ 12.70 dollar xuống còn 2.48 dollar, vì cache read trên Opus 5 có giá bằng 1/10 input rate. Mức tiết kiệm phụ thuộc hoàn toàn vào hit rate. Với cache 5 phút, nó hoàn vốn ngay sau 1 lần read, vì write có giá bằng 1.25 lần input còn read có giá bằng 0.1 lần hoặc thấp hơn. Nếu prompt thay đổi gần phần đầu trong mọi request, bạn không có hit nào và chỉ trả thêm phí write mà không nhận được lợi ích. Hãy xác nhận bằng cache_read_input_tokens trước khi giả định rằng nó đang hoạt động.
Tôi có nên dùng Haiku cho mọi việc không?
Không. Haiku 4.5 có giá 1 dollar cho mỗi 1 triệu input token, so với 5 của Opus 5, nên mức tiết kiệm là đáng kể với các tác vụ đơn giản, khối lượng lớn như phân loại và định tuyến. Một câu trả lời sai trong tác vụ khó có thể tốn nhiều hơn phần chi phí model đã tiết kiệm, vì bạn phải trả thêm cho lần retry và thời gian của chính mình. Mô hình phù hợp thường là kết hợp: dùng model nhỏ cho các bước cơ học, dùng frontier model cho bước cần phán đoán.
API có rẻ hơn gói thuê bao Claude không?
Điều này phụ thuộc vào mức độ ổn định của usage. Gói thuê bao có giá cố định mỗi tháng kèm giới hạn usage. API tính phí theo token và không có mức trần, nên rẻ hơn khi usage ít hoặc tăng theo từng đợt, nhưng đắt hơn khi bạn dùng nhiều mỗi ngày làm việc. Lấy số token trung bình mỗi ngày từ usage block, tính giá theo rate của model, nhân với số ngày bạn sử dụng trong tháng, rồi so sánh kết quả theo tháng đó với giá gói. Giá gói entry tier được nêu trong Claude Pro có giá bao nhiêu và giới hạn usage của gói dừng bạn ở đâu. Nếu tổng chi phí có lợi cho API, việc hủy gói không làm mất phần tháng bạn đã trả tiền, vì việc hủy chỉ có hiệu lực vào cuối billing period hiện tại và bạn vẫn giữ gói cho đến thời điểm đó. Hạ gói hoặc chuyển xuống tier thấp hơn trình bày cả 2 cách.