Skip to Content
✨ AI EngineeringPreview✍️ Prompt Engineering

Prompt Engineering

Prompt Engineering là nghệ thuật và khoa học viết các instruction (prompt) hiệu quả để hướng dẫn AI thực hiện tác vụ như mong muốn.

📚 Bài viết liên quan:


Tại sao Prompt Engineering quan trọng?

Cùng một model, cùng một câu hỏi, nhưng cách hỏi khác nhau: ❌ "Viết code" → Output không rõ ràng, thiếu context ✅ "Viết một hàm Python tên `calculate_factorial` nhận parameter `n` (int), return n! sử dụng đệ quy. Thêm type hints và docstring theo Google style." → Output chính xác, đầy đủ

💡 Quy tắc vàng: Prompt càng cụ thể, output càng chất lượng.


Các kỹ thuật Prompt Engineering

1. Zero-Shot Prompting

Yêu cầu AI thực hiện tác vụ không cần ví dụ. Chỉ dựa vào instruction rõ ràng.

Prompt: "Phân loại sentiment của câu sau thành 'positive', 'negative', hoặc 'neutral': 'Sản phẩm này thật tuyệt vời, tôi rất hài lòng!'" Output: positive

Khi nào dùng:

  • Tác vụ đơn giản, phổ biến
  • Model đã được train trên task tương tự
  • Cần response nhanh, không có thời gian chuẩn bị ví dụ

2. Few-Shot Prompting

Cung cấp vài ví dụ trước khi yêu cầu thực hiện task.

Prompt: "Chuyển đổi tên tiếng Anh sang tiếng Việt: John → Giôn Michael → Mai-cồ Elizabeth → Ê-li-za-bét William →" Output: Uy-li-am

Khi nào dùng:

  • Task phức tạp cần hiểu pattern
  • Muốn kiểm soát format output
  • Model chưa biết task này (ít phổ biến)

Mẹo: 3-5 ví dụ thường là đủ. Nhiều hơn có thể tốn tokens không cần thiết.


3. Chain-of-Thought (CoT)

Yêu cầu AI giải thích từng bước trước khi đưa ra kết luận.

❌ Zero-shot: "A có 15 quả táo, cho B 6 quả, B cho lại A 3 quả. A có bao nhiêu quả?" → Model có thể tính sai ✅ Chain-of-Thought: "A có 15 quả táo, cho B 6 quả, B cho lại A 3 quả. Hãy tính từng bước và cho biết A có bao nhiêu quả?" Output: "Bước 1: A ban đầu có 15 quả Bước 2: A cho B 6 quả → A còn 15 - 6 = 9 quả Bước 3: B cho lại A 3 quả → A có 9 + 3 = 12 quả Đáp án: A có 12 quả táo"

Khi nào dùng:

  • Bài toán logic, toán học
  • Cần trace được quá trình suy luận
  • Muốn verify từng bước

Biến thể:

  • Zero-Shot CoT: Thêm “Let’s think step by step” vào cuối prompt
  • Self-Consistency: Chạy nhiều lần, chọn kết quả xuất hiện nhiều nhất

4. Role Prompting

Yêu cầu AI đóng vai một nhân vật hoặc chuyên gia.

system = """Bạn là một Senior Python Developer với 10 năm kinh nghiệm. Bạn ưu tiên: - Clean code và type hints - Docstrings theo Google style - Unit tests với pytest - Error handling đầy đủ""" user = "Review đoạn code sau và đề xuất cải thiện: ..."

Khi nào dùng:

  • Cần expertise trong lĩnh vực cụ thể
  • Muốn giọng điệu/style nhất quán
  • Build chatbot với persona riêng

5. Structured Output

Yêu cầu AI trả về format cụ thể (JSON, Markdown, CSV…).

Prompt: "Phân tích bài viết sau và trả về dưới dạng JSON với các trường: - title: Tiêu đề bài viết - summary: Tóm tắt 2-3 câu - keywords: Array các từ khóa chính - sentiment: positive/negative/neutral Bài viết: [nội dung...]" Output: { "title": "...", "summary": "...", "keywords": ["AI", "Machine Learning"], "sentiment": "positive" }

Mẹo nâng cao: Nhiều API hiện đại hỗ trợ JSON Mode đảm bảo output luôn là JSON hợp lệ.


6. Self-Reflection / Critique

Yêu cầu AI tự đánh giá và cải thiện output.

Prompt (2 bước): 1. "Viết một đoạn văn giới thiệu về Python" → Output lần 1 2. "Hãy đọc lại đoạn văn trên và: - Chỉ ra 3 điểm có thể cải thiện - Viết lại version tốt hơn" → Output được cải thiện

Khi nào dùng:

  • Cần output chất lượng cao
  • Có thời gian cho multi-turn
  • Writing tasks (blog, email, report)

Cấu trúc Prompt hiệu quả

Template cơ bản

[ROLE] (Tùy chọn) Bạn là [vai trò] với [kinh nghiệm/đặc điểm]. [CONTEXT] Bối cảnh: [mô tả tình huống] [TASK] Nhiệm vụ: [mô tả cụ thể task cần làm] [FORMAT] Output format: [định dạng mong muốn] [CONSTRAINTS] Lưu ý: - [ràng buộc 1] - [ràng buộc 2] [EXAMPLES] (Tùy chọn) Ví dụ: Input: ... Output: ...

Ví dụ thực tế

Bạn là một chuyên gia SEO với 5 năm kinh nghiệm. Bối cảnh: Tôi đang viết blog về lập trình Python cho người mới bắt đầu. Nhiệm vụ: Viết meta description cho bài viết về "Python List Comprehension". Output format: - Độ dài: 150-160 ký tự - Chứa keyword chính - Có call-to-action Lưu ý: - Giọng văn thân thiện, dễ hiểu - Tránh jargon kỹ thuật phức tạp

System Prompt vs User Prompt

LoạiMục đíchVí dụ
System PromptThiết lập vai trò, quy tắc, context chung”Bạn là trợ lý lập trình Python…”
User PromptYêu cầu cụ thể từng lần”Viết hàm sort list”
import anthropic client = anthropic.Anthropic() message = client.messages.create( model="claude-sonnet-4-5-20250514", max_tokens=1024, system="Bạn là trợ lý lập trình. Luôn trả lời bằng tiếng Việt. " "Code phải có type hints và docstring.", messages=[ {"role": "user", "content": "Viết hàm tính số Fibonacci thứ n"} ] )

Các lỗi thường gặp

❌ Prompt quá mơ hồ

Sai: "Giúp tôi với code" Đúng: "Giúp tôi debug lỗi TypeError trong hàm calculate_sum ở dòng 15. Đây là code: [paste code]"

❌ Thiếu context

Sai: "Tại sao lỗi này xảy ra?" Đúng: "Tôi đang build React app với TypeScript. Khi chạy `npm run build` tôi gặp lỗi sau: [paste error]. Đây là file có vấn đề: [paste code]"

❌ Yêu cầu quá nhiều cùng lúc

Sai: "Viết một ứng dụng web hoàn chỉnh với login, dashboard, API..." Đúng: Chia thành các bước nhỏ: 1. "Thiết kế database schema cho user authentication" 2. "Viết API endpoint login với FastAPI" 3. "Viết React component cho form đăng nhập"

❌ Không specify output format

Sai: "Liệt kê các framework Python" Đúng: "Liệt kê 5 framework Python phổ biến nhất dưới dạng bảng với các cột: Tên | Use case chính | Ưu điểm | Nhược điểm"

Bài tập thực hành 🧪

Bài 1: So sánh Zero-shot vs Few-shot

  1. Mở Claude.ai  hoặc Gemini 
  2. Thử classify sentiment với Zero-shot
  3. Thử lại với 3 ví dụ (Few-shot)
  4. So sánh độ chính xác

Bài 2: Chain-of-Thought

Hỏi một bài toán logic:

"Trong một cuộc đua, bạn vượt qua người đứng thứ 2. Bạn đang đứng thứ mấy?"

Thử với và không có “Hãy suy nghĩ từng bước”.

Bài 3: Viết System Prompt

Tạo system prompt cho:

  • Chatbot hỗ trợ khách hàng tiệm cafe
  • Trợ lý viết email chuyên nghiệp
  • Gia sư dạy toán cho học sinh cấp 2

Công cụ hỗ trợ

Công cụMô tả
PromptPerfect Tự động optimize prompt
LangSmith Debug và test prompts
Promptbase Marketplace mua/bán prompts

Tóm tắt

Kỹ thuậtMô tảDùng khi
Zero-ShotKhông cần ví dụTask đơn giản, phổ biến
Few-ShotCho 3-5 ví dụCần kiểm soát format
Chain-of-ThoughtYêu cầu giải thích từng bướcToán, logic
Role PromptingĐóng vai chuyên giaCần expertise cụ thể
Structured OutputYêu cầu format cụ thểJSON, Markdown…

Bài tiếp theo: Embedding - Vector representations cho text.

Last updated on