SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-08-22

Token trong Claude là gì? Chi phí mỗi phiên Code

Token Claude dài khoảng 3,5 ký tự. Tìm hiểu vì sao một lượt Claude Code dùng 80.000 token và 5 phút chờ khiến lượt tiếp theo tốn gấp 5 lần.

Token trong Claude là gì?

Token là đơn vị văn bản mà Claude đọc và tạo ra: một phần của từ, tương đương khoảng 3.5 ký tự tiếng Anh. Con số này lấy từ glossary của Anthropic. Khi tính cả khoảng trắng và dấu câu, số token thực tế cao hơn 1 token cho mỗi từ. Vì vậy, 1,000 từ văn xuôi thường có hơn 1,300 token. Code tốn nhiều token hơn trên mỗi dòng: dấu ngoặc nhọn, toán tử, dấu gạch dưới và thụt lề khiến số token trên mỗi ký tự cao hơn tiếng Anh. Một source file vài trăm dòng thường có vài nghìn token. Một file 2,000 dòng mà agent quyết định đọc có thể tiêu tốn số token ở mức 5 chữ số trước khi viết thêm bất kỳ dòng code nào.

Có 2 điểm về tokenizer thường gây nhầm lẫn. Thứ nhất, tokenizer phụ thuộc vào từng model. Tính đến tháng 7 năm 2026, Opus 4.7 trở lên, Sonnet 5 và Fable 5 dùng tokenizer mới. Tokenizer này tạo ra nhiều hơn khoảng 30% token cho cùng một đoạn văn bản so với các model Claude trước đây. Mức tăng chính xác thay đổi tùy nội dung. Điều này làm thay đổi mọi dự toán theo token, dù giá trên mỗi token không tăng theo. Thứ hai, tiktoken, thư viện mà hầu hết bài blog đều dùng, là tokenizer của OpenAI. Nó đếm thiếu khoảng 15–20% token của Claude đối với văn bản thông thường và thiếu nhiều hơn với code. Chỉ có endpoint count_tokens mới cho số đếm đáng tin cậy. Phần dưới sẽ trình bày endpoint này.

Chi phí của một phiên coding được tính như thế nào

Mọi hóa đơn Claude, dù là hóa đơn API hay giới hạn của gói subscription, đều quy về một meter: token đầu vào và token đầu ra. Trang pricing khiến việc này có vẻ đơn giản: một mức giá cho mỗi triệu input token và một mức khác cho mỗi triệu output token. Nhưng trang đó không cho biết rằng trong một phiên coding agentic, phía input của meter chạy nhiều hơn trực giác dự đoán, vì toàn bộ conversation được gửi lại ở mỗi turn. Tôi đã bán hạ tầng tính phí theo mức sử dụng trong mười lăm năm, và token là meter đầu tiên tôi gặp mà phần lớn khách hàng thực sự không thể nói chính xác thứ gì đang làm meter đó tăng. Đây là bài học về cách đọc meter: trong một phiên agentic, input và output bao gồm những gì, vì sao vòng lặp gửi lại tốn kém như vậy, prompt caching thay đổi phép tính ra sao, và những cần gạt nào thực sự làm thay đổi con số.

Mọi thứ đều là input: meter thực sự đếm gì

Nhiều người nghĩ họ trả tiền cho code mà Claude viết. Trong một phiên agent, đó chỉ là khoản nhỏ. Input token có mức giá thấp hơn nhưng khối lượng lớn hơn nhiều, bao gồm:

  • System prompt. Các chỉ thị harness của chính Claude Code, cùng với CLAUDE.md và các file memory của bạn. Chúng được nạp khi bắt đầu phiên và xuất hiện trong mọi request sau đó.
  • Định nghĩa tool. Mọi schema của tool mà agent có thể gọi. Mỗi MCP server bạn kết nối đều làm tăng overhead cố định này. Tuy nhiên, hiện Claude Code mặc định trì hoãn việc nạp đầy đủ định nghĩa MCP tool. Vì vậy, context chỉ chứa tên tool cho đến khi tool được dùng lần đầu. Cách này giảm chi phí nhưng không loại bỏ hoàn toàn.
  • Mọi file agent đọc. Một Read của file source sẽ đưa toàn bộ file vào context, và nội dung đó vẫn ở lại.
  • Mọi kết quả từ tool. Kết quả chạy test, output của grep, output từ terminal, build log — tất cả đều quay lại dưới dạng input token. Một test suite bị lỗi và in ra 8,000 dòng có thể khiến bạn bị tính phí tương đương một cuốn sách ngắn.
  • Toàn bộ cuộc hội thoại cho đến thời điểm hiện tại, được gửi lại ở mỗi lượt. Mục này cần một section riêng.

Chi phí gửi lại mà không ai tính đến

Claude API là stateless. API không nhớ session giữa các request; thực tế không có thành phần nào nhớ cả. Vì vậy, ở turn 2, client gửi lại turn 1, response của model và message mới của bạn. Ở turn 50, client gửi lại các turn từ 1 đến 49, mọi file đã đọc, mọi kết quả tool, mọi diff, rồi thêm turn 50. Model đọc lại toàn bộ transcript trong mỗi request, và tất cả token được đọc lại đều được tính phí dưới dạng input.

Hệ quả là chi phí cho mỗi turn tăng gần tuyến tính theo độ dài session, còn tổng chi phí của session tăng gần theo bình phương. Một message có giá nửa cent ở turn 3 có thể đắt gấp 20 lần ở turn 60 dù chỉ chứa cùng một câu hỏi một dòng, vì request đó phải mang theo dữ liệu của 60 turn. Đây là nguyên nhân quan trọng nhất của phần lớn ticket kiểu “tại sao hóa đơn lại cao như vậy”. Đây không phải đặc điểm riêng của Claude; mọi sản phẩm LLM tạo cảm giác có state đều thực chất dùng stateless API với một vòng lặp gửi lại dữ liệu ở bên dưới.

Output: nội dung bạn thấy và phần suy luận bạn không thấy

Output token là phần tốn kém, với đơn giá cao gấp 5 lần input trên toàn bộ dòng sản phẩm hiện tại ($5/$25 cho Opus 4.8, $3/$15 theo giá niêm yết cho Sonnet 5, $1/$5 cho Haiku 4.5, tính đến July 2026). Output bao gồm văn bản và code Claude tạo ra, cùng thinking token: phần suy luận nội bộ model thực hiện trước khi trả lời. Có 2 điểm cần lưu ý. Thinking được tính phí theo đơn giá output và tính vào max_tokens. Một API response kết thúc với stop_reason: "max_tokens" cùng câu trả lời bị cắt ngắn thường có nghĩa là thinking đã dùng hết budget trước khi phần trả lời được tạo ra. Ngoài ra, trên các model hiện tại, reasoning summary có thể không được hiển thị. Opus 4.8, Sonnet 5 và Fable 5 mặc định không hiển thị phần này, nhưng thinking vẫn diễn ra và vẫn bị tính phí. Không nhìn thấy không có nghĩa là miễn phí.

Claude Code mặc định bật extended thinking vì tính năng này cải thiện rõ rệt các tác vụ nhiều bước. Budget mặc định có thể lên đến hàng chục nghìn token cho mỗi request. Với các tác vụ đơn giản hơn, bạn có thể giảm mức sử dụng: hạ effort level bằng /effort hoặc trong /model, hoặc điều chỉnh thiết lập thinking trong /config. Đây là một cách giảm chi phí thực sự, không phải suy đoán thiếu cơ sở.

Caching prompt làm thay đổi hoàn toàn bài toán

Caching prompt là lý do vòng lặp gửi lại không khiến chi phí của mọi người tăng vọt. API có thể cache phần prefix ổn định của prompt, system prompt, định nghĩa tool và lịch sử hội thoại, rồi phục vụ phần đó trong request tiếp theo với một phần nhỏ chi phí. Tính đến July 2026, các hệ số là: cache write có chi phí bằng 1.25× mức giá input cơ bản (2× đối với biến thể 1-hour), còn cache read có chi phí bằng 0.1×. Write có phụ phí; read được giảm 90%. Chỉ một lần read đã đủ bù hơn mức phụ phí của write trong 5 phút.

Claude Code tự quản lý caching cho bạn. Trong một session hoạt động bình thường, gần như toàn bộ phần resend lớn đó được phục vụ từ cache. Tuy nhiên, cache mặc định chỉ tồn tại trong five minutes kể từ lần sử dụng cuối. Bạn rời máy để uống cà phê lâu hơn dự kiến, quay lại và gửi message, cache đã hết hạn, nên toàn bộ prefix đã tích lũy phải được write lại với mức 1.25× thay vì read ở mức 0.1×. Với một session 150K-token, một lượt cold duy nhất có thể tốn hơn một tá lượt warm. Đây là kết quả trái với trực giác cần ghi nhớ: nhịp làm việc rồi để đó rồi tiếp tục có thể tốn hơn làm việc liên tục, vì mỗi khoảng nghỉ vượt quá TTL sẽ biến lượt tiếp theo từ một read rẻ thành một lần write lại đắt hơn. Hãy làm việc theo từng đợt; đừng nhỏ giọt một session lớn bằng cách gửi một message mỗi mười phút.

Nếu gọi API từ ứng dụng riêng trên VPS của bạn, bạn không tự động được hưởng lợi từ cơ chế này. Lỗi tự gây ra phổ biến là chèn timestamp hoặc request ID vào system prompt, khiến các byte của prefix thay đổi trong mỗi request và âm thầm vô hiệu hóa caching. Dấu hiệu là usage.cache_read_input_tokens luôn bằng 0 trong các lần gọi có vẻ giống hệt nhau.

Công thức, kèm ví dụ tính cụ thể

Bỏ qua những ai nói rằng “mỗi session tốn $X” cố định. Chi phí session có thể chênh lệch đến hai bậc độ lớn. Công thức đúng là:

turn cost = (uncached input      x base input price)
          + (cache writes        x 1.25 x base input price)
          + (cache reads         x 0.10 x base input price)
          + (output incl. thinking x output price)

session cost = sum over all turns

Ví dụ tính cụ thể với Claude Opus 4.8: tính đến tháng 7 năm 2026, giá là $5 trên một triệu input token và $25 trên một triệu output token. Một lượt giữa session có tổng context tích lũy 80,000 token: 75,000 token được đọc từ cache, 3,000 token mới được ghi vào cache, 2,000 token là input mới không nằm trong cache và 1,500 token là output, bao gồm cả thinking.

  • Đọc từ cache: 75,000 × $0.50/M = $0.0375
  • Ghi vào cache: 3,000 × $6.25/M = $0.019
  • Input không nằm trong cache: 2,000 × $5/M = $0.010
  • Output: 1,500 × $25/M = $0.0375

Khoảng $0.10 cho một lượt; 50 lượt tương tự sẽ tốn khoảng $5. Bây giờ xét cùng lượt đó sau khi cache hết hạn: ghi lại toàn bộ 80,000 token với giá $6.25/M đã tốn $0.50 trước khi tính output, tức gần gấp 5 lần toàn bộ lượt khi cache còn hiệu lực, dù công việc giống hệt nhau. Khoảng chênh lệch này tóm tắt toàn bộ câu chuyện về caching trong một con số. Bốn dòng trên cũng là cách duy nhất để so sánh các nhà cung cấp một cách chính xác, vì bảng giá niêm yết bỏ qua hoàn toàn chi phí đọc từ cache và thinking; chạy chúng trên 3 job thực tế sẽ cho thấy hóa đơn Claude cao hơn hay thấp hơn hóa đơn OpenAI ở đâu.

Nếu bạn muốn hiểu đơn vị tính phí thay vì chỉ một lượt riêng lẻ, một triệu token tương đương bao nhiêu trang, file và tiền sẽ áp dụng cùng phép tính ở cấp độ lớn hơn. Đây là số liệu để hiệu chỉnh, không phải để dự đoán: theo số liệu Anthropic công bố cho các lần triển khai Claude Code trong doanh nghiệp, tính đến tháng 7 năm 2026, chi phí trung bình khoảng $13 cho mỗi developer trong một ngày hoạt động và $150–250 mỗi tháng; 90% người dùng giữ mức dưới $30 mỗi ngày. Chi phí thực tế của bạn phụ thuộc vào lựa chọn model, cách quản lý session và kích thước codebase. Đó chính là lý do các đòn bẩy bên dưới quan trọng.

Xem mức sử dụng của chính bạn

Trong Claude Code, lệnh là /usage (/cost vẫn hoạt động vì đây là alias). Khối Session ở đầu màn hình hiển thị thống kê token và ước tính chi phí được tính cục bộ cho session hiện tại; với các gói subscription, màn hình này cũng hiển thị các thanh giới hạn của gói và bảng phân bổ mức sử dụng gần đây cho skills, subagents, plugins và từng MCP server. Với tài khoản API, trang usage trong Claude Console mới là nguồn dữ liệu chính thức để tính billing; con số trong CLI chỉ là ước tính. /context hiển thị một lưới màu cho biết những thành phần đang chiếm context window, gồm system prompt, tools, định nghĩa MCP, files và history. Đây là cách nhanh nhất để phát hiện CLAUDE.md phình to hoặc MCP server tạo quá nhiều nội dung; truyền all để mở rộng bảng phân tích đầy đủ theo từng mục.

Từ API, mọi response đều cho biết chính xác điều gì đã xảy ra:

response = client.messages.create(model="claude-sonnet-5", max_tokens=2048,
                                  messages=messages)
u = response.usage
total_prompt = u.input_tokens + u.cache_creation_input_tokens + u.cache_read_input_tokens
print(f"uncached={u.input_tokens} written={u.cache_creation_input_tokens} "
      f"read={u.cache_read_input_tokens} output={u.output_tokens}")

Lưu ý rằng input_tokens chỉ là phần còn lại chưa được cache; kích thước prompt thực tế là tổng của cả 3 trường input. Một agent chạy trong 1 giờ nhưng hiển thị input_tokens: 4000 không hề rẻ; 200,000 token còn lại đã được phục vụ từ cache. Để ước tính trước khi gửi, hãy dùng endpoint đếm token. Gọi endpoint này không mất phí, endpoint có rate limit riêng và đếm bằng tokenizer của model mà bạn chỉ định. Hãy xem kết quả là ước tính gần đúng; billing phản ánh request thực tế:

count = client.messages.count_tokens(model="claude-sonnet-5",
                                     messages=[{"role": "user", "content": big_file}])
print(count.input_tokens)

Không bao giờ tiktoken vì lý do nêu trên.

Gói thuê bao và thanh toán theo mức sử dụng

Cách hoạt động trong hướng dẫn này giống nhau ở mọi nơi; chỉ khác cách tính phí. Với API key, Anthropic tính phí theo mức sử dụng, theo từng token, dựa trên bảng giá công bố. Mọi con số ở trên đều là chi phí thực tế. Đồng hồ tính phí bắt đầu chạy sớm hơn nhiều người nghĩ, vì không có free tier để dùng tạm. Chỉ có một khoản credit nhỏ khi đăng ký và một số endpoint không tính phí. Đây là những gì một tài khoản API mới thực sự nhận được trước khi bạn thêm thẻ thanh toán. Với gói thuê bao Claude (Pro, Max, Team, Enterprise), mức sử dụng Claude Code được trừ vào hạn mức đi kèm gói thay vì tính theo từng token. Tính đến July 2026, hạn mức này gồm một cửa sổ phiên rolling năm giờ và một cửa sổ theo tuần. Hạn mức được chia sẻ giữa các model và cả phần chat trên claude.ai. Con số /usage dollar chỉ mang tính tham khảo, không phải số tiền bị tính phí. Khi dùng hết một cửa sổ, bạn sẽ thấy "Bạn đã đạt giới hạn phiên" hoặc "Bạn đã đạt giới hạn theo tuần", kèm thời điểm reset. Chuyển model bằng /model cũng không khôi phục được quyền truy cập, vì các cửa sổ này được chia sẻ giữa các model. Các cửa sổ này gắn với account, không gắn với client mà bạn đang sử dụng. Điều này đáng lưu ý nếu bạn vẫn đang tìm hiểu những gì chạy native trên Linux và mỗi bề mặt được gói nào hỗ trợ. Bạn đã dùng hết cửa sổ nào sẽ quyết định thời gian phải chờ và việc nào đáng làm trong lúc đó. Vì vậy, bạn nên biết các lựa chọn khi chạm giới hạn giữa chừng. Các gói có thể bật usage credits, được quản lý bằng /usage-credits, để mua thêm usage sau khi vượt hạn mức. Tôi cố ý không nêu quota của các gói. Đây là những con số biến động nhiều nhất trong toàn bộ chủ đề này. Hãy kiểm tra claude.com/pricing và các thanh /usage của chính bạn. Cơ chế tính theo token vẫn quan trọng với gói thuê bao. Một session sử dụng lãng phí sẽ làm giảm cửa sổ của bạn giống như cách nó làm phát sinh chi phí. Với phần gói thuê bao, xem gói Claude nào phù hợp với usage của bạn.

Các đòn bẩy thực sự có tác dụng

  • Giới hạn phạm vi dữ liệu agent đọc. “Sửa lỗi validation trong auth.py” chỉ đọc một file; “cải thiện codebase này” đọc 40 file. Giữ CLAUDE.md gọn vì nó được nạp trong mọi session. Chỉ đưa những nội dung thiết yếu vào đó, còn instruction dành riêng cho từng workflow thì chuyển vào các skill được nạp khi cần.
  • Rõ ràng và ngắn gọn. /clear giữa các task không liên quan khiến context cũ được gửi lại và tính phí lại trong mọi message tiếp theo. Trong một task dài, /compact Focus on the failing tests and the diff tóm tắt lịch sử để context không phình theo cấp số nhân.
  • Chọn model phù hợp. Sonnet xử lý được phần lớn task coding với mức giá $2/$10 cho mỗi triệu token theo giá introductory vào tháng 7 năm 2026 ($3/$15 theo giá niêm yết, so với Opus ở mức $5/$25). Haiku ở mức $1/$5 phù hợp cho các công việc cơ học của subagent như phân loại log. Fable 5 ở đầu còn lại với giá $10/$50, cao gấp đôi Opus ở cả input và output, vì vậy nên biết những task nào thực sự đáng với mức giá đó trước khi để model này được chọn cho các công việc thường ngày. /model chuyển model ngay giữa session.
  • Lọc trước output dài. Một hook dùng grep để chỉ giữ lại các failure trong kết quả test trước khi Claude xem có thể giảm 20.000 token output của tool xuống còn 300 token. Việc này tiếp tục có tác dụng trong mọi lần gửi lại turn đó.
  • Gộp các công việc không cần tương tác. Với các API pipeline, tác vụ classification, bulk review và job chạy ban đêm, Batches API chạy cùng các model với mức giảm 50% để đổi lấy việc trả kết quả bất đồng bộ.
  • Tôn trọng thời hạn của cache. Làm việc liên tục theo từng đợt. Một session Claude Code chạy trong tmux trên VPS không tốn chi phí khi idle; token chỉ được sử dụng khi một turn chạy. Tuy nhiên, thời gian idle làm mất warm cache, nên turn tiếp theo phải trả chi phí ghi lại context.

FAQ

Một session lập trình trong Claude Code sử dụng bao nhiêu token?

Không có con số cố định. Một lượt giữa session thường đã có hàng chục nghìn prompt token sau khi file và history tích lũy. Một session làm việc có thể lên đến hàng triệu token, trong đó phần lớn được phục vụ từ cache với mức giá bằng một phần mười mức cơ bản. Để tham khảo, các số liệu doanh nghiệp do Anthropic công bố tính đến tháng 7 năm 2026 cho thấy mức trung bình khoảng $13 cho mỗi developer trong một ngày hoạt động, và 90% người dùng trả dưới $30. Chạy /usage trong session của bạn. Theo dõi trong năm phút hữu ích hơn bất kỳ mức trung bình nào được công bố.

Thinking token có tính phí ngay cả khi tôi không nhìn thấy không?

Có. Thinking token được tính như output token, theo mức giá cao hơn, và được tính vào max_tokens. Các model hiện tại vẫn tính phí cho chúng ngay cả khi interface không hiển thị phần tóm tắt reasoning. Nếu response kết thúc bằng stop_reason: "max_tokens" trước khi phần trả lời hiển thị hoàn tất, rất có thể thinking đã dùng hết budget. Trong Claude Code, giảm effort level bằng /effort cho những task không cần reasoning sâu.

Vì sao một session Claude Code dài lại đắt hơn trên mỗi message?

Vì API là stateless: mỗi turn gửi lại toàn bộ conversation, mọi file đã đọc, kết quả tool và các exchange trước đó dưới dạng input tính phí. Vì vậy, turn 50 mang theo các turn từ 1 đến 49. Prompt caching phục vụ prefix lặp lại với giá khoảng một phần mười giá input cơ bản, nhưng bản thân prefix vẫn tiếp tục dài ra. Nếu khoảng chờ vượt quá cache TTL, turn tiếp theo sẽ phải ghi lại toàn bộ với giá đầy đủ. /compact thu gọn history; /clear reset history.

Làm cách nào để kiểm tra mức sử dụng token và chi phí Claude?

Trong Claude Code, /usage hiển thị thống kê token của session, ước tính chi phí cục bộ và các thanh giới hạn plan trên subscription (/cost là alias). /context cho biết nội dung nào đang chiếm window. Để xem billing API chính thức, dùng trang usage trong Claude Console. Trong code của bạn, đọc response.usage. Cộng input_tokens, cache_creation_input_tokenscache_read_input_tokens sẽ cho kích thước prompt thực tế. Để ước tính trước, dùng endpoint count_tokens, không dùng tiktoken.