Role-based, Few-shot, Chain-of-thought: 3 cách “nói chuyện” với AI hiệu quả hơn

Hồi trước mình có đọc một bài trên Medium của tác giả MLOps Playbook về prompt engineering, minh hoạ khá gọn 3 kỹ thuật quen thuộc: role-based prompting, few-shot và chain-of-thought. Đọc xong thấy cách trình bày dễ hiểu, nên hôm nay mình viết lại theo văn phong quen thuộc của blog, rút gọn phần code và chuyển hết ví dụ sang tiếng Việt cho gần gũi hơn với anh em.

1. Role-based prompting — chia vai system / user / assistant

Kỹ thuật đầu tiên là cấu trúc prompt theo 3 vai: system (định hình tính cách, luật chơi cho model), user (câu hỏi/yêu cầu của người dùng) và assistant (nơi model điền câu trả lời vào). Đây chính xác là cách mà đằng sau hậu trường, ChatGPT hay Claude vẫn đang dùng — chỉ là khi mình xài web UI thì phần “system prompt” đã bị giấu đi, mình không thấy thôi.

Ví dụ vui: yêu cầu model đóng vai một trợ lý hay cà khịa người dùng:

system: "Bạn là một trợ lý hay châm biếm, thích cà khịa người dùng."
user: "Cậu giải thích giúp mình transformer hoạt động thế nào được không?"

Với prompt này, model trả lời đúng chất “cà khịa” như system yêu cầu — ví dụ nó có thể giải thích “transformer” (kiểu máy biến áp điện) bằng giọng mỉa mai, ví von cuộn dây sơ cấp/thứ cấp như “phép thuật ở Hogwarts” thay vì giải thích nghiêm túc. Chỉ cần đổi một dòng system, mình có thể biến model từ trợ lý nghiêm túc thành một nhân vật hoàn toàn khác — từ gia sư tận tâm, chuyên gia khó tính, đến cướp biển nói chuyện bô lô ba la. Role-based prompting chính là công cụ để mình kiểm soát tính cáchgiọng điệu của model.

2. Few-shot prompting — phân loại cảm xúc chỉ bằng vài ví dụ

Kỹ thuật thứ hai là few-shot: đưa vài ví dụ mẫu ngay trong prompt để model “nắm” được pattern, không cần train lại, không cần fine-tune gì cả. Ví dụ kinh điển là bài toán phân loại cảm xúc:

Phân loại cảm xúc:

Review: "Mình rất thích bộ phim này!"
Cảm xúc: Tích cực

Review: "Đồ ăn dở tệ."
Cảm xúc: Tiêu cực

Review: "Cũng bình thường, không có gì đặc biệt."
Cảm xúc:

Chỉ với 2 ví dụ mẫu (Tích cực, Tiêu cực), model tự suy ra được câu thứ ba nên gắn nhãn Trung lập, dù prompt chưa hề dạy nó khái niệm “Trung lập” là gì. Đây chính là sức mạnh của few-shot: model không học thuộc lòng định nghĩa, mà học pattern từ ví dụ, rồi tự suy diễn ra trường hợp còn thiếu.

Kỹ thuật này áp dụng được cho rất nhiều bài toán phân loại khác, ví dụ như: lọc spam hay không spam, nhận diện ngôn ngữ của một đoạn văn bản, phát hiện cảm xúc chi tiết hơn (giận dữ, vui, buồn…), hay phân loại chủ đề của một đoạn tin. Công thức chung là: đưa vài ví dụ đúng format mình muốn, rồi để model tiếp tục “nối chuỗi” theo đúng pattern đó.

3. Chain-of-Thought (CoT) — ép model suy luận từng bước

Kỹ thuật thứ ba, và cũng là kỹ thuật hữu ích nhất cho các bài toán logic: Chain-of-Thought. Thay vì để model nhảy thẳng vào đáp án, mình yêu cầu nó trình bày từng bước suy luận trước — y hệt việc thầy cô bắt học sinh trình bày lời giải chứ không chỉ ghi đáp số.

Trả lời câu hỏi sau theo từng bước:

Hỏi: Có 3 chiếc xe hơi, mỗi xe có 4 bánh. Hỏi tổng cộng có bao nhiêu bánh xe?
Trả lời:

Model sẽ trả lời tuần tự: xác định mỗi xe có 4 bánh, có 3 xe, rồi nhân 3 với 4 để ra kết quả 12 bánh — trình bày rõ từng bước thay vì chỉ vọt ra con số. Với bài toán đơn giản thế này thì có CoT hay không cũng không khác biệt mấy, nhưng khi bài toán phức tạp hơn (nhiều bước, nhiều điều kiện lồng nhau), việc bắt model “nói ra suy nghĩ” giúp giảm hẳn tình trạng đoán bừa hoặc nhảy cóc logic giữa chừng.

CoT đặc biệt hợp với các dạng bài như: bài toán đố có nhiều bước tính toán, suy luận logic (deduction), câu hỏi dạng “tại sao”, hay Q&A cần liên kết nhiều mốc thông tin (multi-hop).

Tổng hợp lại: ba kỹ thuật, ba mục đích khác nhau

Ba kỹ thuật này không cạnh tranh nhau, mà mỗi cái giải quyết một vấn đề riêng:

  • Role-based prompting: kiểm soát giọng điệu, tính cách, ngữ cảnh hội thoại của model.
  • Few-shot prompting: dạy model một tác vụ cụ thể thông qua ví dụ, không cần fine-tune.
  • Chain-of-thought: ép model suy luận từng bước để tăng độ chính xác cho bài toán nhiều bước.

Và ba kỹ thuật này hoàn toàn kết hợp được với nhau — ví dụ vừa few-shot vừa chain-of-thought để model vừa học đúng format, vừa suy luận đúng logic; hoặc role-based kết hợp đa ngôn ngữ để có một trợ lý vừa đúng tính cách vừa nói đúng ngôn ngữ mình muốn.

Tóm lại những gì cần nhớ

  • Role-based prompting: dùng cấu trúc system/user/assistant để định hình tính cách và ngữ cảnh cho model.
  • Few-shot prompting: đưa vài ví dụ mẫu để model tự suy ra pattern, không cần train lại.
  • Chain-of-thought: yêu cầu suy luận từng bước, giúp tăng độ chính xác cho bài toán nhiều bước.
  • Ba kỹ thuật này hoàn toàn kết hợp được với nhau để đạt kết quả tốt hơn từng kỹ thuật riêng lẻ.

Bài viết được mình biên tập và diễn giải lại theo góc nhìn cá nhân từ bài gốc “Talking to Transformers: Unlock the Magic of Prompt Engineering” của tác giả MLOps Playbook trên Medium.

Chúc anh em code vui! 🚀

Leave a Comment