TROISINH
Chiến thuật linh hoạtKế hư thực

Kế 14: Dụ địch vào ổ phục kích — Chain-of-Thought bắt AI suy nghĩ từng bước

Kế 14 Binh pháp AI: Bắt AI liệt kê suy luận từng bước trước khi đưa ra kết luận, giảm sai sót logic và tăng độ chính xác trên bài toán phức tạp.

Mở đầu: Câu chuyện bãi cọc Bạch Đằng

Năm 938, Ngô Quyền đối mặt với thủy quân Nam Hán tiến vào Bạch Đằng Giang. Thay vì ra đánh ngay trên biển lớn — nơi địch mạnh và ta yếu — ông chọn cách "dụ địch": cho quân giả vờ thua chạy, để lộ lối vào sông nhánh. Quân Nam Hán tưởng thắng, truy kích từng bước, từng bước tiến sâu vào dòng sông hẹp. Chỉ khi thủy triều rút, hàng ngàn cọc ngầm trồi lên mới lộ ra — chia cắt đội hình địch thành từng mảng nhỏ dễ dàng tiêu diệt.

Chiến thuật này không khác gì cách ta đối phó với AI hiện đại. Khi bạn đối mặt bài toán phức tạp — phân tích tài chính, debug code, hay suy luận logic nhiều tầng — việc bắt AI "đoán" luôn đáp án (direct prompting) giống như đánh trận trực diện trên biển lớn: AI có thể thắng với bài đơn giản, nhưng sẽ "chết chìm" trong suy luận dài.

Kế 14: Dụ địch vào ổ phục kích — hay còn gọi là Chain-of-Thought (CoT) — không cho phép AI nhảy cóc tới đáp án. Ta buộc chúng phải "tiến từng bước" vào lãnh địa suy luận, liệt kê từng trung gian, để lỗi logic nào cũng bị "cọc ngầm" bắt lại trước khi kết luận cuối cùng được đưa ra.

Vấn đề: Khi AI "nhảy cóc" suy luận

Hãy thử một bài toán đơn giản nhưng dễ sai:

Một cửa hàng mua 30kg gạo giá 15.000đ/kg và 20kg đường giá 12.000đ/kg. Nếu họ bán lại với lãi 10% trên tổng giá vốn, thì tổng doanh thu là bao nhiêu?

Nếu bạn paste trực tiếp vào ChatGPT và hỏi "Doanh thu là bao nhiêu?", có tới ~25-30% khả năng AI (đặc biệt các model nhỏ hoặc khi đang "mệt" do context dài) sẽ trả lời ngay: 759.000đ — đúng con số nhưng có thể là do may mắn, hoặc nó sẽ trả lời 690.000đ (quên tính lãi), hoặc 759.000đ nhưng không giải thích rõ phép tính.

Vấn đề là ở chỗ: LLM hoạt động như một cỗ máy nén thông tin khổng lồ. Khi bạn yêu cầu đáp án ngay lập tức, model phải nén toàn bộ quá trình suy luận (4-5 bước tính toán) vào một vector trạng thái ẩn (hidden state) duy nhất rồi "đoán" token cuối. Đây chính là "Lost in the Middle" của suy luận — càng nhiều bước trung gian, áp lực lên băng thông suy nghĩ càng lớn, sai sót càng dễ bị chôn vùi trong đống tham số.

Kế sách: Chain-of-Thought — Bắt AI "vẽ đường đi từng chặng"

Thay vì để AI chạy một mạch từ đầu tới cuối, ta buộc nó phải dừng lại ở mỗi trạm trung gian, giống như bắt quân địch phải qua từng ụ cọc một.

Cách thực hiện

Có ba cách triển khai CoT, từ đơn giản tới tinh vi:

Zero-shot CoT — "Hãy suy nghĩ từng bước"

Thêm một câu kích hoạt vào cuối prompt:

[Question]

Hãy suy nghĩ từng bước trước khi đưa ra câu trả lời cuối cùng.

Câu này kích hoạt "chế độ tutorial" trong model — nó liên tưởng tới hàng triệu ví dụ StackOverflow và sách giáo khoa trong dữ liệu huấn luyện, nơi cụm từ này luôn đi kèm liệt kê bước 1, 2, 3.

Few-shot CoT — "Làm theo mẫu"

Cung cấp 1-2 ví dụ mẫu có cấu trúc <Câu hỏi> → <Suy luận từng bước> → <Đáp án>:

Q: Mua 2 quyển sách giá 50k, bán lãi 20%. Doanh thu?
A: 
1. Vốn: 2 × 50k = 100k
2. Lãi: 100k × 20% = 20k  
3. Doanh thu: 100k + 20k = 120k
Final Answer: 120.000đ

Q: [Câu hỏi thật của bạn]
A:

Model sẽ bắt chước cấu trúc này, tự động sinh ra các bước trung gian.

Auto-CoT — Tự động hóa

Dùng chính AI để sinh ra các chuỗi suy luận mẫu, rồi dùng những chuỗi đó để prompt cho câu hỏi mới. Phù hợp khi bạn có hàng trăm bài toán cần xử lý batch.

Prompt mẫu thực chiến

Tình huống: Phân tích lý do khách hàng churn (rời bỏ) từ dữ liệu phức tạp.

Dữ liệu: Khách hàng A đăng ký gói Premium 6 tháng trước, dùng ít hơn 20% so với gói Basic, và đã không đăng nhập 14 ngày. 

Nhiệm vụ: Dự đoán khả năng churn và giải thích lý do.

Yêu cầu: 
1. Liệt kê từng dấu hiệu rủi ro bạn nhận thấy trong dữ liệu
2. Phân tích mối tương quan giữa mức độ sử dụng và thời gian không hoạt động  
3. Đưa ra kết luận cuối cùng về % khả năng churn và lý do chính

Lưu ý: Suy nghĩ từng bước, mỗi bước phải có căn cứ từ dữ liệu.

Output mẫu (sau khi áp dụng CoT):

Bước 1 - Phân tích hành vi sử dụng:
- Khách dùng gói Premium nhưng tần suất thấp hơn cả gói Basic (-20%). Đây là dấu hiệu "không thấy giá trị" (value-gap).

Bước 2 - Phân tích engagement:  
- 14 ngày không đăng nhập vượt ngưỡng "habit threshold" (thường là 7 ngày). Dấu hiệu churn cao theo cohort analysis.

Bước 3 - Tương quan rủi ro:
- Combo "trả tiền cao + dùng ít + nghỉ dài" là tam giác churn kinh điển (high pay, low use, cold account).

Kết luận: 85% khả năng churn. Lý do chính: Không nhận ra giá trị tương xứng với chi phí (Premium expectation mismatch).

That's it. Từ một câu trả lời đoán mò ("Có thể churn do không dùng nữa"), ta có được phân tích tầng tầng lớp lớp, mỗi bước đều có thể kiểm chứng.

Tại sao kế này hiệu quả

Bí mật nằm ở cơ chế KV Cachebăng thông suy nghĩ (working memory) của transformer.

Khi không dùng CoT, model phải nén toàn bộ logic vào một vector trung gian duy nhất (residual stream) có kích thước cố định (ví dụ 4.096 chiều). Đây là "chai lọ" thông tin — càng nhiều bước suy luận, nén càng mất mát.

CoT biến context window thành bảng nháp (scratchpad):
Khi model viết ra "Bước 1: Tính vốn = 450k", những ký tự này trở thành input tokens cho forward pass tiếp theo. Nghĩa là:

  1. Mở rộng tính toán: Mỗi bước reasoning tiêu tốn một lượt forward riêng. Với 5 bước, model thực chất thực hiện 5 lần "suy nghĩ" tuần tự, thay vì 1 lần "nghĩ nhanh".
  2. Tự hiệu chỉnh: Model có thể quay lại kiểm tra "ở Bước 1 tôi tính 450k, nhưng liệu có đúng là 30kg × 15k không?" vì thông tin đã được materialized thành văn bản, không còn chìm trong layer 22 của mạng nơ-ron.
  3. Giảm lỗi tích lũy: Trong toán học, sai số bước đầu sẽ làm sai toàn bộ. CoT cho phép "bắt lỗi ngay tại trạm", giống như kiểm tra hàng rào cọc tại từng đoạn sông, thay vì để địch lọt tới cửa biển mới phát hiện.

Benchmark từ Google Brain (2022): Trên bộ toán GSM8K, PaLM 540B đạt 17% accuracy với prompting thường, nhưng đạt 57% khi thêm CoT — tăng gấp 3 lần chỉ nhờ bắt model "show work".

Ứng dụng thực chiến

Nếu bạn là sinh viên / học sinh

  • Giải đề thi: Đừng hỏi "Đáp án câu này là gì?", hãy yêu cầu "Giải thích từng bước như đang dạy bạn học trung bình". Điều này giúp bạn học cách suy luận, không chỉ copy đáp án.
  • Debug code: Bắt AI giải thích từng dòng lỗi thay vì sửa luôn. "Tại sao dòng 23 báo lỗi Null Pointer? Trace logic từ đầu hàm."

Nếu bạn là nhân viên văn phòng

  • Phân tích báo cáo: "So sánh doanh thu Q3 và Q4. Hãy liệt kê từng yếu tố ảnh hưởng (giá, số lượng, chiết khấu) rồi mới tổng hợp."
  • Viết email phức tạp: Yêu cầu AI outline trước (bước 1), rồi viết thân (bước 2), rồi polish (bước 3) — chính là áp dụng CoT vào văn phong.

Nếu bạn là kỹ sư / developer

  • Code review: Dùng CoT để AI giải thích logic của một hàm phức tạp trước khi suggest refactor. "Hãy trace flow của biến X qua từng if-else trước khi đề xuất tối ưu."
  • System design: "Thiết kế API cho chức năng thanh toán. Bước 1: Liệt kê các actor. Bước 2: Mapping use case. Bước 3: Vẽ sequence diagram."

So sánh: Direct Prompting vs Chain-of-Thought

Tiêu chíPrompting thông thườngChain-of-Thought
Tốc độNhanh (1 forward pass)Chậm hơn 2-5x (nhiều pass)
Chi phí tokenThấpCao hơn (phải sinh ra text trung gian)
Độ chính xác (toán/logic)~20-40%~60-90% (tùy độ phức tạp)
Khả năng debugKhó (hộp đen)Dễ (có thể kiểm tra từng bước)
Ứng dụng phù hợpFAQ, sáng tạo văn nghệToán, lập trình, pháp lý, y tế

Kết luận: CoT không phải "thuốc bổ" cho mọi bệnh. Với câu hỏi đơn giản ("Thủ đô Việt Nam là gì?"), CoT chỉ làm tốn token. Nhưng với bài toán nhiều bước, nó là chiến hào ngăn lỗi logic tràn vào kết luận cuối cùng.

Đọc thêm

Đọc tiếp trong Level 1:

On this page