So sánh chi phí AI API: OpenAI vs Claude vs Gemini — Kinh nghiệm 6 tháng production

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

Ba approach pricing hoàn toàn khác nhau

Hồi mới tích hợp AI API, mình cứ nghĩ so giá input/output token là đủ. Sai. Sau 6 tháng chạy cả ba platform trên production — chatbot nội bộ, pipeline xử lý hàng nghìn document mỗi ngày, công cụ sinh content tự động — mình nhận ra mỗi provider có chiến lược pricing riêng biệt. Không nắm được điều này, bạn sẽ giật mình khi mở hóa đơn cuối tháng.

OpenAI: Tiered pricing, nhiều model để chọn

OpenAI có danh mục model phong phú nhất — từ GPT-3.5-turbo rẻ đến o1 đắt. Điểm khác biệt thực sự là Batch API: giảm thẳng 50% chi phí cho workload không cần response real-time. Mình hay dùng cách này để xử lý document bulk qua đêm. Một pipeline 50,000 request chạy lúc 2 giờ sáng, sáng ra lấy kết quả — tiết kiệm được $30–40 so với gọi đồng bộ ban ngày.

Claude: Context window dài + Prompt Caching

Anthropic nhắm vào use case xử lý document dài với context 200K token. Tính năng Prompt Caching ban đầu mình không để ý — nhưng hóa ra quan trọng hơn tưởng. Phần system prompt được cache chỉ tính 10% giá input thông thường. Với chatbot có system prompt ~3,000 token gọi vài nghìn lần mỗi ngày, khoản tiết kiệm cộng dồn rất nhanh — đặc biệt khi dùng Sonnet với $3/1M input token.

Gemini: Free tier + Flash cực rẻ

Google cạnh tranh bằng Gemini Flash giá rất thấp và context window 1 triệu token. Nhiều developer bỏ qua lợi thế này vì chưa thử. Với tác vụ đơn giản như classification, extraction, summarization — Flash trả kết quả thường dưới 1 giây và rẻ hơn tất cả model cùng cấp một cách rõ rệt.

Bảng so sánh giá và thực tế sử dụng

Bảng dưới tổng hợp giá USD/1M token mình thu thập trong quá trình sử dụng. Lưu ý: giá AI API thay đổi liên tục — kiểm tra trang pricing chính thức trước khi tính budget thực tế cho dự án.

Model Input ($/1M tokens) Output ($/1M tokens) Context Window
GPT-4o $2.50 $10.00 128K
GPT-4o mini $0.15 $0.60 128K
Claude 3.5 Sonnet $3.00 $15.00 200K
Claude 3.5 Haiku $0.80 $4.00 200K
Gemini 1.5 Pro $3.50 $10.50 1M
Gemini 1.5 Flash $0.075 $0.30 1M

Gemini Flash rẻ hơn GPT-4o mini khoảng 2x cả input lẫn output. Nhưng giá không phải yếu tố duy nhất — chất lượng output và mức độ phù hợp với từng task cụ thể mới là thứ quyết định.

Tính toán chi phí nhanh bằng Python

Script này mình dùng để estimate trước khi chọn model cho pipeline mới:

def estimate_cost(input_tokens: int, output_tokens: int, model: str) -> float:
    """Tính chi phí ước tính cho một API call (USD)"""
    pricing = {
        "gpt-4o":           {"input": 2.50,  "output": 10.00},
        "gpt-4o-mini":      {"input": 0.15,  "output": 0.60},
        "claude-3-5-sonnet":{"input": 3.00,  "output": 15.00},
        "claude-3-5-haiku": {"input": 0.80,  "output": 4.00},
        "gemini-1.5-flash": {"input": 0.075, "output": 0.30},
        "gemini-1.5-pro":   {"input": 3.50,  "output": 10.50},
    }
    rates = pricing[model]
    return (input_tokens / 1_000_000 * rates["input"] +
            output_tokens / 1_000_000 * rates["output"])

# Ví dụ: document 5000 tokens input, response 1000 tokens
for model in ["gpt-4o-mini", "claude-3-5-haiku", "gemini-1.5-flash"]:
    cost = estimate_cost(5000, 1000, model)
    print(f"{model:25s}: ${cost:.6f}")
gpt-4o-mini              : $0.001350
claude-3-5-haiku         : $0.008000
gemini-1.5-flash         : $0.000675

Cùng task đó, Gemini Flash rẻ gấp 12 lần Claude Haiku và 2 lần GPT-4o mini. Nhân với 100,000 request/tháng, chênh lệch chi phí lên tới vài trăm đô.

Phân tích ưu nhược từng provider

OpenAI — Ecosystem tốt nhất, giá hợp lý

  • Mạnh: Python/JS SDK chín muồi nhất, function calling ổn định, Batch API giảm 50% cho async job, fine-tuning có sẵn
  • Yếu: Không có free tier thực sự cho production; GPT-4o không phải rẻ nhất trong nhóm high-capability
  • Phù hợp: Chatbot production cần độ ổn định cao, team đã quen OpenAI SDK, hoặc cần nhiều tool integration có sẵn

Claude — Output chất lượng cao, xử lý document dài

  • Mạnh: Text output tự nhiên nhất trong 3 provider theo trải nghiệm cá nhân; Prompt Caching tiết kiệm rõ rệt với system prompt dài; context 200K lý tưởng cho code review và document analysis
  • Yếu: Output price của Sonnet ($15/1M) đắt nhất nhóm; không có Batch API discount như OpenAI
  • Phù hợp: Content generation, code review, document Q&A, chatbot với system prompt phức tạp cần caching

Gemini — Rẻ nhất, context window khổng lồ

  • Mạnh: Flash rẻ nhất trong nhóm; context 1M token cho phép nhét cả codebase vào 1 request; free tier đủ dùng cho dev/testing
  • Yếu: SDK chưa polish bằng OpenAI; task phức tạp đôi khi output thiếu nhất quán hơn GPT-4o hay Claude Sonnet
  • Phù hợp: Classification, extraction, summarization volume lớn; xử lý file/video dài; dự án ưu tiên tiết kiệm chi phí

Chọn AI API nào phù hợp?

Sau nhiều lần thử sai, mình rút ra một framework đơn giản: chọn theo loại task trước, budget sau.

Theo loại task

  • Đơn giản, volume cao (classification, tagging, extraction): Gemini Flash
  • Phức tạp, cần reasoning (code generation, complex Q&A): Claude 3.5 Sonnet hoặc GPT-4o
  • Chatbot với context dài, system prompt cố định: Claude với Prompt Caching
  • Xử lý file cực dài (100K+ tokens): Gemini 1.5 Pro (context window 1M)
  • Async bulk processing không cần real-time: OpenAI Batch API (50% discount)

Theo budget

  • MVP / side project: Gemini Flash + free tier để test, scale dần khi cần
  • Production vừa phải: GPT-4o mini — sweet spot giữa giá và chất lượng cho 80% use case
  • Cần chất lượng cao nhất: Claude 3.5 Sonnet hoặc GPT-4o, nhưng chỉ cho task thực sự cần đến

Tháng đầu mình dùng Claude Sonnet cho tất cả mọi thứ và nhận hóa đơn $340 — phần lớn là task classification đơn giản không cần model đắt đến vậy. Sau khi chuyển sang model routing (task đơn giản dùng Flash/Haiku, task phức tạp mới lên Sonnet), chi phí giảm còn ~$90/tháng với cùng throughput. Chênh lệch $250/tháng, chỉ từ việc routing đúng task.

Hướng dẫn triển khai: Tracking chi phí thực tế

Log chi phí từng request là bước không thể bỏ qua khi deploy AI API lên production. May là tất cả provider đều trả usage data trong response — chỉ cần đọc đúng field.

Đọc usage data từ từng provider

# --- OpenAI ---
from openai import OpenAI
client = OpenAI(api_key="YOUR_KEY")
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Tóm tắt: ..."}]
)
usage = response.usage
print(f"Input: {usage.prompt_tokens}, Output: {usage.completion_tokens}")

# --- Anthropic Claude ---
import anthropic
client = anthropic.Anthropic(api_key="YOUR_KEY")
response = client.messages.create(
    model="claude-3-5-haiku-20241022",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Phân tích code: ..."}]
)
print(f"Input: {response.usage.input_tokens}, Output: {response.usage.output_tokens}")

# --- Google Gemini ---
import google.generativeai as genai
genai.configure(api_key="YOUR_KEY")
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Classify: ...")
meta = response.usage_metadata
print(f"Input: {meta.prompt_token_count}, Output: {meta.candidates_token_count}")

Cost tracker đơn giản để monitor theo thời gian

import json
from datetime import datetime
from pathlib import Path

COST_LOG = Path("api_costs.jsonl")

def log_cost(provider: str, model: str, task: str,
             input_tokens: int, output_tokens: int, cost_usd: float):
    entry = {
        "ts": datetime.now().isoformat(),
        "provider": provider, "model": model, "task": task,
        "input": input_tokens, "output": output_tokens, "cost": cost_usd
    }
    with open(COST_LOG, "a") as f:
        f.write(json.dumps(entry) + "\n")

def get_summary() -> dict:
    summary = {}
    if not COST_LOG.exists():
        return summary
    with open(COST_LOG) as f:
        for line in f:
            e = json.loads(line)
            summary[e["provider"]] = summary.get(e["provider"], 0) + e["cost"]
    return {k: round(v, 4) for k, v in summary.items()}

# Xem tổng chi phí theo provider
print(get_summary())
# {'openai': 12.34, 'anthropic': 34.56, 'google': 5.12}

Có log này rồi, bạn sẽ thấy ngay task nào đang ngốn budget không cần thiết và dễ dàng chuyển sang model rẻ hơn mà không ảnh hưởng chất lượng.

Tổng kết

Không có provider nào tốt nhất cho mọi trường hợp. Setup mình đang dùng:

  • Classification/extraction bulk → Gemini Flash
  • Chatbot user-facing → GPT-4o mini hoặc Claude Haiku
  • Code review, document analysis phức tạp → Claude 3.5 Sonnet
  • Async bulk job qua đêm (OpenAI Batch API) → GPT-4o hoặc GPT-4o mini với 50% discount

Nếu bạn đang bắt đầu: dùng Gemini Flash free tier để test logic, benchmark với GPT-4o mini, rồi mới chọn provider chính thức. Scale từ 1,000 lên 1,000,000 request/tháng, chênh lệch chi phí giữa các model có thể lên đến hàng nghìn đô. Tính kỹ từ đầu — đừng đợi đến lúc refactor cả pipeline mới nghĩ đến chuyện này.

Share: