So sánh GPT-5.2, Claude Opus 4.6 / Sonnet 4.6 và Gemini 3.1 Pro: Junior Dev nên chọn model nào?

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

Ba “triết lý” AI khác nhau — Hiểu trước, chọn sau

Nếu bạn đang băn khoăn giữa GPT-5.2, Claude Opus 4.6/Sonnet 4.6 và Gemini 3.1 Pro thì mình hiểu cảm giác đó. Mình đã ngồi so sánh từng cái, chạy thử trên nhiều dự án khác nhau. Kết luận rõ nhất: không có model nào “tốt nhất tuyệt đối”. Câu hỏi đúng phải là “model nào phù hợp với task này?”

Mỗi nhà làm theo hướng riêng, và sự khác biệt rõ hơn bạn tưởng:

  • GPT-5.2 (OpenAI): Xây để đa năng — tích hợp sâu với Azure, Microsoft 365 và cả GitHub Copilot
  • Claude Opus 4.6 / Sonnet 4.6 (Anthropic): Đặt an toàn và lý luận lên trên, đổi lại là chất lượng văn bản và reasoning tốt nhất trong ba
  • Gemini 3.1 Pro (Google): Sinh ra từ hệ sinh thái Google — multimodal native, Search real-time, Vertex AI cho enterprise

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

GPT-5.2 — Đa năng, ecosystem rộng

GPT-5.2 kế thừa từ dòng GPT-5 với cải tiến đáng kể về reasoning và tốc độ phản hồi. Đặc biệt phù hợp khi:

  • Project deploy trên Azure hoặc tích hợp Microsoft 365
  • Cần function calling và structured JSON output ổn định
  • Code generation đa ngôn ngữ (TypeScript, Go, Rust — GPT xử lý tốt)
  • Team đã dùng GitHub Copilot và muốn model nhất quán

Điểm yếu rõ nhất là chi phí. Ở tier cao nhất, bill cuối tháng có thể vượt ngân sách của startup nhỏ hoặc side project nếu không theo dõi usage kỹ.

Claude Opus 4.6 / Sonnet 4.6 — Lý luận sâu, văn bản chất lượng cao

Anthropic xây Claude với một triết lý khác hẳn: ưu tiên an toàn và trung thực trên hết. Nghe có vẻ nhỏ, nhưng trong thực tế điều này có nghĩa là Claude sẽ nói thẳng “mình không chắc” thay vì tự bịa ra câu trả lời nghe hợp lý — quan trọng hơn nhiều khi dùng trong production.

Claude nổi bật ở:

  • Viết văn bản tự nhiên: Blog, tài liệu kỹ thuật, email — văn phong ít cần chỉnh sửa
  • Context window lớn: 200K+ tokens, xử lý codebase hoặc tài liệu dài tốt hơn đối thủ
  • Extended thinking: Opus 4.6 có thể “suy nghĩ thầm” trước khi trả lời, đặc biệt hữu ích cho bài toán phức tạp
  • Consistency: Output format ổn định hơn qua nhiều lần gọi API

Về hai phiên bản: Opus 4.6 là flagship — chậm hơn và đắt hơn, nhưng reasoning ở tầm khác. Sonnet 4.6 là điểm cân bằng tốt nhất về chi phí/hiệu năng. Mình đã dùng Sonnet 4.6 trong production cho bài toán generate content. Latency ổn định, chi phí giảm khoảng 60% so với Opus — và quan trọng hơn, chất lượng output đủ để đưa thẳng lên production mà không cần chỉnh nhiều.

Điểm yếu: Multimodal không bằng Gemini, real-time web search bị giới hạn hơn.

Gemini 3.1 Pro — Multimodal và Google ecosystem

Gemini là lựa chọn gần như hiển nhiên nếu project của bạn xử lý nhiều loại media cùng lúc, hoặc đang chạy trên GCP:

  • Native multimodal: Text, image, audio, video trong cùng 1 API call
  • Google Search grounding: Trả lời dựa trên kết quả tìm kiếm real-time, giảm hallucination về thông tin mới
  • Vertex AI: Deploy enterprise trên GCP với SLA rõ ràng
  • Giá cạnh tranh: Các tier thấp hơn (Flash) rất rẻ, phù hợp prototyping

Điểm yếu: Chất lượng văn bản thuần không bằng Claude. Và API đôi lúc trả về format không nhất quán khi prompt phức tạp — cái này mình đã gặp vài lần và phải xử lý thêm ở phía client.

Chọn model nào cho từng tình huống?

Đây là bảng mình hay dùng khi tư vấn cho junior dev trong team:

Task Khuyến nghị Lý do
Viết blog / tài liệu kỹ thuật Claude Sonnet 4.6 Văn phong tự nhiên, ít chỉnh sửa
Code generation phức tạp Claude Opus 4.6 hoặc GPT-5.2 Reasoning sâu, xử lý edge case tốt
Phân tích ảnh / video Gemini 3.1 Pro Native multimodal, không cần workaround
Chatbot cần dữ liệu real-time Gemini 3.1 Pro Google Search built-in
Enterprise Azure GPT-5.2 Tích hợp sẵn, SLA rõ ràng
Startup / side project budget thấp Claude Sonnet 4.6 + Gemini Flash Chi phí thấp, chất lượng đủ dùng

Hướng dẫn triển khai thực tế

Đủ lý thuyết rồi — giờ vào code. Mình sẽ cho bạn cách gọi cả 3 API trong Python và một wrapper dùng chung interface, để sau này switch model không cần đụng vào business logic.

Cài dependencies

pip install anthropic openai google-generativeai

Gọi Claude Sonnet 4.6

import anthropic

client = anthropic.Anthropic(api_key="sk-ant-...")

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    messages=[
        {"role": "user", "content": "Giải thích Docker volumes cho người mới bắt đầu"}
    ]
)

print(response.content[0].text)

Gọi GPT-5.2

from openai import OpenAI

client = OpenAI(api_key="sk-...")

response = client.chat.completions.create(
    model="gpt-5.2",
    messages=[
        {"role": "user", "content": "Giải thích Docker volumes cho người mới bắt đầu"}
    ],
    max_tokens=2048
)

print(response.choices[0].message.content)

Gọi Gemini 3.1 Pro

import google.generativeai as genai

genai.configure(api_key="AIza...")

model = genai.GenerativeModel("gemini-3.1-pro")
response = model.generate_content(
    "Giải thích Docker volumes cho người mới bắt đầu"
)

print(response.text)

Wrapper đa model — dùng 1 interface cho cả 3

Trong production, mình luôn viết wrapper để switch model không cần sửa toàn bộ code. Đây là pattern mình đang dùng:

from enum import Enum
import anthropic
from openai import OpenAI
import google.generativeai as genai

class AIProvider(Enum):
    CLAUDE = "claude"
    GPT = "gpt"
    GEMINI = "gemini"

class AIClient:
    def __init__(self, provider: AIProvider, api_key: str, model: str = None):
        self.provider = provider

        if provider == AIProvider.CLAUDE:
            self.client = anthropic.Anthropic(api_key=api_key)
            self.model = model or "claude-sonnet-4-6"
        elif provider == AIProvider.GPT:
            self.client = OpenAI(api_key=api_key)
            self.model = model or "gpt-5.2"
        elif provider == AIProvider.GEMINI:
            genai.configure(api_key=api_key)
            self.client = genai.GenerativeModel(model or "gemini-3.1-pro")
            self.model = model or "gemini-3.1-pro"

    def chat(self, message: str, max_tokens: int = 2048) -> str:
        if self.provider == AIProvider.CLAUDE:
            resp = self.client.messages.create(
                model=self.model,
                max_tokens=max_tokens,
                messages=[{"role": "user", "content": message}]
            )
            return resp.content[0].text

        elif self.provider == AIProvider.GPT:
            resp = self.client.chat.completions.create(
                model=self.model,
                messages=[{"role": "user", "content": message}],
                max_tokens=max_tokens
            )
            return resp.choices[0].message.content

        elif self.provider == AIProvider.GEMINI:
            resp = self.client.generate_content(message)
            return resp.text

# Sử dụng
claude  = AIClient(AIProvider.CLAUDE, api_key="sk-ant-...")
gpt     = AIClient(AIProvider.GPT,    api_key="sk-...")
gemini  = AIClient(AIProvider.GEMINI, api_key="AIza...")

question = "Viết function Python đọc file CSV và trả về list of dict"

for name, client in [("Claude", claude), ("GPT", gpt), ("Gemini", gemini)]:
    print(f"\n=== {name} ===")
    print(client.chat(question))

Pattern này đặc biệt hữu ích khi một model bị rate limit hoặc outage — đổi 1 dòng AIProvider.CLAUDE thành AIProvider.GEMINI là xong, không cần đụng vào business logic.

Lưu ý về chi phí thực tế

Giá thay đổi thường xuyên, nhưng pattern chung mình quan sát được:

  • Claude Sonnet 4.6: Chi phí trung bình, tỷ lệ hiệu năng/giá tốt nhất cho text task
  • Claude Opus 4.6: Đắt nhất trong ba — chỉ dùng khi thực sự cần reasoning sâu
  • GPT-5.2: Đắt ở tier cao, nhưng có nhiều cấp pricing và discount theo volume
  • Gemini 3.1 Pro: Cạnh tranh, đặc biệt free tier hào phóng để test và prototype

Lời khuyên thực tế: test cả 3 với đúng task của bạn trước khi quyết định. Mình từng mất gần 2 tuần prompt-engineering với GPT-5.2. Kết quả? Claude Sonnet 4.6 làm cùng việc đó tốt hơn, rẻ hơn. Bài học đắt giá: benchmark trên internet và benchmark trên production là hai chuyện rất khác nhau.

Kết luận: Công thức chọn model cho junior dev

Sau gần một năm làm việc với cả ba, mình rút ra công thức khá đơn giản:

  1. Bắt đầu với Claude Sonnet 4.6 — điểm cân bằng tốt nhất, API ổn định, dễ dùng
  2. Upgrade lên Opus 4.6 hoặc GPT-5.2 khi cần reasoning phức tạp hoặc code generation nâng cao
  3. Thêm Gemini 3.1 Pro khi project có multimodal hoặc cần Google Search live data
  4. Luôn viết wrapper — khi một model gặp sự cố, fallback sang model khác mà không cần sửa business logic

Với junior dev mới vào nghề: đừng cố master cả 3 cùng lúc. Chọn 1 model, hiểu sâu API của nó, rồi mở rộng dần. Cái wrapper ở trên sẽ giúp bạn chuyển đổi dễ dàng khi đã sẵn sàng.

Share: