SSD Nodes Learn
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-07-23

Token trong Claude là gì? Chi phí Claude Code

Một token Claude bằng khoảng 3.5 ký tự. Đây là lý do một lượt Claude Code bị tính 80,000 token, và vì sao nghỉ 5 phút khiến lượt sau đắt gấp 5 lần.

Token trong Claude là gì?

Token là đơn vị văn bản mà Claude đọc và viết: một mẩu nhỏ của một từ, khoảng 3.5 ký tự tiếng Anh. Con số đó lấy từ chính bảng thuật ngữ của Anthropic, và khi tính cả dấu cách lẫn dấu câu thì mỗi từ tốn hơn một token, nên một nghìn từ văn xuôi dễ dàng vượt 1,300 token. Code nặng hơn nếu tính theo dòng: dấu ngoặc nhọn, toán tử, dấu gạch dưới và phần thụt lề bị cắt nhỏ thành nhiều token hơn trên cùng một lượng ký tự so với tiếng Anh, và một file nguồn vài trăm dòng thường rơi vào vài nghìn token. Một file 2,000 dòng mà agent quyết định đọc đã ngốn số token năm chữ số, trước khi có ai kịp viết dòng code mới nào.

Có hai điều về tokenizer hay làm người ta vấp. Thứ nhất, tokenizer gắn với 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 một tokenizer mới hơn, sinh ra nhiều token hơn khoảng 30% cho cùng một đoạn văn bản so với các model Claude đời trước (mức tăng cụ thể tùy nội dung), nên mọi ngân sách bạn tính bằng token đều dịch chuyển theo, dù giá mỗi token không tăng. Thứ hai, tiktoken, thư viện mà bài blog nào cũng vớ lấy, là tokenizer của OpenAI và đếm thiếu so với Claude khoảng 15–20% trên văn bản thường, thiếu nhiều hơn trên code. Cách đếm duy nhất đáng tin là endpoint count_tokens, sẽ nói ở phần dưới.

Vì sao phiên code của bạn lại tốn chừng đó

Mọi hóa đơn Claude, dù là hóa đơn API hay hạn mức thuê bao, đều quy về một đồng hồ đo: token vào, token ra. Trang bảng giá khiến mọi thứ trông đơn giản: bấy nhiêu đô la cho một triệu token đầu vào, bấy nhiêu cho một triệu token đầu ra. Điều trang đó không nói là trong một phiên code có agent, phía đầu vào của đồng hồ chạy nhanh hơn nhiều so với cảm giác của bạn, vì toàn bộ cuộc hội thoại được gửi lại ở mỗi lượt. Tôi bán hạ tầng tính theo mức dùng đã mười lăm năm, và token là cái đồng hồ đầu tiên mà phần lớn khách hàng thật sự không nói được là cái gì đang làm nó quay. Đây là bài học đọc đồng hồ: cái gì tính là đầu vào và đầu ra trong một phiên có agent, vì sao vòng lặp gửi lại đắt đến thế, vì sao prompt caching viết lại toàn bộ phép tính, và cách nào thực sự làm con số đó thay đổi.

Mọi thứ đều là đầu vào: đồng hồ thực sự đếm những gì

Người ta cho rằng mình trả tiền cho đoạn code Claude viết ra. Trong một phiên có agent, đó lại là khoản nhỏ. Token đầu vào có đơn giá rẻ hơn nhưng khối lượng lớn hơn rất nhiều, và gồm:

  • System prompt. Chỉ dẫn hệ thống của chính Claude Code, cộng với CLAUDE.md và các file memory của bạn, được nạp lúc mở phiên và có mặt trong mọi request sau đó.
  • Định nghĩa tool. Schema của mọi tool mà agent có thể gọi. Mỗi MCP server bạn kết nối thêm đều cộng vào phần chi phí cố định này. Claude Code hiện mặc định trì hoãn việc nạp đầy đủ định nghĩa tool MCP, nên chỉ có tên tool nằm trong context cho đến khi một tool được dùng lần đầu, điều đó giảm bớt chứ không xóa hẳn chi phí.
  • Mọi file agent đọc. Một lần Read một file nguồn đưa nguyên file vào context, và nó nằm lại đó.
  • Mọi kết quả tool. Lần chạy test, output của grep, đống chữ terminal xả ra, log build, tất cả quay về dưới dạng token đầu vào. Một bộ test hỏng in ra 8,000 dòng vừa bắt bạn trả tiền cho cả một cuốn sách nhỏ.
  • Toàn bộ cuộc hội thoại tính đến lúc đó, gửi lại ở mỗi lượt. Chỗ này đáng có riêng một mục.

Cú gửi lại mà không ai tính vào chi phí

API của Claude không lưu trạng thái (stateless). Nó không nhớ phiên của bạn giữa các request, không có gì nhớ cả. Nên ở lượt 2, client gửi lượt 1 cộng câu trả lời của lượt đó cộng tin nhắn mới của bạn. Ở lượt 50, nó gửi lại lượt 1 đến lượt 49, mọi file đã đọc, mọi kết quả tool, mọi diff, cộng lượt 50. Model đọc lại toàn bộ bản ghi hội thoại mỗi lần, và mọi token được đọc lại đó đều bị tính là đầu vào.

Hệ quả: chi phí mỗi lượt tăng gần như tuyến tính theo độ dài phiên, còn tổng chi phí cả phiên tăng gần như theo bình phương. Một tin nhắn tốn nửa cent ở lượt 3 có thể tốn gấp hai mươi lần ở lượt 60, vẫn là câu hỏi một dòng đó, vì nó phải mang theo sáu mươi lượt lịch sử. Đây là sự thật giải thích phần lớn các ticket kiểu "sao hóa đơn của tôi cao thế", và nó không phải đặc thù của Claude: mọi sản phẩm LLM tạo cảm giác có trạng thái đều là một API stateless cộng một vòng lặp gửi lại bên dưới.

Đầu ra: phần bạn thấy, cộng phần suy luận bạn không thấy

Token đầu ra là loại đắt, gấp năm lần đơn giá đầu vào trên toàn bộ dòng model hiện tại ($5/$25 với Opus 4.8, giá niêm yết $3/$15 với Sonnet 5, $1/$5 với Haiku 4.5, tính đến tháng 7 năm 2026). Đầu ra gồm văn bản và code Claude sinh ra, cộng thinking token: phần suy luận nội bộ model chạy trước khi trả lời. Có hai điều quan trọng ở đây. Thinking được tính theo giá đầu ra và trừ vào max_tokens, nên một response API chết với stop_reason: "max_tokens" kèm câu trả lời cụt thường có nghĩa là phần suy luận đã ăn hết ngân sách trước khi câu trả lời kịp xong. Và trên các model hiện tại, bản tóm tắt suy luận có thể không hiển thị chút nào (Opus 4.8, Sonnet 5 và Fable 5 mặc định bỏ nó đi), nhưng phần suy luận vẫn diễn ra và vẫn bị tính tiền. Không nhìn thấy không có nghĩa là miễn phí.

Claude Code bật extended thinking theo mặc định vì nó cải thiện rõ rệt các việc nhiều bước, và ngân sách mặc định có thể lên tới hàng chục nghìn token mỗi request. Với những việc đơn giản hơn, bạn có thể hạ nó xuống: giảm mức effort bằng /effort hoặc trong /model, hoặc chỉnh thiết lập thinking trong /config. Đó là một cách giảm chi phí thật, không phải mẹo truyền miệng.

Prompt caching viết lại phép tính

Prompt caching là lý do vòng lặp gửi lại không làm mọi người phá sản. API có thể cache phần tiền tố ổn định của prompt, gồm system prompt, định nghĩa tool và lịch sử hội thoại, rồi ở request sau phục vụ lại phần đó với giá chỉ bằng một phần nhỏ. Tính đến tháng 7 năm 2026 các hệ số là: một lần ghi cache tốn 1.25× đơn giá đầu vào gốc (2× với bản TTL 1 giờ), còn một lần đọc cache tốn 0.1×. Ghi là phần phụ trội, đọc là mức giảm 90%. Chỉ một lần đọc đã dư sức bù lại phần phụ trội của lần ghi cache 5 phút.

Claude Code tự quản lý cache cho bạn, và trong một phiên khỏe mạnh thì gần như toàn bộ khối gửi lại khổng lồ kia được phục vụ từ cache. Nhưng cache mặc định chỉ sống năm phút kể từ lần dùng cuối. Bạn đứng dậy pha cà phê lâu hơn dự định, quay lại, gửi một tin nhắn: cache đã hết hạn, và toàn bộ tiền tố tích lũy bị ghi lại ở mức 1.25× thay vì đọc ở mức 0.1×. Trên một phiên 150K token, riêng lượt nguội đó tốn hơn cả chục lượt ấm cộng lại. Đây là kết quả trái trực giác đáng nhớ: kiểu làm ngắt quãng rồi quay lại có thể tốn hơn làm liên tục, vì mỗi khoảng nghỉ vượt quá TTL biến lượt kế tiếp từ một lần đọc rẻ thành một lần ghi lại đắt. Hãy làm thành từng đợt liên tục, đừng nhỏ giọt một phiên lớn theo kiểu mười phút một tin nhắn.

Nếu bạn gọi API từ ứng dụng của chính bạn trên một VPS, bạn không được hưởng thứ gì trong số này miễn phí, và lỗi tự gây kinh điển là chèn một timestamp hay request ID vào system prompt, khiến các byte tiền tố đổi ở mỗi request và tắt cache một cách âm thầm. Dấu hiệu nhận biết là usage.cache_read_input_tokens bằng không trên hàng loạt lệnh gọi trông giống hệt nhau.

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

Bỏ qua bất kỳ ai phán một con số cố định kiểu "một phiên tốn $X". Các phiên chênh nhau tới hai bậc độ lớn. Thứ luôn đúng là công thức:

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 tay trên Claude Opus 4.8, tính đến tháng 7 năm 2026 là $5 cho một triệu token đầu vào và $25 cho một triệu token đầu ra. Một lượt giữa phiên mang theo 80,000 token context tích lũy: 75,000 đọc từ cache, 3,000 mới ghi, 2,000 là đầu vào mới chưa cache, và 1,500 token đầu ra tính cả thinking.

  • Đọc cache: 75,000 × $0.50/M = $0.0375
  • Ghi cache: 3,000 × $6.25/M = $0.019
  • Đầu vào chưa cache: 2,000 × $5/M = $0.010
  • Đầu ra: 1,500 × $25/M = $0.0375

Khoảng $0.10 cho một lượt; năm mươi lượt như vậy là chừng $5. Giờ xét đúng lượt đó sau khi cache hết hạn: ghi lại đủ 80,000 token ở giá $6.25/M là $0.50 khi còn chưa tính đầu ra, tức khoảng gấp năm lần cả lượt ấm, cho cùng một khối lượng công việc. Khoảng cách đó là toàn bộ câu chuyện cache gói trong một con số.

Để lấy mốc tham chiếu chứ không phải để dự đoán: số liệu Anthropic công bố cho các triển khai Claude Code ở quy mô doanh nghiệp, tính đến tháng 7 năm 2026, trung bình khoảng $13 mỗi lập trình viên mỗi ngày làm việc, tức $150–250 một tháng, với 90% người dùng ở dưới $30 một ngày. Con số của bạn phụ thuộc vào model bạn chọn, cách bạn giữ phiên gọn gàng và kích thước codebase, và đó chính là lý do những cách giảm chi phí bên dưới có ý nghĩa.

Xem mức dùng của chính bạn

Trong Claude Code, lệnh là /usage (/cost vẫn chạy, nó là một alias). Khối Session ở trên cùng hiển thị thống kê token và một ước tính chi phí tính tại máy cho phiên hiện tại; trên các gói thuê bao, cũng màn hình đó hiện các thanh hạn mức của gói cùng phần bóc tách mức dùng gần đây theo skill, subagent, plugin và từng MCP server. Với tài khoản API, hóa đơn chuẩn nằm ở trang usage trong Claude Console, con số trên CLI chỉ là ước tính. /context vẽ một lưới màu cho thấy cái gì đang chiếm context window, gồm system prompt, tool, định nghĩa MCP, file và lịch sử, và đó là cách nhanh nhất để phát hiện một CLAUDE.md phình to hay một MCP server nói nhiều; truyền all để mở rộng bảng chi tiết từng mục.

Từ phía API, mỗi response nói cho bạn 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 dư chưa được cache, kích thước prompt thật là tổng của cả ba trường đầu vào. Một agent chạy suốt một tiếng mà hiện 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 miễn phí, có rate limit riêng, và đếm bằng tokenizer của đúng model bạn chỉ định (hãy coi kết quả là ước tính sát, hóa đơn phản ánh request thật):

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

Đừng bao giờ dùng tiktoken, vì lý do nói ở trên.

Gói thuê bao so với trả theo mức dùng

Cơ chế trong hướng dẫn này giống nhau ở mọi nơi, chỉ khác cách thanh toán. Với một API key, Anthropic tính tiền theo mức dùng, theo từng token, theo bảng giá công bố, và mọi con số ở trên là tiền thật. Trên gói thuê bao Claude (Pro, Max, Team, Enterprise), phần dùng Claude Code trừ vào hạn mức đi kèm của gói: tính đến tháng 7 năm 2026 đó là một cửa sổ phiên năm tiếng dạng trượt cộng một cửa sổ theo tuần, dùng chung giữa các model và dùng chung với chat trên claude.ai, còn con số đô la trong /usage chỉ để tham khảo chứ không phải hóa đơn. Dùng hết một cửa sổ, bạn sẽ thấy "You've hit your session limit" hoặc "You've hit your weekly limit" kèm thời điểm reset, và đổi model bằng /model không khôi phục được quyền dùng, vì các cửa sổ này dùng chung giữa các model. Gói có thể bật thêm usage credits, quản lý bằng /usage-credits, để mua thêm mức dùng vượt trần. Tôi cố ý không in ra hạn ngạch của từng gói: chúng là những con số biến động nhất trong cả chủ đề này, nên hãy xem claude.com/pricing và các thanh /usage của chính bạn. Cơ chế token vẫn quan trọng trên gói thuê bao, một phiên lãng phí đốt cửa sổ của bạn đúng theo cách nó đốt tiền. Về phía thuê bao, xem gói Claude nào hợp với mức dùng của bạn.

Những cách thực sự có tác dụng

  • Giới hạn phạm vi những gì agent đọc. "Sửa lỗi validation trong auth.py" đọc một file; "cải thiện codebase này" đọc bốn mươi file. Giữ CLAUDE.md gọn, vì nó được nạp vào mọi phiên nên chỉ để lại phần cốt lõi, và chuyển các chỉ dẫn theo quy trình cụ thể vào skill để nạp khi cần.
  • Clear và compact. Dùng /clear giữa các tác vụ không liên quan, vì context cũ vẫn bị gửi lại và tính tiền lại ở mọi tin nhắn sau đó. Trong cùng một tác vụ dài, /compact Focus on the failing tests and the diff tóm tắt lịch sử lại và giúp bạn tránh đường cong bình phương.
  • Chọn đúng cỡ model. Sonnet lo được phần lớn việc code với giá $2/$10 mỗi triệu token theo mức giá giới thiệu tính đến tháng 7 năm 2026 (giá niêm yết $3/$15, so với Opus ở $5/$25), còn Haiku ở $1/$5 là công cụ đúng cho việc subagent máy móc như sàng lọc log. /model đổi model ngay giữa phiên.
  • Lọc trước output dài dòng. Một hook grep kết quả chạy test xuống còn phần lỗi trước khi Claude nhìn thấy sẽ biến 20,000 token kết quả tool thành 300 token, và mức tiết kiệm đó lặp lại ở mọi lần lượt ấy bị gửi lại về sau.
  • Gom việc không cần tương tác. Với pipeline API của riêng bạn, như phân loại, rà soát hàng loạt hay job chạy đêm, Batches API chạy đú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 đồng hồ cache. Làm việc thành từng đợt liên tục. Một phiên Claude Code chạy nền trong tmux trên VPS không tốn gì khi rảnh, token chỉ mất khi có một lượt chạy, nhưng thứ bị mất trong lúc rảnh là cache còn ấm, và lượt kế tiếp phải trả tiền ghi lại.

FAQ

Một phiên code trong Claude Code dùng hết bao nhiêu token?

Không có con số cố định. Một lượt giữa phiên thường mang vài chục nghìn token prompt khi file và lịch sử đã tích lại, còn cả một phiên làm việc lên tới hàng triệu, phần lớn được phục vụ từ cache với giá bằng một phần mười đơn giá gốc. Để lấy mốc, số liệu doanh nghiệp Anthropic công bố tính đến tháng 7 năm 2026 trung bình khoảng $13 mỗi lập trình viên mỗi ngày làm việc, với 90% người dùng dưới $30. Hãy chạy /usage trong phiên của chính bạn; năm phút ngồi nhìn nó đáng giá hơn mọi con số trung bình được công bố.

Thinking token có bị tính tiền không khi tôi không nhìn thấy chúng?

Có. Thinking token được tính như token đầu ra, tức mức giá đắt, và trừ vào max_tokens; các model hiện tại vẫn tính tiền chúng ngay cả khi giao diện không hiển thị bản tóm tắt suy luận. Nếu một response bị cắt với stop_reason: "max_tokens" trước khi câu trả lời nhìn thấy được kịp xong, nhiều khả năng phần suy luận đã ăn hết ngân sách. Trong Claude Code, hạ mức effort bằng /effort cho những việc không cần suy luận sâu.

Vì sao phiên Claude Code càng dài thì mỗi tin nhắn càng đắt?

Vì API không lưu trạng thái: mỗi lượt gửi lại toàn bộ cuộc hội thoại, gồm mọi file đã đọc, mọi kết quả tool và mọi trao đổi trước đó, tất cả đều bị tính là đầu vào, nên lượt 50 phải mang theo lượt 1 đến 49. Prompt caching phục vụ phần tiền tố lặp lại với giá khoảng một phần mười đơn giá đầu vào gốc, nhưng bản thân tiền tố vẫn dài ra, và mọi khoảng nghỉ vượt TTL của cache biến lượt kế tiếp thành một lần ghi lại giá đầy đủ. /compact thu nhỏ lịch sử; /clear xóa hẳn.

Kiểm tra mức dùng token và chi phí Claude bằng cách nào?

Trong Claude Code, /usage hiển thị thống kê token của phiên, một ước tính chi phí tại máy và các thanh hạn mức gói với tài khoản thuê bao (/cost là alias); /context cho thấy cái gì đang lấp đầy context window. Với hóa đơn API chuẩn, dùng trang usage trong Claude Console. Trong code của bạn, hãy đọc response.usage, cộng input_tokens, cache_creation_input_tokenscache_read_input_tokens sẽ ra kích thước prompt thật, và ước tính trước bằng endpoint count_tokens, đừng bao giờ dùng tiktoken.