AI cho người mớiHướng dẫn
Tại sao AI agent dùng quá nhiều token (ví dụ 20 bước)
Một AI agent gửi lại lịch sử, danh sách công cụ và đầu ra công cụ ở mỗi bước. Xem token đi đâu, với ví dụ 20 bước được tính toán.

Trên trang này
Bạn hỏi một agent một câu hỏi, nó chạy trong vài phút, và trang sử dụng hiển thị hàng trăm nghìn token. Không có gì hỏng cả. Một agent là một vòng lặp, và mỗi lượt của vòng lặp gửi lại mọi thứ đã nói cho đến lúc đó (danh sách công cụ, lịch sử, bất cứ thứ gì công cụ trả về) dưới dạng token đầu vào. Câu trả lời nó viết ra thì rất nhỏ. Những gì nó đọc lại lặp đi lặp lại thì không.
Agent là gì, trong một bức tranh#
Một mô hình chat trả lời một lần. Một agent là cùng mô hình đó bên trong một vòng lặp với các công cụ: đọc một tệp, tìm kiếm trên web, chạy một lệnh. Và mô hình không nhớ gì giữa các lần gọi. Hãy hình dung một trợ lý quên hết mọi thứ mỗi khi họ cúp máy: mỗi lần họ gọi lại, bạn đọc lại ghi chú từ đầu, rồi thêm một dòng. Đó là cách API hoạt động.
Tài liệu về sử dụng công cụ của Anthropic (kiểm tra ngày 26 tháng 10 năm 2026) mô tả vòng lặp như sau:
- Ứng dụng của bạn gửi tin nhắn người dùng và danh sách công cụ.
- Mô hình trả lời bằng
stop_và một khốireason: "tool_ use" tool_use: công cụ nào, với đối số nào. - Ứng dụng của bạn chạy công cụ và gửi yêu cầu thứ hai. Nó chứa các tin nhắn trước đó, lệnh gọi công cụ của mô hình, một khối
tool_resultvà cùng danh sách công cụ. - Mô hình trả lời, hoặc yêu cầu một công cụ khác, và vòng lặp lại tiếp diễn.
Cùng trang đó nói rằng các yêu cầu sử dụng công cụ được tính phí dựa trên tổng đầu vào được gửi, bao gồm cả tham số tools, cộng với đầu ra. Vì vậy bước 3 không bao giờ là "chỉ phần mới": nó là toàn bộ cuộc hội thoại một lần nữa.
Request 1 tools + system + task
Request 2 tools + system + task + call 1 + result 1
Request 3 tools + system + task + call 1 + result 1 + call 2 + result 2
...Đó là cùng cơ chế như trong tại sao một cuộc trò chuyện dài tốn kém hơn, chỉ nhanh hơn. Một cuộc trò chuyện tăng thêm một tin nhắn khi bạn gõ. Một agent tăng thêm hai khối ở mỗi bước, và không ai gõ gì cả.
Ba thứ đi kèm ở mỗi bước#
Danh sách công cụ. Tên, mô tả và lược đồ tham số của mọi công cụ đi vào mọi yêu cầu, ngay cả khi mô hình không dùng cái nào trong lượt này. Tài liệu bổ sung một chút: khi bật công cụ, API thêm lời nhắc sử dụng công cụ của riêng nó, 286 token trên Claude Sonnet 5.5, Opus 5.5 và Haiku 5.5, và các mô hình khác có số lượng khác.
Lịch sử. Nhiệm vụ của bạn, các lệnh gọi công cụ trước đó của mô hình, ghi chú của nó.
Đầu ra công cụ. Đây là thứ âm thầm. Một tệp agent đã đọc, một trang kết quả tìm kiếm, một nhật ký kiểm thử: một khi nó nằm trong lịch sử, nó lại bị tính phí ở mọi bước sau.
Một token là một mẩu văn bản nhỏ, đại khái là một từ ngắn hoặc một phần của từ, và mỗi trong ba thứ này đều được đếm bằng chúng.
Một lần chạy 20 bước, được đếm#
Giả sử bạn chạy một agent lập trình nhỏ với ba công cụ (đọc tệp, tìm kiếm, chạy kiểm thử) và giao cho nó một nhiệm vụ mất 20 bước. Lấy các giả định sau:
- định nghĩa công cụ: 1.500 token, lời nhắc hệ thống: 500, nhiệm vụ của bạn: 200, vậy mỗi yêu cầu bắt đầu ở 2.200 token;
- ở mỗi bước mô hình viết một lệnh gọi công cụ 150 token, và công cụ trả về 800 token;
- cả hai đều tham gia vào lịch sử, vậy mỗi bước thêm 950 token vào yêu cầu tiếp theo.

Để có tổng của lần chạy, hãy cộng tất cả 20 yêu cầu. Phần cơ sở 2.200 được gửi 20 lần, và các vòng được chuyển tiếp bởi các bước sau: bước 1 không mang theo vòng nào, bước 2 một vòng, và cứ thế đến 19, tổng cộng là 190 vòng.
20 × 2.200 = 44.000
950 × 190 = 180.500
44.000 + 180.500 = 224.500 token đầu vào, và 20 × 150 = 3.000 token đầu ra.
Agent đã viết 3.000 token và đọc 224.500. Token đầu ra có giá mỗi cái cao hơn token đầu vào (xem token đầu vào so với đầu ra), nhưng chúng ít đến mức phía đầu vào vẫn quyết định hóa đơn. Đây là lần chạy đó theo giá hiện tại:
| Mô hình | Đầu vào $/1M | Đầu ra $/1M | Chi phí | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0046 | $0.0095 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0037 | $0.0111 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0117 | $0.071 |
Tổng cộng 224.500 token đầu vào và 3.000 token đầu ra. Giá trên 1 triệu token là giá hiện hành và thay đổi cùng với biểu phí của chúng tôi; cột OpenRouter hiển thị giá tham chiếu cho cùng khối lượng công việc.
Trên DeepSeek-V4-Flash một lần chạy như vậy tốn $0.0037, trên GLM-5.3-Flash là $0.0046. Một trăm lần chạy là 22.450.000 đầu vào và 300.000 token đầu ra: $0.367 trên DeepSeek-V4-Flash. Bảng ở trên tính cả đầu vào và đầu ra cùng nhau, và tổng thể các mô hình ở đó rẻ hơn OpenRouter.
Số bước quan trọng hơn vẻ ngoài của nó. Một lần chạy 5 bước với cùng các giả định:
5 × 2.200 = 11.000
950 × 10 = 9.500
11.000 + 9.500 = 20.500 token đầu vào. Gấp bốn lần số bước cho khoảng mười một lần đầu vào, vì mỗi bước mới cũng đọc lại tất cả các bước cũ.
Cắt ở đâu: bốn thói quen#
Một kết quả công cụ là nơi dễ tiết kiệm nhất. Giả sử một lần chạy kiểm thử ở bước 3 trả về một nhật ký 4.000 token. Nó sau đó được gửi lại bởi 17 yêu cầu tiếp theo:
- trước: 4.000 × 17 = 68.000 token đầu vào bị mang theo bởi một nhật ký đó;
- sau, nếu công cụ chỉ trả về 40 dòng liên quan (khoảng 400 token): 400 × 17 = 6.800.
Cùng nhiệm vụ, cùng câu trả lời, một phần mười đầu vào từ một kết quả đó. Điều đó cho ta bốn thói quen:
- Trả về ít hơn từ công cụ. Các dòng quanh lỗi, không phải toàn bộ nhật ký; hàm, không phải toàn bộ tệp. Có một bài viết dài hơn ở giữ đầu ra công cụ ngoài ngữ cảnh.
- Cho agent ít công cụ hơn. Mỗi định nghĩa đi kèm mọi yêu cầu.
- Giới hạn số bước và bắt đầu một nhiệm vụ mới khi lịch sử cũ không còn quan trọng.
- Cộng dồn mức sử dụng của mọi bước, và dừng lần chạy ở một ngân sách bạn đã chọn trước. Về phía ước tính, xem cách ước tính chi phí của một AI agent.
Đếm lần chạy của chính bạn#
Mỗi phản hồi báo cáo số token nó nhận vào và đưa ra, trong trường usage của nó. Cộng chúng qua tất cả các bước và bạn có số thực cho agent của mình thay vì các giả định của tôi. Một bản phác thảo với OpenAI Python SDK trỏ đến CheapTokens (messages và tools là của chính agent của bạn):
from openai import OpenAI
client = OpenAI(base_url="https://api.cheaptokens.dev/v1", api_key="YOUR_API_KEY")
total_in = total_out = 0
for step in range(20): # your agent loop
resp = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
messages=messages,
tools=tools,
)
total_in += resp.usage.prompt_tokens
total_out += resp.usage.completion_tokens
# ...run the tool, append the result to messages
print(total_in, total_out)Hai tổng số này khớp thẳng vào bảng chi phí ở trên. Với lịch sử dài như thế này, DeepSeek-V4-Flash cho bạn cửa sổ ngữ cảnh 380K và tối đa 32.768 token đầu ra mỗi câu trả lời, với một mức giá vào bất kỳ giờ nào; GLM-5.3-Flash có ngữ cảnh 390K và tối đa 8.192 token đầu ra. Cách thiết lập có trong tài liệu, giá hiện tại của mọi mô hình ở trên trang giá, và mô hình có trang riêng của nó, DeepSeek giá rẻ.



