0

Series Prompt Engineering Thực chiến #2: Kỹ thuật "Chain of Thought" – Bắt AI tư duy chậm lại

Chào bạn và anh em!

Ở Bài 1, chúng ta đã nắm được bộ khung vũ khí C-T-C-F (Context - Task - Constraints - Format) để AI không còn trả lời chung chung.

Tuy nhiên, với những Kỹ sư Backend, chúng ta hiếm khi giao cho AI những task dễ. Thường thì chúng ta sẽ ném cho nó một bài toán logic siêu phức tạp, ví dụ: "Viết thuật toán tính giá vé Metro dựa trên độ dài quãng đường, áp dụng mã giảm giá giờ thấp điểm, và trừ tiền vào ví điện tử".

Với những task "hạng nặng" này, nếu bạn chỉ dùng C-T-C-F, AI rất dễ bị "ngáo". Nó sẽ vội vàng nhảy ngay vào viết code và sinh ra một mớ bug logic. Hôm nay, chúng ta sẽ học cách chữa căn bệnh "nhanh nhảu đoảng" này bằng kỹ thuật Chain of Thought (Chuỗi tư duy).

1. Tại sao AI lại hay sai logic?

Bản chất của các Mô hình ngôn ngữ (LLM) là dự đoán từ tiếp theo. Khi bạn đưa một bài toán khó và ép nó phải nhả ra đoạn code kết quả ngay lập tức, nó không có "thời gian" và "không gian" để suy luận. Nó giống như việc bạn bắt một học sinh giỏi toán phải nhẩm trong đầu một phương trình bậc 3 và đọc ngay đáp án. Rất dễ sai!

Giải pháp là gì? Bắt nó nháp ra giấy trước khi chốt đáp án.

2. Chain of Thought (CoT): Câu thần chú "Hãy suy nghĩ từng bước"

Chain of Thought (CoT) là kỹ thuật ép AI phải diễn giải quá trình suy luận logic của nó bằng văn bản trước khi đưa ra kết quả cuối cùng. Bằng cách tự sinh ra các bước phân tích, AI sẽ dùng chính những câu văn đó làm bối cảnh để viết code chuẩn xác hơn.

Cách đơn giản nhất để kích hoạt CoT là thêm vào Prompt của bạn câu thần chú:

"Hãy suy nghĩ từng bước một (Think step by step)."

Nhưng để đạt chuẩn Enterprise, chúng ta sẽ ép nó đi theo những bước mà chúng ta muốn.

3. Thực chiến: Bài toán Thiết kế Database

Cách gọi thông thường (Dễ sinh lỗi, thiếu sót):

"Tôi đang làm hệ thống AFC cho trạm Metro. Hãy thiết kế cho tôi Database Schema chứa thông tin thẻ, trạm, và giao dịch."

(Kết quả: AI sẽ nhả ra 3 bảng SQL đơn giản, thiếu các trường quan trọng như trạng thái đồng bộ, loại thẻ, hoặc bỏ qua việc đánh Index).

Cách gọi áp dụng Chain of Thought (Ép tư duy):

[Context] Bạn là một Data Architect. Tôi cần thiết kế Database Schema cho hệ thống AFC quản lý thẻ Metro. [Task] Hãy thiết kế các bảng (Tables) quản lý Thẻ, Trạm và Giao dịch.

[Chain of Thought - Quá trình tư duy] Đừng viết code SQL vội. Hãy thực hiện theo trình tự sau:

  • Bước 1: Phân tích các luồng nghiệp vụ thực tế có thể xảy ra ở trạm (quẹt thẻ thành công, quẹt lỗi, nạp tiền) để liệt kê các trường dữ liệu cần thiết.
  • Bước 2: Xác định các mối quan hệ (1-n, n-n) và các khóa ngoại (Foreign Keys).
  • Bước 3: Phân tích xem với dữ liệu giao dịch tăng cực nhanh, chúng ta nên đánh Index (Chỉ mục) ở những cột nào để tối ưu tốc độ.
  • Bước 4: Cuối cùng, tổng hợp lại và viết ra mã SQL hoàn chỉnh (Dùng MySQL).

[Format] Trình bày phần phân tích logic rõ ràng bằng bullet points. Mã SQL đặt trong code block.

Sự khác biệt: Khi nhận được Prompt này, AI sẽ không vội vàng viết SQL. Nó sẽ tự "nói chuyện" với chính mình ở Bước 1, 2, 3. Qua quá trình đó, nó sẽ tự nhận ra: "À, quẹt lỗi thì cần ghi chú lỗi, giao dịch nhiều thì cần đánh Index cho trường tapped_at và card_id". Cuối cùng, bản SQL sinh ra ở Bước 4 sẽ hoàn hảo và bao quát các trường hợp thực tế (Edge-cases).

4. Nâng cấp: Kỹ thuật "Tự bắt lỗi" (Self-Correction)

Có một tuyệt kỹ đi kèm với CoT mà giới chuyên gia Prompting cực kỳ yêu thích. Đó là cho phép AI làm "Vừa đá bóng, vừa thổi còi".

Bên trong chuỗi tư duy, bạn hãy thêm một bước gọi là Review.

"...

  • Bước 4: Viết mã Golang cho thuật toán tính giá vé.
  • Bước 5 (Self-Review): Đóng vai một Senior QA, hãy tự đọc lại đoạn code bạn vừa viết ở Bước 4. Tìm kiếm các lỗi tiềm ẩn (như chia cho 0, memory leak, thiếu catch error khi gọi external API). Nếu phát hiện lỗi, hãy giải thích và sinh ra đoạn mã cuối cùng (Final Code) đã được vá lỗi."

Khi dùng kỹ thuật này, bạn sẽ thường xuyên thấy AI tự tát vào mặt mình: "Ở đoạn mã trên, tôi nhận thấy có rủi ro deadlock nếu Redis bị timeout. Dưới đây là đoạn mã đã được tối ưu lại với Context Timeout...". Bạn vừa tiết kiệm được một lần phản hồi (prompt) để bắt lỗi nó!

Tổng kết Bài 2

Bằng việc sử dụng Chain of Thought, bạn đã dạy cho AI cách "nháp ra giấy" trước khi thi. Nó có thể khiến AI sinh ra đoạn text dài hơn, phản hồi lâu hơn vài giây, nhưng chất lượng mã nguồn hoặc kiến trúc mà bạn nhận lại sẽ sâu sắc, an toàn và "sạch" hơn gấp nhiều lần.

Hãy nhớ: Bạn là người dẫn dắt (Orchestrator). Bạn không cần giỏi hơn AI về việc gõ code, nhưng bạn phải là người định hướng được luồng tư duy của nó. Ở những trạm tiếp theo, chúng ta sẽ áp dụng các kỹ thuật này để nhồi những đoạn legacy code dài hàng ngàn dòng vào cho AI "nhai" mà không bị tràn bộ nhớ ngữ cảnh!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí