Cách prompt hiệu quả với Agentic IDE (Phần 2): Hiểu rõ bối cảnh (Context)
Ở phần 1, chúng ta đã tìm hiểu về các nguyên tắc cơ bản để viết một prompt rõ ràng và hiệu quả. Trong phần này, chúng ta sẽ đi sâu vào một yếu tố cực kỳ quan trọng quyết định chất lượng đầu ra của AI Agent: Bối cảnh (Context).
Cung cấp bối cảnh cũng giống như việc bạn hướng dẫn một lập trình viên mới tham gia vào dự án. Thay vì chỉ nói "Hãy tạo chức năng đăng nhập", bạn sẽ chỉ cho họ module xác thực ở đâu, model User trông như thế nào, và các component UI nào có thể tái sử dụng. Với Agentic IDE, cách làm cũng tương tự.
Tại sao "Bối cảnh" lại quan trọng?
AI Agent không thể tự "đoán" ra kiến trúc dự án, coding style, hay logic nghiệp vụ mà bạn đang xây dựng. Việc cung cấp bối cảnh sẽ giúp nó:
- Tăng độ chính xác: Prompt có bối cảnh sẽ cho ra kết quả phù hợp với chính dự án của bạn, thay vì những đoạn code chung chung.
- Giảm thiểu việc sửa đổi: Code được tạo ra khi đã có đủ "thông tin" sẽ cần ít thời gian refactor hơn, giúp bạn tiết kiệm công sức.
- Tái sử dụng code hiệu quả: Agent có thể tận dụng các hàm, biến, hoặc component đã có, đảm bảo tính nhất quán cho toàn bộ codebase.
Làm thế nào để "dạy" Agent về bối cảnh dự án?
Hiểu rõ codebase của chính mình là bước đầu tiên. Trước khi viết prompt, hãy dành chút thời gian để nắm được:
1. Cấu trúc thư mục
Bạn cần biết các loại file được đặt ở đâu. Ví dụ: controllers, services, models, components, v.v.
Khi đã nắm rõ, bạn có thể chỉ định chính xác vị trí trong prompt.
Ví dụ prompt:
Prompt tạo service
Tạo một service mới trong thư mục src/services để xử lý logic thanh toán. Service này cần import và sử dụng PaymentModel từ src/models/payment.js.
2. Các thư viện và dependency chính
Việc đề cập đến các thư viện (React, Vue, Express, Lodash...) mà dự án đang dùng sẽ giúp Agent sử dụng đúng cú pháp và API.
Ví dụ prompt:
Prompt sử dụng thư viện
Sử dụng axios để tạo một POST request đến endpoint /api/users. Dữ liệu gửi đi cần có name và email.
3. Coding style và pattern đang áp dụng
Hãy xem xét dự án của bạn đang tuân theo quy tắc nào:
- Dùng
functional componenthayclass component? - Dùng
async/awaithayPromise? - Quy tắc đặt tên biến, tên hàm ra sao?
Hãy đưa những chỉ dẫn này vào prompt để đảm bảo sự nhất quán.
Ví dụ prompt:
Prompt theo coding style
Viết một React functional component sử dụng hooks (useState, useEffect) để fetch và hiển thị danh sách sản phẩm từ API /api/products.
4. Sử dụng file và function cụ thể làm tham chiếu
Đây là kỹ thuật mạnh mẽ nhất. Bằng cách chỉ cho Agent thấy một đoạn code mẫu, nó có thể "bắt chước" và tạo ra một đoạn code mới với logic và cấu trúc tương tự.
Ví dụ prompt:
Prompt tham chiếu code có sẵn
Dựa vào cách hoạt động của hàm getUsers() trong file user.controller.js, hãy tạo một hàm getProducts() để lấy danh sách sản phẩm. Cũng cần tạo một route mới trong product.routes.js tương tự như file user.routes.js.
Ví dụ thực tế
Tình huống: Thêm một API endpoint mới trong project Express.js
Prompt thiếu bối cảnh (kém hiệu quả)
Tạo API lấy thông tin sản phẩm.
Prompt giàu bối cảnh (hiệu quả)
Trong project Express.js này, hãy thêm một GET endpoint mới là /api/products/:id. Endpoint này cần được định nghĩa trong file routes/product.routes.js. Logic để lấy dữ liệu sản phẩm từ database nên được đặt trong một hàm mới tên là findProductById trong file controllers/product.controller.js, tương tự như hàm findUserById đang có.
Kết luận
Hãy xem Agentic IDE như một người đồng nghiệp lập trình cùng bạn. Cung cấp cho nó càng nhiều thông tin, bối cảnh về dự án, nó sẽ càng trở nên hữu ích và thông minh hơn. Trước khi viết một yêu cầu, hãy tự hỏi: "Nếu mình giải thích việc này cho một người mới, mình sẽ cần cung cấp những thông tin gì?". Câu trả lời chính là "bối cảnh" mà bạn nên đưa vào prompt.