Chọn model Claude nào? Haiku vs Sonnet vs Opus — Hướng dẫn theo use case
Điểm nổi bật
Nhấn để đến mục tương ứng
- 1 Batch API: Gửi request hàng loạt khi không cần kết quả ngay, giảm 50% chi phí.
- 2 Bước tiếp theo Việc chọn đúng model Claude là bước quan trọng đầu tiên trong hành trình xây dựng ứng dụng AI hiệu quả.
- 3 Giảm tới 90% chi phí input tokens khi prompt cache hit.
- 4 Bài viết này giúp bạn hiểu rõ sự khác biệt giữa các model và đưa ra quyết định phù hợp cho từng trường hợp sử dụng.
- 5 Cách đặt tên này phản ánh chính xác đặc tính của từng model.
Anthropic cung cấp ba dòng model Claude với đặc tính khác nhau: Haiku (nhanh, rẻ), Sonnet (cân bằng), và Opus (mạnh nhất). Việc chọn đúng model cho từng tác vụ không chỉ ảnh hưởng đến chất lượng đầu ra mà còn quyết định chi phí vận hành. Bài viết này giúp bạn hiểu rõ sự khác biệt giữa các model và đưa ra quyết định phù hợp cho từng trường hợp sử dụng.
Tổng quan ba dòng model
Anthropic đặt tên các model theo ba loại bài thơ haiku Nhật Bản: Haiku (ngắn gọn, tinh tế), Sonnet (cân bằng, phong phú), và Opus (đồ sộ, phức tạp). Cách đặt tên này phản ánh chính xác đặc tính của từng model.
Claude Haiku — Nhanh và tiết kiệm
Haiku là model nhỏ nhất và nhanh nhất trong họ Claude. Phiên bản mới nhất là Claude 3.5 Haiku. Đặc điểm chính:
- Tốc độ: Nhanh nhất trong ba model, phản hồi gần như tức thì
- Chi phí: Thấp nhất — $0.80/triệu input tokens, $4/triệu output tokens (Claude 3.5 Haiku)
- Context window: 200K tokens
- Điểm mạnh: Phân loại, trích xuất dữ liệu có cấu trúc, trả lời câu hỏi đơn giản, moderation
- Hạn chế: Suy luận phức tạp, viết sáng tạo dài, phân tích nhiều bước
Claude Sonnet — Cân bằng hiệu suất và chi phí
Sonnet là lựa chọn mặc định cho hầu hết ứng dụng. Phiên bản mới nhất là Claude Sonnet 4. Đặc điểm chính:
- Tốc độ: Nhanh, chậm hơn Haiku nhưng vẫn rất tốt cho production
- Chi phí: $3/triệu input tokens, $15/triệu output tokens (Claude Sonnet 4)
- Context window: 200K tokens
- Điểm mạnh: Viết nội dung, code, phân tích dữ liệu, tóm tắt, dịch thuật
- Hạn chế: Các bài toán suy luận cực kỳ phức tạp hoặc cần sáng tạo đột phá
Claude Opus — Sức mạnh tối đa
Opus là model mạnh nhất, được thiết kế cho các tác vụ đòi hỏi suy luận sâu. Phiên bản mới nhất là Claude Opus 4. Đặc điểm chính:
- Tốc độ: Chậm nhất trong ba model, nhưng chất lượng output cao nhất
- Chi phí: $15/triệu input tokens, $75/triệu output tokens (Claude Opus 4)
- Context window: 200K tokens
- Điểm mạnh: Suy luận phức tạp nhiều bước, phân tích chuyên sâu, nghiên cứu, coding khó
- Hạn chế: Chi phí cao, tốc độ chậm hơn — không phù hợp cho tác vụ đơn giản
Bảng so sánh chi tiết
Dưới đây là bảng so sánh tổng hợp để bạn dễ dàng đối chiếu:
| Tiêu chí | Haiku | Sonnet | Opus |
|---|---|---|---|
| Giá input (/ triệu tokens) | $0.80 | $3 | $15 |
| Giá output (/ triệu tokens) | $4 | $15 | $75 |
| Tốc độ (tương đối) | Nhanh nhất | Nhanh | Vừa phải |
| Chất lượng suy luận | Tốt | Rất tốt | Xuất sắc |
| Context window | 200K | 200K | 200K |
| Vision (xem ảnh) | Co | Co | Co |
| Tool use | Co | Co | Co |
Chọn model theo use case
Dưới đây là hướng dẫn chi tiết cho từng nhóm use case phổ biến. Nguyên tắc chung: bắt đầu với Sonnet, nâng lên Opus nếu cần chất lượng cao hơn, hạ xuống Haiku nếu cần tiết kiệm chi phí.
Dùng Haiku khi nào?
Phân loại và gắn nhãn: Phân loại email, ticket hỗ trợ, sentiment analysis, phân loại nội dung. Haiku xử lý nhanh và chính xác cho các tác vụ phân loại đơn giản.
Trích xuất dữ liệu có cấu trúc: Lấy thông tin từ văn bản theo format cố định — tên, email, số điện thoại, địa chỉ từ email hoặc form.
Content moderation: Kiểm tra nội dung vi phạm, lọc spam, đánh giá an toàn. Tốc độ nhanh của Haiku phù hợp cho real-time moderation.
Chatbot FAQ: Trả lời các câu hỏi thường gặp dựa trên knowledge base có sẵn. Câu trả lời ngắn, không cần suy luận phức tạp.
Dịch thuật đơn giản: Dịch các đoạn văn ngắn, tiêu đề, mô tả sản phẩm.
Dùng Sonnet khi nào?
Viết nội dung: Blog post, email marketing, mô tả sản phẩm, bài đăng mạng xã hội. Sonnet viết tự nhiên và sáng tạo.
Code generation: Viết code, debug, review code, giải thích code. Sonnet xử lý tốt hầu hết các tác vụ lập trình.
Phân tích dữ liệu: Phân tích CSV, tạo báo cáo, tóm tắt xu hướng, đề xuất insight từ dữ liệu.
Tóm tắt tài liệu: Tóm tắt bài viết, báo cáo, biên bản họp, tài liệu kỹ thuật dài.
Hỗ trợ khách hàng nâng cao: Chatbot cần hiểu ngữ cảnh phức tạp, xử lý khiếu nại, đề xuất giải pháp.
Dịch thuật chuyên nghiệp: Dịch tài liệu dài, nội dung kỹ thuật, giữ tone và style.
Dùng Opus khi nào?
Suy luận phức tạp nhiều bước: Phân tích chiến lược kinh doanh, đánh giá rủi ro, lập kế hoạch dự án phức tạp.
Nghiên cứu và phân tích sâu: So sánh nhiều nguồn tài liệu, tổng hợp insight, viết báo cáo nghiên cứu.
Coding phức tạp: Thiết kế kiến trúc hệ thống, refactor codebase lớn, debug lỗi phức tạp.
Phân tích pháp lý: Đọc và phân tích hợp đồng, quy định pháp luật, đánh giá tuân thủ.
Toán học và logic: Giải bài toán phức tạp, chứng minh, phân tích logic nhiều bước.
Agentic tasks: Các tác vụ cần tự chủ cao, sử dụng tool, lập kế hoạch và thực thi nhiều bước.
Smart Routing: Tự động chọn model
Thay vì chọn model thủ công cho mỗi request, bạn có thể xây dựng hệ thống smart routing tự động chọn model phù hợp dựa trên đặc điểm của input.
import anthropic
class SmartRouter:
"""
Tự động chọn model Claude phù hợp dựa trên đặc điểm request.
"""
def __init__(self):
self.client = anthropic.Anthropic()
def route(self, task_type: str, input_text: str,
priority: str = "balanced") -> str:
"""
Chọn model phù hợp.
Args:
task_type: Loại tác vụ
input_text: Nội dung input
priority: "cost" | "balanced" | "quality"
Returns:
Model ID phù hợp
"""
# Quy tắc routing dựa trên task type
task_routing = {
# Haiku tasks
"classification": "claude-3-5-haiku-20241022",
"extraction": "claude-3-5-haiku-20241022",
"moderation": "claude-3-5-haiku-20241022",
"faq": "claude-3-5-haiku-20241022",
"simple_translation": "claude-3-5-haiku-20241022",
# Sonnet tasks
"writing": "claude-sonnet-4-20250514",
"coding": "claude-sonnet-4-20250514",
"summarization": "claude-sonnet-4-20250514",
"data_analysis": "claude-sonnet-4-20250514",
"customer_support": "claude-sonnet-4-20250514",
"translation": "claude-sonnet-4-20250514",
# Opus tasks
"complex_reasoning": "claude-opus-4-20250514",
"research": "claude-opus-4-20250514",
"architecture": "claude-opus-4-20250514",
"legal_analysis": "claude-opus-4-20250514",
"math": "claude-opus-4-20250514",
"agentic": "claude-opus-4-20250514",
}
model = task_routing.get(task_type, "claude-sonnet-4-20250514")
# Điều chỉnh theo priority
if priority == "cost":
model = self._downgrade(model)
elif priority == "quality":
model = self._upgrade(model)
# Điều chỉnh theo độ dài và phức tạp của input
if len(input_text) > 50000 and model.startswith("claude-3-5-haiku"):
model = "claude-sonnet-4-20250514" # Input dài cần model mạnh hơn
return model
def _upgrade(self, model: str) -> str:
"""Nâng cấp lên model mạnh hơn."""
if "haiku" in model:
return "claude-sonnet-4-20250514"
elif "sonnet" in model:
return "claude-opus-4-20250514"
return model
def _downgrade(self, model: str) -> str:
"""Hạ cấp xuống model rẻ hơn."""
if "opus" in model:
return "claude-sonnet-4-20250514"
elif "sonnet" in model:
return "claude-3-5-haiku-20241022"
return model
def send_request(self, task_type: str, input_text: str,
system_prompt: str = "", priority: str = "balanced") -> dict:
"""
Gửi request với model được tự động chọn.
"""
model = self.route(task_type, input_text, priority)
messages = [{"role": "user", "content": input_text}]
kwargs = {
"model": model,
"max_tokens": 4096,
"messages": messages
}
if system_prompt:
kwargs["system"] = system_prompt
response = self.client.messages.create(**kwargs)
return {
"model_used": model,
"response": response.content[0].text,
"input_tokens": response.usage.input_tokens,
"output_tokens": response.usage.output_tokens,
"estimated_cost": self._estimate_cost(
model, response.usage.input_tokens, response.usage.output_tokens
)
}
def _estimate_cost(self, model: str, input_tokens: int,
output_tokens: int) -> float:
"""Ước tính chi phí request (USD)."""
pricing = {
"claude-3-5-haiku-20241022": (0.80, 4.00),
"claude-sonnet-4-20250514": (3.00, 15.00),
"claude-opus-4-20250514": (15.00, 75.00),
}
input_price, output_price = pricing.get(model, (3.00, 15.00))
cost = (input_tokens * input_price + output_tokens * output_price) / 1_000_000
return round(cost, 6)
Ước tính chi phí cho ứng dụng của bạn
Dưới đây là công cụ ước tính chi phí đơn giản giúp bạn lên ngân sách trước khi triển khai.
def estimate_monthly_cost(
daily_requests: int,
avg_input_tokens: int,
avg_output_tokens: int,
model: str
) -> dict:
"""
Ước tính chi phí hàng tháng.
Args:
daily_requests: Số request trung bình mỗi ngày
avg_input_tokens: Số input tokens trung bình mỗi request
avg_output_tokens: Số output tokens trung bình mỗi request
model: Tên model
"""
pricing = {
"haiku": {"input": 0.80, "output": 4.00},
"sonnet": {"input": 3.00, "output": 15.00},
"opus": {"input": 15.00, "output": 75.00},
}
prices = pricing[model]
monthly_requests = daily_requests * 30
monthly_input_cost = (monthly_requests * avg_input_tokens * prices["input"]) / 1_000_000
monthly_output_cost = (monthly_requests * avg_output_tokens * prices["output"]) / 1_000_000
total = monthly_input_cost + monthly_output_cost
return {
"model": model,
"monthly_requests": monthly_requests,
"monthly_input_tokens": monthly_requests * avg_input_tokens,
"monthly_output_tokens": monthly_requests * avg_output_tokens,
"input_cost_usd": round(monthly_input_cost, 2),
"output_cost_usd": round(monthly_output_cost, 2),
"total_cost_usd": round(total, 2),
"total_cost_vnd": f"{round(total * 25_500):,} VND" # Tỷ giá ước tính
}
# Ví dụ: chatbot hỗ trợ khách hàng, 500 request/ngày
for model in ["haiku", "sonnet", "opus"]:
result = estimate_monthly_cost(
daily_requests=500,
avg_input_tokens=1000,
avg_output_tokens=500,
model=model
)
print(f"{model}: ${result['total_cost_usd']}/tháng ({result['total_cost_vnd']})")
Kết quả ước tính cho chatbot 500 request/ngày (1000 input + 500 output tokens/request):
- Haiku: ~$42/thang (~1,071,000 VND)
- Sonnet: ~$157.5/thang (~4,016,250 VND)
- Opus: ~$787.5/thang (~20,081,250 VND)
Sự khác biệt chi phí giữa Haiku và Opus lên tới gần 19 lần. Với nhiều ứng dụng, Haiku hoặc Sonnet đã đủ tốt và giúp tiết kiệm đáng kể.
Sơ đồ quyết định chọn model
Hãy trả lời các câu hỏi sau để chọn model phù hợp:
- Tác vụ có cần suy luận nhiều bước không? Nếu co -> Sonnet hoặc Opus. Nếu không -> tiếp câu 2.
- Tác vụ chủ yếu là phân loại, trích xuất, hoặc trả lời ngắn? Nếu co -> Haiku. Nếu không -> tiếp câu 3.
- Output cần sáng tạo, chi tiết, hoặc dài hơn 500 từ? Nếu co -> Sonnet. Nếu không -> Haiku.
- Với Sonnet, chất lượng có đạt yêu cầu không? Nếu co -> Giữ Sonnet. Nếu không -> nâng lên Opus.
- Chi phí có là mối quan tâm chính? Nếu co -> thử Haiku trước, kiểm tra chất lượng, nâng cấp nếu cần.
Khi nào nên nâng cấp model?
Các dấu hiệu bạn cần nâng cấp từ Haiku lên Sonnet, hoặc Sonnet lên Opus:
- Tỷ lệ câu trả lời không chính xác hoặc thiếu sâu sắc vượt quá 10%
- Người dùng phàn nàn về chất lượng phản hồi
- Model thường xuyên "hiểu sai" ý câu hỏi phức tạp
- Output thiếu tính sáng tạo hoặc quá generic
- Tác vụ yêu cầu phân tích tài liệu dài và phức tạp
Khi nào nên hạ cấp model?
Các dấu hiệu bạn đang dùng model mạnh hơn cần thiết:
- Hầu hết câu trả lời ngắn hơn 200 từ
- Tác vụ chủ yếu lặp đi lặp lại với pattern cố định
- Không cần suy luận phức tạp, chỉ cần trích xuất hoặc biến đổi dữ liệu
- Chi phí API là mối quan tâm chính và chất lượng Haiku/Sonnet đã đủ tốt
- Tốc độ phản hồi quan trọng hơn chất lượng suy luận
Chiến lược tiết kiệm chi phí
Ngoài việc chọn đúng model, có nhiều cách khác để tối ưu chi phí Claude API:
- Prompt Caching: Sử dụng tính năng cache system prompt để giảm chi phí input tokens cho các request lặp lại. Giảm tới 90% chi phí input tokens khi prompt cache hit.
- Batch API: Gửi request hàng loạt khi không cần kết quả ngay, giảm 50% chi phí.
- Tối ưu prompt: Viết prompt ngắn gọn, rõ ràng. Mỗi token thừa đều tốn tiền.
- Cascade approach: Bắt đầu với Haiku, nếu confidence thấp thì tự động chuyển lên Sonnet, rồi Opus.
- Giới hạn max_tokens: Đặt max_tokens phù hợp với nhu cầu thực tế, tránh output dài không cần thiết.
Bước tiếp theo
Việc chọn đúng model Claude là bước quan trọng đầu tiên trong hành trình xây dựng ứng dụng AI hiệu quả. Bắt đầu với Sonnet cho hầu hết use case, sau đó điều chỉnh dựa trên dữ liệu thực tế về chất lượng và chi phí. Khám phá thêm các hướng dẫn nền tảng tại Thư viện Nền tảng Claude.
Bai viet co huu ich khong?
Bản quyền thuộc về tác giả. Vui lòng dẫn nguồn khi chia sẻ.





