
Giới thiệu
Bạn có bao giờ hỏi ChatGPT một bài toán và nó trả lời... sai? Nhưng khi bạn thêm dòng "Hãy giải thích từng bước", đột nhiên nó trả lời đúng?
Đó là Chain-of-Thought (CoT) — kỹ thuật prompt engineering mạnh nhất cho bài toán yêu cầu suy luận logic.
Nghiên cứu: Google Brain (2022) chứng minh CoT tăng accuracy từ 17.7% → 78.7% trên bài toán toán học GSM8K — chỉ bằng cách thêm "Let's think step by step."
1. Chain-of-Thought là gì?
1.1 Ý tưởng chính
Ví dụ đời thường: Bạn bảo học sinh giải bài toán:
- Không CoT: "Đáp án là gì?" → Học sinh đoán bừa, có thể sai
- Có CoT: "Giải thích từng bước trước khi cho đáp án" → Học sinh suy nghĩ kỹ hơn, ít sai hơn
AI cũng vậy! Khi bạn bắt AI "nghĩ" trước khi trả lời, nó hoạt động tốt hơn nhiều.
1.2 So sánh: Có và không CoT
❌ Không CoT:
Q: Một cửa hàng có 35 quả táo. Bán đi 20 quả vào buổi sáng,
nhập thêm 15 quả vào buổi chiều. Hỏi cuối ngày có bao nhiêu?
A: 25 quả (có thể sai nếu model nhỏ)
✅ Có CoT:
Q: Một cửa hàng có 35 quả táo. Bán đi 20 quả vào buổi sáng,
nhập thêm 15 quả vào buổi chiều. Hỏi cuối ngày có bao nhiêu?
Giải thích từng bước.
A: Hãy giải từng bước:
1. Ban đầu: 35 quả
2. Buổi sáng bán 20: 35 - 20 = 15 quả
3. Buổi chiều nhập 15: 15 + 15 = 30 quả
Đáp án: 30 quả ✅
2. Hai loại CoT
2.1 Zero-Shot CoT — "Magic words"
Chỉ cần thêm 1 câu vào cuối prompt:
[Câu hỏi]
Hãy suy nghĩ từng bước. / Let's think step by step.
Các "magic phrases" hiệu quả nhất:
| Phrase | Hiệu quả | Khi nào dùng |
|---|---|---|
| "Let's think step by step" | ⭐⭐⭐⭐⭐ | Mọi bài toán logic |
| "Hãy giải thích reasoning" | ⭐⭐⭐⭐ | Tiếng Việt |
| "Before answering, analyze..." | ⭐⭐⭐⭐ | Bài phân tích |
| "Break this into sub-problems" | ⭐⭐⭐⭐ | Bài toán lớn |
| "Show your work" | ⭐⭐⭐ | Toán, code |
2.2 Few-Shot CoT — Cho ví dụ cách "nghĩ"
Giải bài toán, trình bày từng bước.
Q: Một shop bán 3 áo, mỗi áo 200k. Chi phí ship 30k. Tổng tiền?
Thinking:
- 3 áo × 200k = 600k
- Ship: 30k
- Tổng: 600k + 30k = 630k
A: 630,000 VNĐ
Q: Một nhóm 5 người ăn tối, bill 1.2 triệu. Chia đều, mỗi người
tip thêm 10%. Mỗi người trả bao nhiêu?
Thinking:
- Bill chia đều: 1,200,000 ÷ 5 = 240,000/người
- Tip 10%: 240,000 × 0.1 = 24,000
- Tổng mỗi người: 240,000 + 24,000 = 264,000
A: 264,000 VNĐ
Q: [Bài toán mới của bạn]
2.3 So sánh Zero-Shot vs Few-Shot CoT
| Zero-Shot CoT | Few-Shot CoT | |
|---|---|---|
| Setup | Thêm 1 câu | Viết 2-3 ví dụ |
| Accuracy | Tốt | Tốt hơn |
| Khi nào | Task phổ biến | Task domain-specific |
| Effort | Thấp | Trung bình |
| Token cost | Thấp | Cao hơn |
3. CoT cho Code & Debug
3.1 Debug code
Đoạn code sau bị lỗi. Phân tích TỪNG BƯỚC trước khi đưa ra fix:
1. Đọc code và hiểu intent
2. Trace execution step-by-step với input mẫu
3. Xác định chính xác dòng nào sai và tại sao
4. Đề xuất fix
5. Verify fix bằng cách trace lại
```python
def avg_positive(nums):
total = 0
count = 0
for n in nums:
if n > 0:
total += n
return total / count
**AI output (với CoT):**
- Intent: Tính trung bình các số dương
- Trace với input [3, -1, 5, -2]:
- n=3: total=3 (count không tăng!!)
- n=-1: skip
- n=5: total=8
- n=-2: skip
- return 8/0 → ZeroDivisionError! 💥
- Bug: count KHÔNG ĐƯỢC TĂNG trong vòng lặp
- Fix: thêm
count += 1sautotal += n - Verify: [3,-1,5,-2] → total=8, count=2 → 8/2=4.0 ✅ Edge case: [] → count=0 → cần handle ZeroDivisionError
### 3.2 Code Design
Thiết kế hệ thống notification cho app e-commerce.
Trước khi code, hãy:
- Liệt kê các loại notification cần hỗ trợ
- Vẽ flow diagram (text-based)
- Xác định design pattern phù hợp
- Liệt kê edge cases
- Sau đó mới viết code
Yêu cầu: Python, support email + SMS + push notification.
> **💡 Bài tập 3:** Lấy 1 bug thật trong code bạn đang làm. Dùng CoT prompt ở 3.1 để debug. So sánh output có CoT vs không CoT.
---
## 4. CoT cho Analysis & Decision Making
### 4.1 Business Analysis
Phân tích liệu công ty nên launch feature X. Suy nghĩ theo framework:
- Problem: Feature X giải quyết vấn đề gì?
- Market: Ai cần? Market size? Competitor có chưa?
- Effort: Bao lâu? Bao nhiêu resource?
- Impact: Revenue potential? User retention impact?
- Risks: Điều gì có thể sai? Mitigation?
- Decision: Go / No-Go / Need more data
Feature X: Tính năng "dark mode" cho app ngân hàng.
### 4.2 Pros-Cons Analysis
Đánh giá quyết định: chuyển từ monolith sang microservices.
Phân tích theo framework SWOT, nghĩ kỹ từng điểm:
For each point:
- State the point clearly
- Explain WHY it matters
- Give a concrete example
- Rate impact: High/Medium/Low
Sau SWOT, đưa recommendation cuối cùng.
---
## 5. Khi nào CoT KHÔNG hiệu quả?
CoT **không phải thuốc tiên** — có trường hợp nó **không giúp** hoặc **gây hại**:
| Tình huống | CoT hiệu quả? | Lý do |
|-----------|---------|-------|
| Bài toán logic, toán | ✅ Rất hiệu quả | Cần suy luận multi-step |
| Code debugging | ✅ Rất hiệu quả | Cần trace execution |
| Decision making | ✅ Hiệu quả | Cần cân nhắc nhiều yếu tố |
| Dịch thuật | ❌ Không cần | Task pattern matching, không cần suy luận |
| Creative writing | ⚠️ Tùy | Có thể limit sáng tạo |
| Factual Q&A | ❌ Không cần | "Thủ đô Việt Nam?" → không cần step-by-step |
| Phân loại đơn giản | ❌ Phí tokens | Sentiment analysis → zero-shot đủ |
> **Quy tắc:** CoT tốt cho bài toán cần **suy luận nhiều bước**. Khi task đơn giản, CoT **phí tokens** mà không tăng accuracy.
### 5.1 Chi phí CoT
Không CoT: Input 100 tokens + Output 50 tokens = 150 tokens Có CoT: Input 100 tokens + Output 300 tokens = 400 tokens (~2.7×)
→ CoT tốn gấp ~2-3× tokens. Chỉ dùng khi cần!
> **💡 Bài tập 5:** Chạy cùng 1 câu hỏi có/không CoT trên GPT-4o-mini. Đếm tokens output. CoT tốn thêm bao nhiêu %? Accuracy cải thiện đáng không?
---
## 6. Advanced CoT Patterns
### 6.1 Self-Verification CoT
Bắt AI **kiểm tra lại** đáp án của chính nó:
Giải bài toán sau. Sau khi giải xong:
- Giải lần 1
- Kiểm tra lại: thử đáp án vào đề bài, có khớp không?
- Nếu sai, giải lại
- Đưa đáp án cuối cùng
Bài: Tìm x: 2x + 5 = 17
### 6.2 Debate CoT
Bắt AI **tranh luận** với chính nó:
Câu hỏi: "React hay Vue tốt hơn cho startup?"
Hãy:
- Lập luận ủng hộ React (3 điểm)
- Lập luận ủng hộ Vue (3 điểm)
- Phản biện mỗi lập luận
- Đưa kết luận cuối cùng dựa trên specific context: team 3 người, app MVP, deadline 2 tháng
### 6.3 Structured CoT Template
Phân tích vấn đề theo framework:
🤔 Understanding
[Hiểu problem statement]
🔍 Analysis
[Phân tích từng khía cạnh]
💡 Options
[Liệt kê các giải pháp]
⚖️ Trade-offs
[So sánh pros/cons mỗi option]
✅ Recommendation
[Chọn option tốt nhất + giải thích]
🚀 Next Steps
[Action items cụ thể]
---
## Tóm tắt
| Concept | Ghi nhớ |
|---------|---------|
| **CoT** | Bắt AI "nghĩ" trước "nói" → accuracy cao hơn |
| **Zero-Shot CoT** | Thêm "Let's think step by step" |
| **Few-Shot CoT** | Cho ví dụ cách reasoning |
| **Tốt cho** | Logic, toán, debug, analysis, decision |
| **Không cần cho** | Dịch, factual Q/A, classification đơn giản |
| **Cost** | Tốn 2-3× tokens — chỉ dùng khi accuracy quan trọng |
## Bài tập tổng hợp
1. ✅ Hoàn thành bài tập nhỏ (3, 5)
2. **CoT vs Direct:** Chọn 10 bài toán logic/toán. Hỏi AI 2 cách: direct vs CoT. Đếm accuracy mỗi cách.
3. **Custom CoT Template:** Tạo CoT template cho 1 task trong công việc (review design, estimate project, triage bugs). Test 5 cases.
4. **Self-Verification:** Dùng kỹ thuật 6.1 cho 5 bài toán. So sánh accuracy có/không self-verify.
> **Bài tiếp theo:** Tree-of-Thoughts, Self-Consistency & Step-Back — các kỹ thuật nâng cao hơn CoT, explore nhiều hướng suy luận.