Chapter 2 — LLM Abilities & Limitations
Chapter trước bạn đã hiểu LLM hoạt động thế nào. Chapter này trả lời câu hỏi thực tế hơn: dùng model nào, cho bài toán nào, với budget bao nhiêu?
Đây là kỹ năng sẽ tiết kiệm cho bạn (hoặc công ty bạn) hàng nghìn đô mỗi tháng.
2.1 — Multimodal: không chỉ text nữa
Nếu năm 2023, LLM chỉ đọc/viết text, thì từ 2024 trở đi, các model hàng đầu đều xử lý được ảnh, audio, thậm chí video. Report State of AI 2024 highlight đây là bước tiến lớn nhất trong năm.
Với bạn — Software Engineer — điều này có nghĩa: nhiều bài toán trước đây cần model riêng biệt, giờ chỉ cần một API call.
Ai mạnh cái gì?
Cảnh báo: bảng này thay đổi rất nhanh. Check Artificial Analysis để xem data cập nhật.
| Khả năng | GPT-4o | Claude Sonnet 4 | Gemini 2.5 Pro |
|---|---|---|---|
| Text | ✅ Tốt | ✅ Tốt | ✅ Tốt |
| Đọc ảnh | ✅ Tốt | ✅ Tốt | ✅ Tốt |
| Đọc PDF | ✅ OK | ✅ Native PDF — rất tốt | ✅ OK |
| Nghe audio | ✅ Native | ❌ | ✅ Native |
| Xem video | ❌ | ❌ | ✅ Native |
| Tạo ảnh | ✅ Native | ❌ | ✅ Native |
Use case thực tế cho engineer
Đây không phải demo cool — đây là những thứ bạn dùng hàng ngày khi build product:
| Bạn cần | Input | Output | Trước đây phải | Giờ chỉ cần |
|---|---|---|---|---|
| OCR hóa đơn | Ảnh chụp | JSON fields | Tesseract + regex | 1 API call |
| Debug từ screenshot | Ảnh lỗi | Giải thích + fix | Gõ lại error message | Paste ảnh vào |
| Tóm tắt meeting | File audio | Bullet points | Whisper + GPT riêng | 1 API call |
| Phân tích dashboard | Screenshot Grafana | Anomaly report | Manual | 1 API call |
🧪 Lab 1: Cho LLM đọc ảnh
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Mô tả những gì bạn thấy trong ảnh này."},
{"type": "image_url", "image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg"
}}
]
}],
max_tokens=300,
)
print(response.choices[0].message.content)
Tham khảo OpenAI Vision Guide để xem thêm options.
Thử chụp screenshot một stack trace rồi hỏi: "Lỗi này là gì và fix thế nào?". Bạn sẽ thấy nó hiểu lỗi tốt hơn bạn tưởng. Austin Henley có viết bài Using GPT-4 Vision for Bug Reports rất hay về topic này.
2.2 — Reasoning model vs Standard model
Đây là decision quan trọng nhất khi chọn model cho production — và cũng là chỗ nhiều người đốt tiền vô ích nhất.
Hai loại model
Standard model (GPT-4o, Claude Sonnet): nhận input, trả output ngay. Nhanh, rẻ.
Reasoning model (o3, Claude với extended thinking): tạo thinking tokens trước — model "tự nói chuyện với mình" để suy luận — rồi mới output. OpenAI giới thiệu concept này vào tháng 9/2024.
Khi nào dùng cái nào?
Rule đơn giản: nếu con người cũng cần "suy nghĩ kỹ" trước khi trả lời, dùng reasoning model. Nếu không, dùng standard.
| ✅ Reasoning model đáng tiền | ❌ Standard model là đủ |
|---|---|
| Debug logic phức tạp | Tóm tắt email |
| Giải toán, proof | Dịch văn bản |
| Lên kế hoạch multi-step | Viết marketing copy |
| Agent cần planning | Classify intent |
| Code architecture t ừ spec | Extract data từ form |
Cái giá phải trả
Thinking tokens không miễn phí — và chúng thường gấp 5-20x output tokens. Tham khảo pricing cập nhật tại OpenAI và Anthropic.
Standard model — 1 request:
Input: 1,000 tokens → $0.0025
Output: 500 tokens → $0.005
─────────────────────────────
Total: $0.0075
Reasoning model — cùng request đó:
Input: 1,000 tokens → $0.0025
Thinking: 5,000 tokens → $0.05 ← đây
Output: 500 tokens → $0.005
─────────────────────────────────
Total: $0.0575 (~8x đắt hơn)
1,000 request/ngày × $0.05 = $50/ngày = $1,500/tháng — chỉ cho reasoning.
Cùng workload với standard model: $7.50/ngày = $225/tháng.
Chênh lệch $1,275/tháng. Hãy chắc chắn bạn cần reasoning thật sự trước khi bật lên.
2.3 — Chọn size model
Bạn không cần model đắt nhất cho mọi task. Đây là framework giúp bạn chọn đúng.
3 tier
Giá cập nhật tại Artificial Analysis:
| Tier | Ví dụ | Dùng khi |
|---|---|---|
| 🔴 Frontier | Claude Opus, GPT-4o | Task khó, cần quality cao nhất, volume thấp |
| 🟡 Mid-tier | Claude Sonnet, GPT-4o-mini | Phần lớn mọi thứ — sweet spot |
| 🟢 Small | Claude Haiku | Classify, route, high-volume, cần nhanh |
Hỏi 3 câu trước khi chọn
Ví dụ:
| Bài toán | Người mất bao lâu? | Volume | → Model |
|---|---|---|---|
| Classify email intent | Vài giây | 10K/ngày | 🟢 Haiku |
| Tóm tắt meeting notes | Vài phút | 50/ngày | 🟡 Sonnet |
| Generate code từ spec | Nửa tiếng | 20/ngày | 🔴 Opus |
| Route support ticket | Vài giây | 50K/ngày | 🟢 Haiku |
Cascade pattern — tiết kiệm thông minh
Trong production, bạn thường kết hợp nhiều tier. Anthropic mô tả pattern này trong bài Building Effective Agents:
80% request chạy model rẻ, chỉ 5% request dùng frontier. Chi phí trung bình giảm 60-70%. Bạn sẽ implement pattern này ở Chapter 5 — Workflow Patterns.
🧪 Lab 2: So sánh model trên cùng task
import time
from openai import OpenAI
client = OpenAI()
task = """
Phân tích code Python sau và tìm bug:
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
return total / len(numbers)
print(calculate_average([]))
"""
for model in ["gpt-4o-mini", "gpt-4o"]:
start = time.time()
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": task}],
temperature=0,
)
elapsed = time.time() - start
print(f"\n{'='*50}")
print(f"Model: {model} | Time: {elapsed:.2f}s | Tokens: {r.usage.total_tokens}")
print(f"{'='*50}")
print(r.choices[0].message.content[:400])
Chạy xong, tự hỏi: Cả 2 model đều tìm ra bug (division by zero) không? Nếu model nhỏ cũng tìm được, tại sao lại trả gấp 10x cho frontier?
2.4 — Benchmark: đọc thế nào cho đúng
Mỗi tuần lại có model mới "phá kỷ lục MMLU". Đây là cách đọc benchmark mà không bị hype.
Các benchmark chính
| Benchmark | Đo cái gì | Link |
|---|---|---|
| MMLU | Kiến thức chung (57 chủ đề) | Paper |
| HumanEval | Code gen Python | Paper |
| GPQA | Câu hỏi khoa học PhD-level | Paper |
| Chatbot Arena | Con người vote model nào tốt hơn | Leaderboard |
Tại sao bạn không nên tin 100%
Paper Are We Done With MMLU? và Rethinking Benchmark Contamination chỉ ra nhiều vấn đề:
- Data contamination — model có thể đã "thấy" câu hỏi benchmark trong training data. Giống sinh viên học tủ đúng đề.
- Benchmark gaming — model được optimize để score cao trên test cụ thể, nhưng fail ở bài toán thật.
- Narrow scope — HumanEval chỉ test function Python nhỏ. Code ở production phức tạp hơn nhiều.
"Vibe check" — phương pháp tốt nhất
Lấy 20-50 test cases từ bài toán thật của bạn. Chạy trên 2-3 model. So sánh output. 30 phút làm việc này cho bạn insight tốt hơn đọc 10 bài benchmark review.
Đọc thêm: How to Evaluate LLMs (Confident AI).
🧪 Lab 3: Vibe check với data thật
from openai import OpenAI
import anthropic
oa = OpenAI()
an = anthropic.Anthropic()
tests = [
"Phân loại email: 'Tôi muốn hoàn tiền cho đơn hàng #12345'",
"Viết SQL: Top 10 khách hàng có tổng đơn cao nhất tháng 3",
"Tóm tắt: 'Họp Q2 — team A lo migration, team B frontend, deadline 30/6'",
]
for i, t in enumerate(tests):
print(f"\n{'='*60}\nTest {i+1}: {t}\n{'='*60}")
r1 = oa.chat.completions.create(
model="gpt-4o-mini", temperature=0,
messages=[{"role": "user", "content": t}],
)
print(f"\n[GPT-4o-mini]\n{r1.choices[0].message.content[:300]}")
r2 = an.messages.create(
model="claude-sonnet-4-20250514", max_tokens=300,
messages=[{"role": "user", "content": t}],
)
print(f"\n[Claude Sonnet]\n{r2.content[0].text[:300]}")
Tổng kết Chapter 2
4 điều mang về:
-
Multimodal giúp bạn giảm complexity. OCR, audio transcription, image analysis — giờ chỉ cần 1 API call thay vì pipeline 3-4 model riêng biệt.
-
Reasoning model chỉ đáng tiền khi task thật sự cần suy luận. Classify email? Standard model. Debug logic phức tạp? Reasoning model. Chi phí chênh ~8x — đừng dùng bừa.
-
Bắt đầu với mid-tier, điều chỉnh sau. Sonnet/GPT-4o-mini là sweet spot cho hầu hết mọi thứ. Scale lên frontier khi cần quality, xuống small khi cần speed/cost.
-
Đừng chọn model bằng benchmark. Chọn bằng vibe check. 30 phút test với data thật > 3 giờ đọc bài so sánh trên Chatbot Arena.
Checkpoint — Tự kiểm tra
- "OCR hóa đơn tiếng Việt" — bạn chọn model nào, modality nào?
- Tính cost: 1,000 request/ngày, mỗi request tạo 5K thinking tokens. Bao nhiêu $/tháng?
- Startup có 50K request classify/ngày, latency < 500ms. Tier nào? Model nào?
- "Model X đạt 95% MMLU" — bạn có tin nó sẽ tốt cho bài toán của bạn không? Tại sao?
Đọc thêm
| Tài liệu | Loại | Tại sao nên đọc |
|---|---|---|
| Building Effective Agents | Blog | Anthropic chia sẻ pattern thiết kế agent & cascade (2025) |
| Chatbot Arena | Tool | Xếp hạng model bằng human preference — thực tế nhất |
| Artificial Analysis | Tool | So sánh giá, tốc độ, quality giữa providers |
| Anthropic Model Comparison | Docs | So sánh model Anthropic chính thức |
| State of AI 2024 | Report | Tổng quan toàn cảnh AI |
Phase 1 xong! 🎉
Bạn đã nắm được "con dao": LLM hoạt động thế nào, giới hạn ở đâu, và cách chọn model phù hợp.
Phase 2 sẽ dạy bạn cách dùng con dao đó: viết prompt ổn định, cho model gọi API, và xây pipeline nhiều bước.
Tiếp theo: Chapter 3 — Prompt Engineering →