Khi một AI agent chạy trong production, hóa đơn API cuối tháng thường là con số khiến nhiều team giật mình — không phải vì giá per-token quá cao, mà vì không ai thực sự hiểu cấu trúc chi phí đứng sau nó. Một kỹ sư senior có thể viết prompt engineering rất tốt, nhưng nếu không nắm được cách provider tính tiền theo token, agent vẫn "đốt" budget một cách âm thầm qua context accumulation, retry loop, hay việc chọn model sai cho tác vụ.
Bài này dành cho tất cả các persona trong vòng đời phát triển phần mềm — kỹ sư, QA, product manager — vì token pricing không còn là chuyện riêng của backend engineer. Product manager cần hiểu để estimate ROI (Return on Investment — tỷ suất lợi nhuận đầu tư) trước khi duyệt feature. QA cần biết vì test suite cho agent (chạy hàng trăm lần trong CI) cũng tiêu token thật. Kỹ sư cần biết để thiết kế hệ thống tối ưu chi phí ngay từ đầu, không phải "optimize sau khi cháy budget".
Cách Tính Giá Token Hoạt Động: Những Nguyên Tắc Cơ Bản
Hầu hết các nhà cung cấp Large Language Model (LLM) tính phí theo token — đơn vị nhỏ nhất mà model xử lý, thường tương đương khoảng 3/4 từ tiếng Anh (với tiếng Việt, do đặc thù dấu và âm tiết, tỷ lệ token/từ thường cao hơn — một câu tiếng Việt có thể tốn 1.5–2 lần số token so với câu tiếng Anh tương đương cùng nghĩa). Đây là điểm đầu tiên cần khắc sâu: input token (những gì bạn gửi vào — prompt, context, tài liệu, lịch sử hội thoại) và output token (những gì model trả về) hầu như luôn được tính giá khác nhau, với output token thường đắt gấp 3–5 lần input token.
Lý do output đắt hơn nằm ở cơ chế tính toán: input được xử lý song song trong một lượt (prefill), còn output phải sinh ra tuần tự từng token một (decode), tốn nhiều compute hơn trên mỗi token. Điều này có nghĩa là một agent yêu cầu model viết ra đoạn code dài, hay giải thích chi tiết từng bước suy luận (chain-of-thought / extended thinking), sẽ tốn tiền không cân xứng so với một agent chỉ cần trả lời "yes/no" hoặc trích xuất vài trường dữ liệu.
Một khái niệm nữa bắt buộc phải hiểu: context window. Đây là tổng số token tối đa mà model có thể "nhìn thấy" trong một lượt gọi — bao gồm system prompt, lịch sử hội thoại, tool definitions, và câu hỏi hiện tại. Với agent nhiều bước (multi-step agent), context window không được tính phí một lần — mỗi lượt gọi API lại phải gửi lại toàn bộ context tích lũy, trừ khi bạn dùng prompt caching (sẽ nói ở phần sau). Đây chính là lý do vì sao một agent "đơn giản" chạy 20 bước có thể tốn gấp 10–15 lần chi phí của một cuộc hội thoại chat thông thường 20 lượt.
Cuối cùng, giá được công bố (list price) và giá thực tế trả (effective price) thường khác nhau đáng kể nhờ các cơ chế giảm giá: prompt caching (giảm 50–90% cho phần context lặp lại), batch processing (giảm ~50% cho tác vụ không cần real-time), và các tier giá theo volume. Một agent thiết kế tốt có thể trả effective price thấp hơn list price 3–4 lần.
Mẹo
- Luôn phân biệt rõ input token và output token khi đọc bảng giá — đừng lấy một số trung bình rồi nhân với tổng token, sẽ sai lệch đáng kể.
- Với tiếng Việt hoặc ngôn ngữ có dấu, hãy đo thử số token thực tế bằng tool đếm token của provider (ví dụ endpoint
count_tokenscủa Anthropic, hoặc tokenizer của OpenAI) trước khi ước tính chi phí — không dùng công cụ đếm token của provider khác (tokenizer không tương thích giữa các nhà cung cấp). - Ghi lại "cost per outcome" (chi phí cho một tác vụ hoàn chỉnh) thay vì chỉ "cost per token" — đây là chỉ số mà product manager và stakeholder thực sự quan tâm.
- Đừng bỏ qua context window khi thiết kế agent: context window lớn (1M token) nghe hấp dẫn nhưng nếu agent nhồi hết context vào mỗi lượt gọi, chi phí sẽ tăng tuyến tính theo số bước.
Bảng Giá Theo Nhà Cung Cấp (tính đến giữa năm 2025)
Lưu ý quan trọng: Giá LLM thay đổi thường xuyên — các nhà cung cấp có thể giảm giá, ra model mới, hoặc điều chỉnh tier chỉ trong vài tháng. Các số liệu dưới đây phản ánh thứ tự độ lớn tương đối giữa các model (flagship đắt hơn model tiết kiệm, theo đúng tỷ lệ thường gặp) tại thời điểm giữa năm 2025, dùng cho mục đích minh họa trong khóa học. Trước khi đưa vào bất kỳ quyết định ngân sách thực tế, luôn kiểm tra lại trang pricing chính thức của từng nhà cung cấp.
OpenAI
| Model | Input ($/1M token) | Output ($/1M token) | Ghi chú |
|---|---|---|---|
| GPT-4o (flagship) | ~$2.50 | ~$10.00 | Đa năng, hỗ trợ vision |
| GPT-4o mini (tiết kiệm) | ~$0.15 | ~$0.60 | Cho tác vụ đơn giản, tốc độ cao |
| o3 (reasoning model) | ~$10.00 | ~$40.00 | Dùng cho suy luận phức tạp, sinh nhiều "thinking token" ẩn |
Điểm đặc biệt với dòng model reasoning (o-series) của OpenAI: model sinh ra "reasoning token" ẩn trước khi trả lời, và các token này vẫn bị tính phí như output token dù người dùng không nhìn thấy chúng. Đây là cái bẫy chi phí phổ biến — một câu trả lời ngắn gọn 50 từ có thể ẩn sau nó 2000 reasoning token đã bị tính tiền.
Anthropic (Claude)
| Model | Input ($/1M token) | Output ($/1M token) | Ghi chú |
|---|---|---|---|
| Claude Opus (flagship) | ~$15.00 | ~$75.00 | Năng lực cao nhất, phù hợp agentic workflow phức tạp |
| Claude Sonnet (cân bằng) | ~$3.00 | ~$15.00 | Lựa chọn mặc định cho hầu hết production workload |
| Claude Haiku (tiết kiệm) | ~$0.80 | ~$4.00 | Tác vụ đơn giản, tốc độ cao, chi phí thấp |
Anthropic cung cấp prompt caching khá mạnh: phần context được cache (ví dụ system prompt dài, tài liệu tham chiếu) có thể giảm chi phí read xuống ~10% giá gốc, dù việc "ghi" cache lần đầu tốn thêm ~25% so với giá input thông thường. Với agent gọi lại cùng một system prompt/tool definition nhiều lần trong một session, đây là cơ chế tiết kiệm quan trọng nhất cần khai thác.
Google Gemini
| Model | Input ($/1M token) | Output ($/1M token) | Ghi chú |
|---|---|---|---|
| Gemini Pro (flagship) | ~$1.25 | ~$10.00 | Context window rất lớn, mạnh về multimodal |
| Gemini Flash (tiết kiệm) | ~$0.075 | ~$0.30 | Rẻ nhất trong nhóm flagship-tier của các provider lớn |
Gemini thường có context window rất lớn (có thể lên đến hàng triệu token) với giá input thuộc nhóm cạnh tranh nhất thị trường, khiến nó phù hợp cho các agent cần nạp nhiều tài liệu tham chiếu (RAG — retrieval-augmented generation) mà không muốn trả phí input quá cao.
AWS Bedrock
Bedrock không phải là nhà cung cấp model mà là nền tảng trung gian (managed platform) cho phép gọi model từ nhiều bên (Anthropic, Meta Llama, Amazon Titan, Mistral...) qua một API thống nhất, tích hợp sẵn với hệ sinh thái AWS (IAM, VPC, CloudWatch).
| Model (qua Bedrock) | Input ($/1M token) | Output ($/1M token) | Ghi chú |
|---|---|---|---|
| Claude (qua Bedrock) | ~ tương đương giá trực tiếp của Anthropic | ~ tương đương | Có thể chênh lệch nhẹ theo region |
| Llama 3 70B | ~$0.65–$1.00 | ~$0.80–$1.30 | Model mã nguồn mở, giá thường thấp hơn |
| Amazon Titan | ~$0.20–$0.50 | ~$0.60–$1.50 | Model nội bộ của AWS |
Điểm quan trọng: giá token qua Bedrock thường không rẻ hơn gọi trực tiếp từ nhà cung cấp gốc — lợi ích chính là tích hợp hạ tầng (billing tập trung, compliance, network riêng tư), không phải chiết khấu giá.
Azure OpenAI
Azure OpenAI cung cấp lại các model của OpenAI (GPT-4o, o-series...) qua hạ tầng Microsoft Azure, với giá về cơ bản khớp với giá OpenAI trực tiếp, cộng thêm các lợi ích enterprise: SLA riêng, private networking (VNet), compliance (HIPAA, SOC2 theo hợp đồng Azure), và khả năng đàm phán Enterprise Agreement với commitment volume.
| Model (qua Azure OpenAI) | Input ($/1M token) | Output ($/1M token) | Ghi chú |
|---|---|---|---|
| GPT-4o (qua Azure) | ~$2.50 | ~$10.00 | Khớp giá OpenAI trực tiếp |
| GPT-4o mini (qua Azure) | ~$0.15 | ~$0.60 | Khớp giá OpenAI trực tiếp |
Mẹo
- Không so sánh model chỉ dựa trên giá per-token — một model rẻ hơn 3 lần nhưng cần prompt dài gấp đôi để đạt chất lượng tương đương có thể đắt hơn về tổng chi phí thực tế.
- Với reasoning model (o-series của OpenAI, extended thinking của Claude), luôn kiểm tra usage report để biết số "thinking token" ẩn — đừng chỉ nhìn output text hiển thị.
- Nếu tổ chức đã có hợp đồng Azure hoặc AWS Enterprise Agreement, kiểm tra xem có được giảm giá qua commitment volume không — đôi khi tiết kiệm hơn cả việc chọn model rẻ nhất.
- Luôn dùng công cụ đếm token chính thức của từng provider (không dùng ước lượng chung "4 ký tự = 1 token" — sai lệch nhiều với code, JSON, hoặc ngôn ngữ có dấu như tiếng Việt).
Các Yếu Tố Ẩn Làm Tăng Chi Phí Trong Agentic Workflow
Bảng giá per-token chỉ là điểm khởi đầu. Chi phí thực tế của một AI agent trong production thường cao hơn ước tính ban đầu 3–10 lần vì bốn yếu tố sau — những thứ mà bảng giá không bao giờ thể hiện trực tiếp.
Tool Call Overhead
Mỗi khi agent gọi một tool (function calling / tool use), có ba lớp chi phí phát sinh: (1) tool schema — định nghĩa của tất cả tool khả dụng phải được gửi vào context ở mỗi lượt gọi, dù agent chỉ dùng 1 trong 10 tool đó; (2) tool call request — token dùng để model sinh ra lệnh gọi tool (tên hàm, tham số dạng JSON); (3) tool result — kết quả trả về từ tool (có thể là một đoạn JSON dài, log file, hay kết quả search) lại được đưa ngược vào context cho lượt gọi tiếp theo.
Nếu một agent có 15 tool được định nghĩa, mỗi tool schema tốn trung bình 50–150 token, tổng chi phí "cố định" mỗi lượt gọi đã là 750–2250 token — trước khi agent làm bất cứ việc gì. Với agent chạy 20 bước, riêng phần tool schema lặp lại này đã tốn 15,000–45,000 token tích lũy.
Context Accumulation Trong Agent Nhiều Bước
Đây là yếu tố gây "cost explosion" phổ biến nhất. Vì API của LLM là stateless (không lưu trạng thái), mỗi lượt gọi tiếp theo trong một agent loop phải gửi lại toàn bộ lịch sử: system prompt, tool definitions, mọi lượt hỏi-đáp trước đó, mọi tool call và tool result trước đó. Nếu bước 1 tốn 2,000 token input, bước 2 sẽ tốn khoảng 2,500–3,000 token (bước 1 + phần mới), bước 10 có thể tốn 15,000–20,000 token — chi phí tăng gần như bậc hai (quadratic) theo số bước nếu không có compaction hoặc context editing.
Ví dụ minh họa: một agent debug code chạy 25 bước, mỗi bước gọi tool đọc file (kết quả 1,000 token) — nếu không dọn context, đến bước 25 tổng input context đã tích lũy khoảng 25,000+ token chỉ từ log đọc file, và con số này được gửi lại nguyên vẹn ở bước 26.
Retry và Error Recovery
Agent thất bại — do rate limit, timeout, output không đúng format, hoặc tool trả lỗi — và logic retry tự động gọi lại request. Vấn đề: request bị lỗi vẫn thường bị tính phí một phần hoặc toàn phần (tùy provider và loại lỗi), và request retry lại tính phí đầy đủ lần nữa với cùng context (hoặc context lớn hơn nếu bạn thêm log lỗi vào để agent "học" từ lỗi trước). Một pipeline có retry logic lỏng lẻo (ví dụ retry vô hạn không có exponential backoff, hoặc retry cả những lỗi không nên retry như lỗi 400 do input sai) có thể nhân chi phí lên 2–5 lần mà không ai để ý vì log hiển thị "task completed successfully" — chỉ nhìn kết quả cuối, không nhìn số lần thử.
Streaming vs. Batch
Streaming response (nhận từng token ngay khi model sinh ra) và batch response (gửi nhiều request, nhận kết quả sau, thường trong vài giờ) có cùng chi phí per-token với hầu hết provider khi dùng API real-time thông thường — nhưng batch processing API riêng thường được giảm giá 50% (cả OpenAI, Anthropic, Google đều có Batch API với mức giảm này). Nếu agent của bạn thực hiện các tác vụ không yêu cầu phản hồi ngay (ví dụ: phân loại hàng loạt ticket hỗ trợ, tóm tắt log cuối ngày), chuyển sang Batch API là một trong những cách tối ưu chi phí dễ áp dụng nhất mà không cần đổi model hay viết lại logic agent.
Mẹo
- Đo lường effective cost per task, không chỉ cost per API call — một task hoàn thành sau 3 lần retry có chi phí gấp 3–4 lần một task hoàn thành ngay lần đầu.
- Dùng context editing hoặc compaction (nếu provider hỗ trợ) để "cắt gọt" các tool result cũ không còn cần thiết trong agent nhiều bước, tránh context tăng theo cấp số nhân.
- Giới hạn số tool đưa vào context ở mỗi lượt gọi bằng kỹ thuật tool search/tool filtering — chỉ nạp tool liên quan đến bước hiện tại thay vì toàn bộ danh sách.
- Với tác vụ không cần real-time (báo cáo cuối ngày, phân loại hàng loạt), luôn ưu tiên Batch API để hưởng mức giảm giá ~50%.
- Thiết lập giới hạn số lần retry (max retry) rõ ràng và log lại chi phí của mỗi lần retry để phát hiện sớm các workflow "đốt tiền" âm thầm.
Các Mô Hình Định Giá: Per-Token vs. Subscription vs. API Credits
Ngoài việc trả tiền theo từng token sử dụng (pay-as-you-go), các nhà cung cấp còn có nhiều mô hình định giá khác phù hợp với từng giai đoạn phát triển — từ prototype cá nhân đến enterprise scale. Hiểu rõ sự khác biệt giúp team chọn đúng mô hình cho từng giai đoạn, tránh vừa trả tiền oan cho subscription không dùng hết, vừa tránh bị bất ngờ bởi hóa đơn pay-as-you-go không kiểm soát.
OpenAI API Credits
OpenAI API hoạt động theo mô hình prepaid credit hoặc postpaid billing tùy tier tài khoản. Tài khoản mới thường phải nạp credit trước (prepaid), sau khi đạt lịch sử sử dụng và thanh toán ổn định có thể được chuyển lên tier postpaid với hạn mức (rate limit) cao hơn. Lưu ý: đây khác với ChatGPT Plus/Team/Enterprise (subscription cố định hàng tháng cho ứng dụng chat) — API credit là riêng biệt, tính theo usage thực tế, không giới hạn bởi subscription của ChatGPT.
Anthropic API Credits
Tương tự OpenAI, Claude API (qua Anthropic Console) dùng mô hình nạp credit trước, tính phí theo token thực tế sử dụng. Anthropic cũng có gói Claude Pro/Max (subscription cho ứng dụng chat claude.ai) và Claude Code — đây là các sản phẩm subscription riêng, tách biệt hoàn toàn khỏi API credit dùng để build agent. Một sai lầm phổ biến của product manager mới là nhầm lẫn hai mô hình này khi lập budget — subscription Claude Pro không cấp quyền truy cập API để tích hợp vào hệ thống agent của công ty.
Google AI Studio (Free Tier)
Google AI Studio cung cấp free tier khá rộng rãi cho Gemini API — phù hợp để prototype, thử nghiệm ý tưởng, hoặc học tập trước khi cam kết ngân sách. Free tier thường có giới hạn về request per minute (RPM) và token per minute (TPM), và dữ liệu gửi qua free tier có thể được Google sử dụng để cải thiện model (khác với tier trả phí, nơi dữ liệu không được dùng để training theo mặc định) — đây là điểm cực kỳ quan trọng với dữ liệu nhạy cảm hoặc thuộc sở hữu khách hàng, cần đọc kỹ chính sách dữ liệu trước khi dùng free tier cho bất kỳ dữ liệu production hoặc dữ liệu khách hàng.
AWS Bedrock Free Tier
AWS Bedrock không có "free tier" per-token theo nghĩa gọi API miễn phí liên tục, nhưng AWS thường cung cấp credit dùng thử (qua AWS Activate cho startup, hoặc chương trình khuyến mãi) áp dụng được cho Bedrock. Ngoài ra, một số model qua Bedrock (đặc biệt Amazon Titan) có thể có gói thử nghiệm giới hạn. Với agent đang trong giai đoạn POC (proof of concept), việc tận dụng AWS credit sẵn có (nếu công ty đã dùng AWS cho hạ tầng khác) là cách hiệu quả để giảm chi phí ban đầu.
Azure OpenAI Enterprise Agreements
Đây là mô hình khác biệt rõ nhất so với ba mô hình trên: Azure OpenAI hướng đến khách hàng enterprise với Enterprise Agreement (EA) — cam kết chi tiêu (commitment) trong 1–3 năm để đổi lấy giá chiết khấu, hạn mức throughput riêng (Provisioned Throughput Units — PTU, đảm bảo latency và capacity cố định thay vì chia sẻ với người dùng khác), và các điều khoản compliance/pháp lý phù hợp với ngành tài chính, y tế, chính phủ. Mô hình này phù hợp khi agent đã vào production ổn định với volume lớn và dự đoán được, không phù hợp cho giai đoạn thử nghiệm.
Mẹo
- Prototype và POC nên dùng free tier hoặc pay-as-you-go trước, không nên đàm phán Enterprise Agreement khi chưa biết volume thực tế sẽ dùng bao nhiêu.
- Luôn kiểm tra chính sách dữ liệu (data usage policy) của free tier trước khi gửi bất kỳ dữ liệu khách hàng hoặc dữ liệu nhạy cảm nào — nhiều free tier cho phép provider dùng dữ liệu để training.
- Đừng nhầm subscription ứng dụng chat (ChatGPT Plus, Claude Pro) với API credit — hai hệ thống billing hoàn toàn tách biệt.
- Khi agent chuyển từ POC sang production với volume ổn định, đánh giá lại xem Provisioned Throughput (Azure) hoặc reserved capacity có tiết kiệm hơn pay-as-you-go không — thường có điểm hòa vốn (break-even) rõ ràng theo volume hàng tháng.
Xây Dựng Mô Hình Ước Tính Chi Phí
Phần lý thuyết ở trên chỉ có giá trị khi được chuyển hóa thành một công cụ thực tế: một cost estimation model giúp team dự đoán chi phí trước khi triển khai agent ra production, và giám sát chi phí thực tế sau đó để phát hiện lệch pha (drift) sớm.
Dưới đây là một ví dụ Python đơn giản nhưng đủ chi tiết để dùng làm điểm khởi đầu cho một cost calculator thực tế — có thể mở rộng thêm cho từng model, batch discount, và caching discount.
"""
token_cost_estimator.py
A minimal, extensible cost estimator for LLM-based agent workflows.
Prices below are illustrative placeholders — always pull current
pricing from the provider's official pricing page before using this
for real budget decisions.
"""
from dataclasses import dataclass
from enum import Enum
class Provider(Enum):
OPENAI = "openai"
ANTHROPIC = "anthropic"
GOOGLE = "google"
@dataclass(frozen=True)
class ModelPricing:
"""Price is expressed in USD per 1,000,000 tokens."""
name: str
provider: Provider
input_price_per_million: float
output_price_per_million: float
# Discount multiplier applied to input tokens served from cache
# (e.g. Anthropic prompt caching ~0.1x, i.e. 90% off cached reads)
cache_read_discount: float = 1.0
# Discount multiplier for batch (non-real-time) processing
batch_discount: float = 1.0
PRICING_CATALOG = {
"gpt-4o": ModelPricing(
name="gpt-4o", provider=Provider.OPENAI,
input_price_per_million=2.50, output_price_per_million=10.00,
batch_discount=0.5,
),
"claude-sonnet": ModelPricing(
name="claude-sonnet", provider=Provider.ANTHROPIC,
input_price_per_million=3.00, output_price_per_million=15.00,
cache_read_discount=0.1, batch_discount=0.5,
),
"gemini-flash": ModelPricing(
name="gemini-flash", provider=Provider.GOOGLE,
input_price_per_million=0.075, output_price_per_million=0.30,
batch_discount=0.5,
),
}
@dataclass
class AgentStepUsage:
"""Token usage for a single step in an agentic loop."""
input_tokens: int
output_tokens: int
cached_input_tokens: int = 0 # subset of input_tokens served from cache
is_batch: bool = False
def estimate_step_cost(model_key: str, usage: AgentStepUsage) -> float:
"""Estimate the USD cost of a single agent step."""
pricing = PRICING_CATALOG[model_key]
# Tokens actually charged at full input price (not served from cache)
fresh_input_tokens = usage.input_tokens - usage.cached_input_tokens
input_cost = (
fresh_input_tokens * pricing.input_price_per_million
+ usage.cached_input_tokens
* pricing.input_price_per_million
* pricing.cache_read_discount
) / 1_000_000
output_cost = (
usage.output_tokens * pricing.output_price_per_million
) / 1_000_000
total_cost = input_cost + output_cost
if usage.is_batch:
total_cost *= pricing.batch_discount
return total_cost
def estimate_agent_run_cost(
model_key: str, steps: list[AgentStepUsage]
) -> dict:
"""Estimate total cost across an entire multi-step agent run,
plus a per-step breakdown useful for spotting context-accumulation
cost explosions.
"""
step_costs = [estimate_step_cost(model_key, step) for step in steps]
return {
"total_cost_usd": round(sum(step_costs), 6),
"num_steps": len(steps),
"avg_cost_per_step_usd": round(sum(step_costs) / len(steps), 6)
if steps else 0.0,
"step_costs_usd": [round(c, 6) for c in step_costs],
}
if __name__ == "__main__":
# Simulate a 10-step debugging agent where context accumulates:
# each step re-sends the growing conversation history (input_tokens
# grows), plus a fresh tool result (output_tokens stays roughly flat).
simulated_steps = []
running_context = 1_500 # starting system prompt + task description
for step_index in range(10):
running_context += 900 # prior step's tool result gets re-sent
simulated_steps.append(
AgentStepUsage(
input_tokens=running_context,
output_tokens=250,
cached_input_tokens=1_500, # static system prompt is cached
)
)
result = estimate_agent_run_cost("claude-sonnet", simulated_steps)
print(f"Total cost for a 10-step agent run: ${result['total_cost_usd']}")
print(f"Average cost per step: ${result['avg_cost_per_step_usd']}")
print("Per-step cost (watch it climb as context accumulates):")
for i, cost in enumerate(result["step_costs_usd"], start=1):
print(f" Step {i}: ${cost}")
Chạy script này cho thấy rõ điều đã nói ở phần trước: chi phí mỗi bước tăng dần khi context tích lũy, dù output token gần như không đổi. Đây chính là dữ liệu cần đưa vào dashboard giám sát chi phí (sẽ được nói chi tiết ở topic về Cost Monitoring & Alerting trong module này) — nếu đường cost-per-step tăng tuyến tính hoặc theo cấp số nhân qua nhiều lần chạy thực tế, đó là dấu hiệu cần áp dụng context editing hoặc compaction ngay.
Để mô hình này thực sự hữu ích trong production, hãy mở rộng theo ba hướng: (1) nạp dữ liệu usage thật từ response usage object của API (mọi provider đều trả về input_tokens, output_tokens, và các field liên quan đến cache) thay vì số giả định; (2) tự động cập nhật PRICING_CATALOG từ một config file hoặc API giá (nếu provider có) để không phải sửa code mỗi khi giá thay đổi; (3) gắn thêm nhãn "outcome" (task hoàn thành / thất bại / cần retry) vào mỗi run để tính được chỉ số quan trọng nhất: cost per successful outcome, không chỉ cost per token.
Mẹo
- Luôn xây model ước tính trước khi launch feature mới dùng agent, không phải sau khi nhận hóa đơn — dùng nó trong buổi review thiết kế (design review) để so sánh phương án.
- Đưa
cache_read_discountvàbatch_discountvào model từ đầu — nhiều team quên tính đến các discount này và ước tính chi phí cao hơn thực tế 2–3 lần, dẫn đến việc từ chối feature khả thi. - Log lại usage thật (từ response
usageobject) cho mỗi lần gọi agent trong production, so sánh với ước tính — sai lệch lớn (>20%) là dấu hiệu model ước tính cần cập nhật hoặc agent có hành vi bất thường. - Chia sẻ model ước tính chi phí này với product manager dưới dạng bảng tính đơn giản (spreadsheet) — không phải ai cũng đọc code Python, nhưng ai cũng cần hiểu số tiền.
Tổng Kết
Token pricing không đơn giản là "giá per-token nhân với số token" — đó là một hệ thống nhiều lớp gồm input/output pricing lệch nhau, context window tích lũy theo mỗi bước agent, các discount ẩn (caching, batch) có thể thay đổi effective cost tới vài lần, và các mô hình thanh toán khác nhau (pay-as-you-go, subscription, enterprise agreement) phù hợp với từng giai đoạn của sản phẩm.
Những điểm cốt lõi cần nhớ: (1) luôn tách input và output token khi tính toán, vì tỷ lệ giá giữa chúng có thể lệch 3–5 lần; (2) agentic workflow có xu hướng "cost explosion" do context accumulation và tool call overhead — đây là rủi ro chi phí lớn nhất mà bảng giá per-token không thể hiện trực tiếp; (3) tận dụng prompt caching và batch processing có thể giảm effective cost 50–90% mà không cần đổi model; (4) chọn đúng mô hình thanh toán (free tier cho POC, pay-as-you-go cho giai đoạn tăng trưởng, enterprise agreement cho production ổn định) tiết kiệm được nhiều hơn việc chọn model rẻ nhất; và (5) xây dựng cost estimation model của riêng team, cập nhật liên tục với giá thực tế, là công cụ bắt buộc — không phải "nice to have" — cho bất kỳ tổ chức nào triển khai AI agent ở quy mô production.
Ở các bài tiếp theo trong module này, chúng ta sẽ đi sâu vào cách chọn model như một bài toán tối ưu hóa (model selection), cách thiết lập budget và guardrail để tránh vượt chi phí, cách giám sát và cảnh báo chi phí theo thời gian thực, và cách phân tích ROI của một agent để biết khi nào nó thực sự đáng đầu tư.