AI cho Dev

Prompt Engineering cho Developer: Cách viết prompt để AI sinh code chất lượng

Tại sao cùng dùng ChatGPT mà người khác được code xịn, còn bạn thì nhận về đống rác? Bí quyết nằm ở cách bạn đặt câu hỏi.

newspaper

Nguyễn Minh Tuấn Nguồn

OpenAI Cookbook 30 tháng 12, 2025 schedule 4 phút đọc
Prompt Engineering cho Developer: Cách viết prompt để AI sinh code chất lượng
Featured Image

Tôi từng nghĩ AI coding assistant là trò hề. Lần đầu dùng ChatGPT để viết một cái Controller Laravel, tôi nhận về một đống code dùng Laravel 5 (trong khi tôi đang dùng Laravel 10), sai cú pháp, và còn bịa ra một cái Facade không tồn tại.

Nhưng vấn đề không phải ở AI. Vấn đề là tôi không biết cách “nói chuyện” với nó.

Sau 6 tháng thử nghiệm, tôi nhận ra rằng chất lượng output của AI phụ thuộc đến 80% vào cách bạn viết prompt. Bài viết này chia sẻ những gì tôi học được.

Tại sao Prompt lại quan trọng đến vậy?

AI như ChatGPT hay Claude không có khả năng đọc suy nghĩ của bạn. Nó chỉ biết dựa vào những gì bạn viết ra. Nếu bạn hỏi mơ hồ, nó sẽ trả lời mơ hồ.

Một prompt tệ:

Viết cho tôi một hàm validate email

AI sẽ đoán mò: Ngôn ngữ nào? JavaScript? Python? PHP? Validate đơn giản hay check MX record? Trả về boolean hay throw exception?

Một prompt tốt:

Viết một hàm PHP (Laravel 10) để validate email.
Yêu cầu:
- Kiểm tra format email hợp lệ.
- Kiểm tra domain có MX record không (dùng checkdnsrr).
- Trả về boolean.
- Có PHPDoc comment.

Sự khác biệt rõ ràng phải không? Prompt thứ hai cung cấp đủ Context (ngữ cảnh) để AI hiểu chính xác bạn cần gì.

Công thức viết Prompt hiệu quả

Sau nhiều lần thử nghiệm, tôi đúc kết lại một công thức đơn giản:

Context + Task + Format + Constraints

1. Context (Ngữ cảnh)

Nói cho AI biết bạn đang làm gì, dùng công nghệ gì.

Tôi đang làm một API e-commerce bằng Laravel 10, 
dùng Sanctum để auth, và Repository Pattern.

2. Task (Nhiệm vụ cụ thể)

Mô tả rõ ràng bạn muốn AI làm gì.

Viết một Service class để xử lý logic đặt hàng (checkout).
Service này cần:
- Validate cart items
- Tính tổng tiền (bao gồm discount nếu có)
- Tạo Order record trong database
- Trừ stock của sản phẩm

3. Format (Định dạng output)

Chỉ rõ bạn muốn nhận output như thế nào.

Trả về code PHP với:
- PHPDoc đầy đủ
- Chia thành các method nhỏ, rõ ràng
- Có type hints

4. Constraints (Ràng buộc)

Nêu những gì KHÔNG được làm hoặc giới hạn.

Không dùng Facade trực tiếp trong Service.
Không throw exception chung chung, dùng custom exceptions.

Kỹ thuật nâng cao: Few-shot Prompting

Đôi khi, thay vì giải thích dài dòng, bạn chỉ cần đưa ví dụ.

Tôi muốn bạn viết migration cho các bảng theo format sau:

Ví dụ:
Input: Bảng users với name, email, password
Output:
Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->string('password');
    $table->timestamps();
});

Bây giờ, viết migration cho:
Bảng products với name, price (decimal), stock (integer), category_id (foreign key)

Kỹ thuật này gọi là Few-shot prompting. Bạn “dạy” AI bằng 1-2 ví dụ trước khi yêu cầu nó làm việc thực sự.

Xử lý khi AI trả lời sai

Đừng bỏ cuộc khi nhận được code rác. Hãy phản hồi lại.

Prompt tiếp theo:

Code trên bị lỗi: Eloquent không có method `findOrCreate`, 
đúng ra phải là `firstOrCreate`. 

Ngoài ra, thiếu xử lý transaction cho việc tạo Order và trừ stock.
Sửa lại giúp tôi.

Việc chỉ rõ lỗi giúp AI hiểu sai ở đâu và sửa đúng hướng. Đây là cách “pair programming” với AI hiệu quả nhất.

Một số Prompt Template tôi hay dùng

Debug lỗi:

Tôi gặp lỗi sau trong Laravel:
[Paste error message]

File liên quan: [Paste code]

Giải thích nguyên nhân và cách fix.

Refactor code:

Refactor đoạn code sau theo SOLID principles.
Giữ nguyên logic, chỉ cải thiện cấu trúc.
Giải thích ngắn gọn lý do mỗi thay đổi.

[Paste code]

Viết test:

Viết PHPUnit test cho class sau.
Bao gồm:
- Test case cho happy path
- Test case cho edge cases (null, empty, invalid input)
- Mock external dependencies

[Paste class code]

Kết luận

Prompt Engineering không phải là “hack” hay “mẹo vặt”. Đó là kỹ năng giao tiếp với một công cụ mới. Càng viết prompt rõ ràng, bạn càng nhận được kết quả chất lượng.

Lời khuyên của tôi:

  • Luôn cung cấp đủ Context (framework, version, mục đích).
  • Chia task lớn thành nhiều prompt nhỏ.
  • Đừng ngại phản hồi và yêu cầu AI sửa lại.
  • Lưu lại những prompt hiệu quả để dùng lại sau.

AI không thay thế được Developer, nhưng một Developer biết dùng AI sẽ làm việc hiệu quả gấp nhiều lần.

quizQuick Quiz
Câu 1/3

Theo bài viết, yếu tố nào quan trọng nhất trong một prompt tốt?

history_edu Góc học tập & giải trí

Thử Thách Kiến Thức Lịch Sử?

Khám phá hàng trăm câu hỏi trắc nghiệm lịch sử thú vị tại HistoQuiz. Vừa học vừa chơi, nâng cao kiến thức ngay hôm nay!

Chơi Ngay arrow_forward
public

OpenAI Cookbook

Nhà xuất bản gốc

Bài viết này được trích dẫn và tổng hợp từ OpenAI Cookbook, nơi cung cấp các bài viết và tài liệu chất lượng cao.