Prompt engineering trong VS Code
Các cách viết prompt và cung cấp ngữ cảnh để nhận gợi ý inline và câu trả lời chat tốt hơn từ AI trong VS Code.
This content is currently available in Vietnamese only.
Bài này tóm tắt các cách viết prompt để nhận phản hồi (response) tốt và sát hơn từ AI trong VS Code. Prompt engineering (hay prompt crafting) là việc quyết định thông tin nào được đóng gói và gửi tới endpoint của AI, và đóng gói ra sao.
Nếu mới làm quen với VS Code hoặc AI, bạn có thể đọc tổng quan AI trong VS Code hoặc bắt đầu với tutorial Getting started. Có thêm video Core principles of prompt engineering with GitHub Copilot.
Tận dụng gợi ý inline
Gợi ý inline tự động đề xuất phần tiếp theo cho code, comment, test… Bạn có thể "gợi ý ngược" để AI đưa ra đề xuất tốt nhất.
Cung cấp ngữ cảnh
AI làm tốt nhất khi có đủ ngữ cảnh (context) để biết bạn đang làm gì, giống như khi bạn nhờ đồng nghiệp giúp.
- Mở các file liên quan: với gợi ý inline, VS Code xem file hiện tại và các file đang mở để phân tích ngữ cảnh. Mở sẵn file liên quan giúp AI thấy bức tranh rộng hơn về dự án.
- Comment ở đầu file: một đoạn giới thiệu ngắn, cấp cao giúp AI hiểu tổng thể phần bạn đang viết.
- Tự khai báo include và tham chiếu module: bạn biết rõ nhất cần dependency nào. Việc này còn cho AI biết framework, thư viện và phiên bản bạn muốn dùng. Ví dụ trong TypeScript, muốn log kết quả của hàm
add: khi file không có import nào, AI gợi ýconsole.log; khi đã tham chiếuLog4js, AI gợi ý log bằng framework đó. - Đặt tên hàm có nghĩa: một hàm tên
fetchData()chẳng nói lên gì với đồng nghiệp, và với AI cũng vậy. Tên rõ nghĩa giúp AI sinh thân hàm đúng ý. - Comment hàm cụ thể, đúng phạm vi: tên hàm không thể dài mãi; comment bổ sung chi tiết AI cần biết.
- Mồi bằng code mẫu: dán một đoạn code gần với thứ bạn cần vào editor để AI bắt đúng ngôn ngữ và tác vụ, rồi xoá đi khi AI đã gợi ý đúng. Cách này đặc biệt hữu ích khi AI cứ gợi ý code của phiên bản thư viện cũ.
Nhất quán và giữ chất lượng cao
AI bám theo code hiện có để sinh gợi ý cùng khuôn mẫu, nên "rác vào, rác ra". Giữ chất lượng cao đòi hỏi kỷ luật. Khi đang code nhanh, làm tạm cho chạy được, bạn có thể tạm tắt gợi ý: chọn menu Copilot trên Status Bar rồi chọn Snooze (mỗi lần cộng thêm năm phút). Muốn bật lại, chọn Cancel Snooze trong menu Copilot.
Tận dụng chat
Thêm ngữ cảnh liên quan
Gõ # rồi tên mục ngữ cảnh để thêm vào prompt. VS Code hỗ trợ nhiều loại: file, thư mục, symbol trong code, tool, output terminal, thay đổi source control… Gõ # trong ô chat để xem danh sách, hoặc chọn Add Context trong Chat view để mở bộ chọn ngữ cảnh.
Ví dụ #<file name> hoặc #<folder name> tham chiếu file hay thư mục trong workspace, giúp câu trả lời sát với code của bạn hơn: "Can you suggest improvements to #package.json?" hay "How do I add an extension in #devcontainer.json?".
Nếu không biết file nào liên quan, dùng #codebase để VS Code tự tìm file phù hợp trong codebase. Xem thêm dùng ngữ cảnh trong chat.
Cụ thể và đơn giản
Hãy yêu cầu cụ thể và chia tác vụ lớn thành nhiều tác vụ nhỏ. Ví dụ, đừng đòi cùng lúc một app Express dùng TypeScript và Pug, có trang products lấy dữ liệu từ MongoDB. Thay vào đó, trước hết yêu cầu tạo app Express với TypeScript và Pug, sau đó thêm trang products, cuối cùng mới lấy dữ liệu từ database.
Nói rõ input, output, API hoặc framework muốn dùng. Prompt càng cụ thể, kết quả càng tốt. Thay vì "read product data from the database", hãy viết "read all products by category, return the data in JSON format, and use the Mongoose library".
Lặp để cải thiện lời giải
Bạn không phải chấp nhận phản hồi đầu tiên. Chat nắm cả code đã sinh lẫn hội thoại hiện tại, nên bạn có thể yêu cầu cải thiện tiếp. Ví dụ, dùng Inline Chat tạo hàm tính số Fibonacci, rồi yêu cầu bản không dùng đệ quy, rồi yêu cầu theo quy ước code hoặc đặt tên biến tốt hơn. Kể cả khi đã chấp nhận kết quả, bạn vẫn có thể nhờ AI cải thiện code sau.
Tài liệu thêm
- Effective Prompting for GitHub Copilot
- Pragmatic techniques to get the most out of GitHub Copilot
- Best practices for prompting GitHub Copilot in VS Code
- How to use GitHub Copilot: Prompts, tips, and use cases
Nguồn
- Tóm tắt từ https://raw.githubusercontent.com/microsoft/vscode-docs/main/docs/agents/guides/prompt-engineering-guide.md, giấy phép CC-BY-3.0-US.