Quay lại blog

Tối ưu chi phíPhân tích

Cách ước tính chi phí của một AI agent

Vì sao hóa đơn của agent bị chi phối bởi token đầu vào, một công thức bạn có thể chạy trước khi agent thực hiện, một ví dụ cụ thể 30 bước và bảy cách cắt giảm chi phí.

Bởi CheapTokens TeamĐã xuất bản 5 phút đọc

Biểu đồ token đầu vào tăng dần theo từng bước trong một phiên agent, bên cạnh công thức chi phí
Trên trang này
  1. Công thức
  2. Vì sao agent nặng về đầu vào
  3. Một ví dụ cụ thể
  4. Ước tính bằng code
  5. Đo thay vì đoán
  6. Bảy cách cắt giảm chi phí

Một AI agent không chỉ thực hiện một yêu cầu — nó thực hiện hàng chục yêu cầu, và mỗi bước lại gửi lại toàn bộ cuộc hội thoại đang lớn dần. Đó là lý do hóa đơn của agent bị chi phối bởi token đầu vào, và lý do trực giác "giá mỗi câu trả lời" từ các ứng dụng chat không còn đúng. Dưới đây là cách ước tính chi phí trước khi agent chạy, và tiền thực sự đi đâu.

Công thức#

Chi phí của một yêu cầu là số token đầu vào nhân với giá đầu vào cộng số token đầu ra nhân với giá đầu ra. Giá được tính trên mỗi triệu token:

text
request_cost = input_tokens / 1,000,000 × input_price
             + output_tokens / 1,000,000 × output_price

Chi phí của một tác vụ là tổng trên tất cả các yêu cầu mà agent thực hiện trong quá trình giải quyết tác vụ đó.

Vì sao agent nặng về đầu vào#

Ở mỗi bước, agent gửi cho model:

  • system prompt và các định nghĩa công cụ;
  • toàn bộ lịch sử tính đến thời điểm đó — các tin nhắn trước, các câu trả lời trước của model và kết quả công cụ (nội dung tệp, đầu ra lệnh, kết quả tìm kiếm);
  • chỉ thị mới.

Model thường trả lời bằng một tin nhắn ngắn hoặc một lệnh gọi công cụ. Sau đó kết quả công cụ được thêm vào lịch sử và bước tiếp theo lại gửi tất cả một lần nữa. Vì vậy đầu vào của mỗi bước tăng lên, trong khi đầu ra vẫn nhỏ.

Một ví dụ cụ thể#

Điều kiện (các giả định — hãy thay chúng bằng số liệu từ agent của bạn):

  • system prompt và các định nghĩa công cụ: 6.000 token;
  • mỗi bước thêm 1.500 token kết quả công cụ và 500 token đầu ra của model vào lịch sử;
  • tác vụ mất 30 bước;
  • model: DeepSeek-V4-Flash với $0.0221 mỗi 1M token đầu vào và $0.10 mỗi 1M token đầu ra (giá hiện tại).

Đầu vào của bước n là 6.000 + (n − 1) × 2.000 token. Qua 30 bước:

  • tổng đầu vào: 30 × 6.000 + 2.000 × (0 + 1 + … + 29) = 180.000 + 870.000 = 1.050.000 token;
  • tổng đầu ra: 30 × 500 = 15.000 token;
  • chi phí: 1,05 × $0.0221 + 0,015 × $0.10 ≈ $0.0247 mỗi tác vụ.

Đầu vào chiếm 98,6% số token và gần như toàn bộ chi phí. Mức độ chi phối của đầu vào phụ thuộc vào tình huống: câu trả lời dài, tệp được tạo và các model suy luận làm tăng tỷ trọng đầu ra, trong khi lịch sử được cắt gọn và đầu ra công cụ ngắn làm giảm tỷ trọng đầu vào.

Cùng tác vụ đó trên mọi model với giá hiện tại, kèm giá tham chiếu của OpenRouter để so sánh:

Mô hình Chi phí OpenRouter
GLM-5.3-Flash $0.0296 $0.0534
DeepSeek-V4-Flash $0.0247 $0.0264
MiniMax-M2.7 $0.0548 $0.333

Tổng cộng 1.050.000 token đầu vào và 15.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.

Ước tính bằng code#

Phép tính tương tự dưới dạng một hàm — hãy thay các giả định và giá:

python
def estimate(steps, base_tokens, tool_tokens, out_tokens, price_in, price_out):
    """Token totals and cost of one agent task. Prices: $ per 1M tokens."""
    grow = tool_tokens + out_tokens            # what each step adds to the history
    total_in = steps * base_tokens + grow * steps * (steps - 1) // 2
    total_out = steps * out_tokens
    cost = (total_in * price_in + total_out * price_out) / 1_000_000
    return total_in, total_out, round(cost, 5)

# example rates, $ per 1M tokens — put in the current ones from the pricing table below
print(estimate(30, 6_000, 1_500, 500, price_in=0.10, price_out=0.40))
# (1050000, 15000, 0.111)

Lưu ý số hạng bậc hai: tăng gấp đôi số bước thì đầu vào tăng khoảng gấp bốn. Các phiên dài trở nên tốn kém không phải vì bất kỳ bước đơn lẻ nào, mà vì mỗi bước đều mang theo toàn bộ lịch sử.

Đo thay vì đoán#

Mỗi phản hồi đều bao gồm usage.prompt_tokens (đầu vào) và usage.completion_tokens (đầu ra). Hãy ghi log chúng cho từng bước của một tác vụ thực tế, nhân với mức giá hiện tại, và bạn có chi phí thực tế. Bảng điều khiển cũng hiển thị mức sử dụng theo model và theo ngày.

Mức giá hiện tại — cùng dữ liệu như trên trang giá:

Mô hình Ngữ cảnh Đầu vào $/1M Đầu ra $/1M OpenRouter vào OpenRouter ra
GLM-5.3-Flash reasoning 390K $0.027 $0.08 $0.048 $0.20
DeepSeek-V4-Flash 380K $0.0221 $0.10 $0.016 $0.64
MiniMax-M2.7 200K $0.05 $0.15 $0.30 $1.20

Giá tính bằng USD cho mỗi 1 triệu token. Các số liệu của OpenRouter được hiển thị để so sánh và có thể thay đổi.

Bảy cách cắt giảm chi phí#

  1. Bắt đầu tác vụ mới cho công việc không liên quan. Một phiên mới không mang theo lịch sử của phiên trước.
  2. Đưa cho agent các đoạn mã, không phải toàn bộ tệp. Một hàm và các nơi gọi nó thay vì một module 3.000 dòng.
  3. Cắt gọn đầu ra công cụ. Log dài và đầu ra lệnh vẫn nằm trong lịch sử suốt phần còn lại của phiên — hãy giới hạn chúng, ví dụ bằng | tail -n 50.
  4. Tóm tắt các phiên dài. Nhiều agent có thể nén lịch sử; hãy dùng nó trước khi ngữ cảnh trở nên dài.
  5. Giới hạn độ dài câu trả lời bằng max_tokens ở những nơi không cần câu trả lời dài.
  6. Dùng đúng model cho từng bước. Các bước thường ngày không cần model suy luận.
  7. Duy trì ngân sách trả trước. Số dư là trả trước: khi hết, các yêu cầu dừng lại với HTTP 402 thay vì phát sinh hóa đơn không giới hạn.

Để xem cùng khối lượng công việc đó so sánh giữa các model và với OpenRouter như thế nào, hãy dùng phần so sánh chi phí trên trang chủ.