Tháng 5 năm 2026, hai tin tức nổi lên xác nhận điều nhiều kỹ sư đã nghi ngờ từ lâu:

Microsoft huỷ hàng nghìn license Claude Code nội bộ trong nhóm Experiences & Devices — đội phụ trách Windows, Office, Teams — có hiệu lực từ ngày 30/6/2026. Chương trình pilot chỉ chạy được chưa đầy 6 tháng. Kỹ sư yêu thích nó. Nó quá phổ biến. Chi phí theo token vượt quá ngân sách, và giờ các developer đang được di chuyển sang GitHub Copilot CLI.

CTO của Uber thừa nhận công ty đã đốt sạch ngân sách AI cả năm 2026 chỉ trong 4 tháng. Sau khi triển khai Claude Code cho 5.000 kỹ sư, chi phí API hàng tháng mỗi người lên đến 500-2.000 USD. CTO Uber Praveen Neppalli Naga cho biết ông tự mình đã tiêu 1.200 USD chỉ trong một buổi demo 2 tiếng. Lượng sử dụng bùng nổ — 95% kỹ sư Uber dùng công cụ AI vào tháng 4 — nhưng kinh tế học không gánh nổi.

Đồng thời, GitHub thông báo Copilot chuyển sang tính phí theo mức sử dụng từ ngày 1/6/2026, chuyển từ gói flat-rate sang mô hình AI Credits vì “một câu hỏi chat nhanh và một buổi coding tự động nhiều tiếng đang tốn cùng chi phí — điều này không còn bền vững nữa.”

Tôi đã suy nghĩ về vấn đề này khá lâu. Luận điểm của tôi: LLM tốn kém không phải vì nó ngu, mà vì chúng ta đang bắt nó làm những việc mà CPU với thuật toán tất định xử lý tốt hơn hàng triệu lần. Bài này phân tích lý do kỹ thuật — và những gì chúng ta nên làm.


Bài Toán Strawberry

Hãy bắt đầu với một ví dụ nổi tiếng minh hoạ sự lãng phí khi dùng LLM cho mọi thứ.

Bài toán: Đếm xem có bao nhiêu ký tự ‘r’ trong từ “strawberry.”

Cách tiếp cận với CPU

char word[] = "strawberry";
int count = 0;
for (int i = 0; word[i] != '\0'; i++) {
    if (word[i] == 'r') count++;
}
// count = 3
  • Số bước: ~10 vòng lặp
  • Thời gian: ~20 nanosecond trên CPU hiện đại
  • Bộ nhớ: 11 bytes cho chuỗi + 2 bytes cho biến = tổng cộng 13 bytes
  • Độ chính xác: 100%, tất định, luôn đúng

Cách tiếp cận với LLM

Để yêu cầu LLM làm điều này, trước tiên bạn phải tạo chuỗi token đầu vào:

System prompt: "Bạn là chuyên gia xử lý ngôn ngữ..."
Mô tả nhiệm vụ: "Bạn nhận vào chuỗi X và ký tự c. Đếm c xuất hiện bao nhiêu lần trong X."
Input: "X = strawberry, c = r"
Output format: "Trả lời dưới dạng JSON: {"count": n}"

Prompt này được gửi đến inference server. Đây là những gì xảy ra tiếp theo:

  1. Tokenization: “strawberry” được chia thành khoảng 5 token: str, aw, b, er, ry — chú ý các ký tự ‘r’ riêng lẻ bị ẩn vào các token nhiều ký tự. Đây chính là lý do các LLM đời đầu hay trả lời sai!

  2. Embedding: Mỗi token trở thành vector ~10.000 số thực. Ở định dạng FP8 (1 byte mỗi số), đó là 10.000 bytes mỗi token x 5 token = 50.000 bytes chỉ để biểu diễn từ “strawberry” — so với 11 bytes trong C.

  3. Nhưng prompt thực tế còn lớn hơn: Input thực tế của Claude Code bao gồm tối thiểu 6.000 token cho system prompt và 8.000 token cho mô tả tool. Đó là 14.000 token chi phí cố định trước khi nhiệm vụ của bạn bắt đầu.

  4. Bộ nhớ KV Cache: Với mỗi token trong input, transformer cần lưu trữ vector Key (K) và Value (V) cho mỗi layer. Một model lớn có 100 layer, xử lý 100.000 token (một phiên Claude Code điển hình), cần: 2 x 100 layer x 100.000 token x 10.000 chiều = ~200 GB bộ nhớ KV cache. Một GPU H100 chỉ có 80 GB VRAM. Đây là lý do LLM inference bị giới hạn bởi bộ nhớ, không phải bởi sức tính toán.

  5. Attention là bậc hai (quadratic): Mỗi token mới model sinh ra phải “chú ý đến” tất cả các token trước. Độ phức tạp attention là O(n^2) — nhân đôi context thì tính toán tăng gấp 4. Đây là lý do inference ngày càng chậm hơn khi hội thoại kéo dài.

  6. Sinh token tuần tự: Các token được sinh ra từng cái một, mỗi cái cần một lần forward pass qua toàn bộ mạng nơ ron. Một model như Claude Opus với hàng nghìn tỷ tham số cần hàng trăm tỷ phép tính số thực chỉ để sinh một token.

Kết quả? LLM có thể trả lời sai (nhiều model lịch sử thất bại bài test này), dùng gigabyte VRAM trên cụm H100, và toàn bộ inference call mất vài giây. Tất cả chỉ để đếm ba chữ cái.


Vì Sao Agentic Coding Nhân Lên Vấn Đề

Khi dùng Claude Code hay GitHub Copilot như một agent coding, cấu trúc chi phí tệ hơn nhiều so với một LLM call đơn lẻ.

Context Window Phình To

Đây là những gì một phiên Claude Code điển hình thực sự chứa:

System prompt:          ~6.000 token  (cố định)
Định nghĩa tool:        ~8.000 token  (cố định)
CLAUDE.md / project:    ~500 token    (cố định)
----------------------------------------------
Chi phí cố định:        ~14.500 token

Lịch sử hội thoại:      tăng dần theo từng lượt
Kết quả tool (bash, read, grep, find): tăng rất nhanh
Chuỗi reasoning:        rất dài, đặc biệt ở "thinking" mode
----------------------------------------------
Phiên điển hình:        50.000–200.000 token

Hội thoại càng dài, mỗi phản hồi càng chậm và tốn tiền hơn — vừa vì attention là bậc hai, vừa vì model khó duy trì mạch lạc trên context rất dài, đó là lý do Claude Code hay “quên” và cần tóm tắt lịch sử.

Kết Quả Tool Tăng Nhanh

Khi một agent khám phá codebase để tìm nơi function X được gọi, nó có thể:

  1. find . -name "*.java" — trả về danh sách 200 file
  2. grep -r "functionX" --include="*.java" — tìm thấy 15 kết quả
  3. read mỗi kết quả với 100–200 dòng context xung quanh — thêm ~3.000 token code mỗi file
  4. LLM suy luận về từng file để xác định có phải là lời gọi thật không

Kết quả: hàng nghìn token tiêu tốn để trả lời câu hỏi mà một call graph được tính sẵn trong công cụ static analysis trả lời trong microsecond.

Chuỗi Reasoning

Các LLM hiện đại dùng chain-of-thought, tree-of-thought, và reflexion để cải thiện độ chính xác. Chúng sinh ra output “suy nghĩ” dài trước khi đưa ra câu trả lời thực sự — thường dài gấp 10 lần response cuối. Toàn bộ quá trình thinking này được tính là output token, thường với giá 3–5 lần token input.

Vòng Lặp Multi-Agent

Trong kiến trúc multi-agent, các agent có thể sinh ra sub-agent, mỗi agent có context window riêng. Một task cấp cao có thể kích hoạt hàng chục LLM call trong chuỗi, mỗi call kế thừa toàn bộ context của mọi thứ trước đó.


Kinh Tế Học Đơn Vị Rất Khắc Nghiệt

Hãy nhìn vào con số thực:

ModelInput (mỗi 1M token)Output (mỗi 1M token)
Claude Opus 4~USD 15~USD 75
Claude Sonnet 4~USD 3~USD 15
GPT-4o~USD 2,50~USD 10
Claude Haiku~USD 0,25~USD 1,25

Một phiên agentic coding với 100.000 input token + 10.000 output token dùng Claude Opus có giá:

Input:  100.000 x ($15/1.000.000)  = $1,50
Output:  10.000 x ($75/1.000.000)  = $0,75
Tổng mỗi phiên: ~$2,25

Với 8 phiên mỗi ngày, đó là USD 18/ngày, USD 540/tháng mỗi kỹ sư. Nhân với 5.000 kỹ sư là USD 2,7 triệu mỗi tháng.

Đó là bài toán toán học đã đốt sạch ngân sách của Uber.


Mô Hình Tư Duy Đúng: LLM Không Phải CPU

Đây là hiểu biết cốt lõi mà mọi engineering leader cần nội tâm hoá:

LLM là engine suy luận sinh text xác suất. CPU là engine tính toán tất định. Dùng mỗi loại cho điều nó giỏi.

Loại Tác VụCông Cụ Tốt NhấtLý Do
Đếm ký tự trong chuỗiCPU + thuật toánChính xác, tất định, O(n), nanosecond
Tìm tất cả nơi gọi function XStatic analysis / call graphChính xác, nhanh, tính toán một lần
Parse JSON/XMLParser chuẩnKhông token, microsecond
Validate format emailRegex100% chính xác, không tốn kém
Sort/filter danh sáchThuật toánTất định, có thể scale
Hiểu yêu cầu mơ hồLLMSuy luận xác suất là công cụ đúng
Sinh code từ ý địnhLLMNgôn ngữ tự nhiên → code có cấu trúc
Tìm kiếm code theo ngữ nghĩaLLM + embeddingsDựa trên ý nghĩa, không phải từ khoá
Tóm tắt tài liệu dàiLLMNén và tổng hợp thông tin
Phát hiện bug tinh tế trong contextLLMNhận dạng pattern trên context lớn

Vấn đề là nhiều công cụ agentic coding coi mọi thứ là tác vụ LLM — bao gồm điều hướng file system, parse cây cú pháp, giải quyết import, và tìm tham chiếu function — trong khi đây chính xác là những vấn đề mà compiler và static analysis đã giải quyết hoàn hảo từ hàng chục năm trước.


Triết Lý Metis: Hybrid Là Tương Lai

Kiến trúc đúng cho AI-assisted development không phải “LLM cho mọi thứ.” Đó là hybrid stack dùng:

  1. Compiler và công cụ program analysis cho câu hỏi tất định, cấu trúc:

    • “Function X được gọi ở đâu?” → Call graph (microsecond)
    • “Biến này có type gì?” → Type inference
    • “Module Y có những dependency nào?” → Dependency graph
    • “Code này có compile không?” → Compiler
  2. LLM cho tác vụ ngữ nghĩa và sinh tạo nơi suy luận xác suất mang lại giá trị thực sự:

    • “Function này có thể làm gì?” → Hiểu ngữ nghĩa
    • “Viết unit test cho behaviour này” → Sinh code
    • “Tìm code có ý định tương tự query này” → Semantic search qua embeddings
    • “Tại sao đây có thể là nguyên nhân bug?” → Suy luận trong điều kiện không chắc chắn

Đây là triết lý đằng sau các công cụ như Metis: dùng static analysis cho layer cấu trúc (parse AST, call graph, type inference, binding resolution), và dành LLM cho layer ngữ nghĩa nơi thuật toán chính xác không tồn tại.

Kết quả: ít token hơn, kết quả nhanh hơn, chi phí thấp hơn, độ chính xác cao hơn cho các query cấu trúc.


Tối Ưu Chi Phí Thực Tế Cho Đội Engineering

Nếu bạn chưa thể thay đổi kiến trúc ngay, đây là bốn đòn bẩy có thể dùng ngay hôm nay:

1. Model Routing

Dùng model nhỏ nhất có thể xử lý tác vụ. Haiku cho autocomplete và câu hỏi đơn giản. Sonnet cho hầu hết tác vụ coding. Opus chỉ cho reasoning khó nhất. Điều này thôi có thể giảm chi phí 40–60%.

2. Prompt Caching

System prompt và context lặp lại (tool, project file, guidelines) có thể được cache. AWS Bedrock và Anthropic API đều hỗ trợ điều này. Giảm chi phí: lên đến 90% cho cached token.

3. Semantic Caching

Cache phản hồi cho các query có ngữ nghĩa tương tự. Câu hỏi về “cách xử lý null check” được hỏi 50 cách khác nhau có thể trả về response đã cache mà không cần gọi LLM.

4. Vệ Sinh Context Window

Định kỳ tóm tắt và nén lịch sử hội thoại. Không truyền toàn bộ file khi chỉ cần một đoạn. Giữ kết quả tool tối thiểu.


Ý Nghĩa Với Ngành

Tình huống của Microsoft và Uber không phải ngoại lệ — chúng là tín hiệu sớm của một vấn đề cấu trúc mà mọi enterprise sẽ phải đối mặt khi mức độ sử dụng công cụ AI trưởng thành:

  • Tính phí theo token là infrastructure có meter — không phải software licensing. Giá per-seat ẩn đi thực tế này, nhưng sự chuyển dịch của GitHub sang AI Credits (1/6/2026) đã làm nó rõ ràng.
  • Chi phí LLM inference đã giảm 10x trong 3 năm, nhưng lượng token tiêu thụ đã tăng 100x với agentic workload. Chi phí ròng: cao hơn.
  • 85% công ty dự báo chi phí AI sai hơn 10% (Mavvrik, 2025). Các mô hình lập ngân sách chưa tồn tại.

Các đội thành công sẽ là những đội coi chi phí AI là chi phí infrastructure — không phải headcount — và xây dựng kỷ luật đo lường, quản trị, và kiến trúc để quản lý đúng cách.

Bài toán strawberry không chỉ là trò vui. Đó là một bài học về việc dùng đúng công cụ cho đúng việc. LLM mạnh chính xác vì nó xử lý được sự mơ hồ và ngôn ngữ mà thuật toán tất định không làm được. Dùng chúng cho điều đó. Để CPU đếm chữ cái.


Tài liệu tham khảo

  1. Microsoft huỷ license Claude Code, chuyển developer sang GitHub Copilot CLI — Windows Central: Báo cáo đầy đủ về quyết định của Microsoft và động cơ tài chính
  2. Microsoft Drops Claude Code After Budget Overrun — AI Weekly tóm tắt tình trạng ngân sách của Microsoft
  3. Microsoft huỷ Claude Code và đẩy developer về công cụ AI của riêng mình — Phân tích của The Decoder về sự thay đổi chiến lược của Microsoft
  4. Uber đốt hết ngân sách AI 2026 trong 4 tháng — Báo cáo của Briefs.co về vấn đề chi phí AI của Uber
  5. Nỗ lực AI của Uber với Anthropic gặp khó — CTO nói về khó khăn ngân sách — Yahoo Finance với trích dẫn CTO và số liệu chi phí
  6. Khủng hoảng chi phí AI xuất hiện khi hoá đơn Claude và Agentic Coding tăng vọt — Phân tích toàn diện về khủng hoảng chi phí AI doanh nghiệp
  7. GitHub Copilot chuyển sang tính phí theo mức sử dụng — Thông báo chính thức trên GitHub Blog về mô hình tính phí AI Credits
  8. GitHub Copilot AI Credits: Tính phí theo mức sử dụng từ 1/6/2026 — Phân tích chi tiết mô hình tính phí mới của GitHub
  9. Developer phản ứng về thay đổi giá Copilot theo mức sử dụng — Phản ứng của cộng đồng developer về thay đổi giá Copilot
  10. Chi phí LLM Inference 2026: Hướng dẫn giá đầy đủ — So sánh giá toàn diện năm 2026 với tất cả nhà cung cấp LLM lớn
  11. Khủng hoảng chi phí AI Inference 2026: Tại sao hoá đơn AI của bạn tăng mạnh — Phân tích vì sao chi phí inference tăng dù giá per-token giảm
  12. KV Cache giải thích: Attention hiệu quả cho LLM Generation — Giải thích kỹ thuật của Hugging Face về KV cache và yêu cầu bộ nhớ
  13. Hiểu KV Cache và Paged Attention trong LLM — Phân tích sâu về cơ chế KV cache và cách scale bộ nhớ
  14. LLM Inference Series: KV Caching giải thích — Hướng dẫn kỹ thuật về transformer attention và chiến lược caching
  15. Kinh tế học đơn vị Inference: Chi phí thực sự mỗi triệu token — Kinh tế học phần cứng GPU và phân tích chi phí per-token
Xuất nội dung

Bình luận