Hôm nay mình sẽ hướng dẫn anh em viết prompt cho GitHub Copilot để hỏi về code và sửa yêu cầu khi câu trả lời lệch ý. Một prompt là yêu cầu anh em gửi để công cụ làm việc.
Mình soạn bài này từ tài liệu chính thức của GitHub, tập trung vào cách viết yêu cầu và đưa đúng phần code vào chat. Tài liệu này không hướng dẫn cài đặt, nên anh em cần mở được chat trong IDE trước.
Các bước dưới đây làm sau khi anh em đã mở được chat trong IDE: viết yêu cầu, đưa code vào, rồi kiểm tra kết quả. Anh em dùng IDE, phần mềm để đọc và sửa code như Visual Studio Code hay JetBrains.
Bước một: Viết yêu cầu cho GitHub Copilot
Anh em nói rõ mục tiêu trước, rồi thêm các điều kiện mà câu trả lời cần đáp ứng, trong đó yêu cầu quan trọng nhất cần nằm ở đầu để Copilot đọc trước. Tài liệu ghi Copilot chú ý hơn tới đầu và cuối prompt.

Hàm là phần code nhận đầu vào và xử lý một việc. Ví dụ trong tài liệu yêu cầu viết hàm bằng JavaScript, còn phần log chạy thử ở cuối bài dùng Python, nên anh em cần phân biệt ngôn ngữ của hai ví dụ này.
Mình cần một hàm kiểm tra số nguyên tố, nhận một số nguyên và trả về true nếu số ấy là số nguyên tố, đồng thời báo lỗi nếu đầu vào không phải số nguyên dương.
Anh em có thể đối chiếu câu trả lời với yêu cầu ấy. Mình để luôn điều kiện báo lỗi trong prompt, để lúc đọc code anh em biết cần xem đầu vào sai được xử lý thế nào, chứ không chỉ nhìn kết quả.
Muốn kết quả dạng nào thì viết thẳng ra, ví dụ “Trả kết quả dưới dạng JSON” thay vì “Nhớ luôn trả JSON”. Anh em cứ nói thẳng mình cần hàm nhận gì và trả về kết quả gì.
Bước hai: Đưa đúng phần code vào chat
Ngoài câu hỏi, Copilot còn đọc code trong file đang mở và lịch sử chat, nên anh em chọn kỹ thứ gửi kèm. Với chat, anh em mở file chứa hàm, bôi đen đoạn cần hỏi rồi gõ @ để đính kèm thêm file nếu cần.

Anh em gọi đúng tên hàm để Copilot biết phần cần giải thích. Chẳng hạn, anh em bôi đen đoạn code cần hỏi rồi viết “Hàm createUser làm gì?”, thay vì để nó đoán anh em đang nói tới file hay câu trả lời trước.
Trong khung chat, anh em gõ @ để đính kèm những thứ liên quan như file, issue, pull request hay repo. Repo là nơi chứa code cùng lịch sử thay đổi của project.
Một số IDE hỗ trợ /fix và /tests; anh em xem công cụ đang dùng có hỗ trợ những lệnh ấy hay không. Anh em chỉ đính kèm phần code liên quan trực tiếp tới câu hỏi, đừng gửi cả file khi chỉ hỏi một hàm.
Bước ba: Thêm ví dụ và chia nhỏ việc
Anh em thêm ví dụ vào prompt, như phần yêu cầu trong log: số nguyên tố cần trả về đúng, hợp số cần trả về sai, còn số âm phải báo lỗi.
Tài liệu gợi ý nhờ Copilot viết test trước khi viết hàm, tức các đoạn code dùng để kiểm tra kết quả thực tế có khớp với kết quả anh em muốn hay không. Sau đó, anh em yêu cầu nó viết hàm đáp ứng các test.
Nếu yêu cầu gồm nhiều phần, mình sẽ tách thành những việc nhỏ rồi hỏi lần lượt, theo cách tài liệu chia việc tạo trò tìm chữ. Anh em nhờ nó tạo lưới chữ trước, sau đó viết phần tìm từ và cuối cùng ghép các phần lại, thay vì yêu cầu nó làm hết ngay trong một lượt.
Mỗi lượt hỏi cần nói rõ phần việc anh em muốn xử lý.
Bước bốn: Sửa tiếp trên câu trả lời
Khi kết quả chưa đúng ý, anh em có thể giữ câu trả lời và yêu cầu sửa phần còn thiếu, đồng thời nhắc lại điều kiện cụ thể mà nó chưa đáp ứng. Tài liệu ghi với Copilot Chat, anh em có thể nhắc tới câu trả lời trước trong yêu cầu kế tiếp, hoặc xoá câu trả lời đó rồi hỏi lại.
Anh em chỉ rõ điều kiện còn thiếu trong câu trả lời trước. Chẳng hạn, nếu hàm chưa báo lỗi khi nhận số âm, anh em nêu đúng trường hợp ấy và yêu cầu sửa, thay vì chỉ nói chưa ổn rồi chờ nó đoán.
Đổi sang việc khác thì anh em mở chat mới, vì Copilot vẫn đọc lịch sử cũ khi trả lời. Tài liệu nói thêm rằng anh em chỉ xoá hoặc quay lại các lượt cũ được ở những nơi có hỗ trợ thao tác ấy.
Bước năm: Kiểm tra trước khi dùng code
Mình đọc tài liệu thấy GitHub dặn phải đọc lại và chạy test trước khi tin code AI viết, cứ coi như đang soát bài của đồng nghiệp. Mình sẽ đối chiếu từng điều kiện với yêu cầu đã viết ban đầu.
Anh em có thể hỏi Copilot hàm xử lý đầu vào âm thế nào để hiểu từng bước. Nhưng anh em vẫn cần chạy các test đã chuẩn bị, vì phần giải thích của Copilot chưa cho biết code có thực sự trả đúng kết quả với từng đầu vào hay không.
Nếu anh em không biết code, hãy gửi nguyên yêu cầu ban đầu cùng các ví dụ cho người phụ trách kỹ thuật. Họ cần biết kết quả nào phải có và trường hợp nào phải báo lỗi. Người kiểm tra sẽ dựa vào đó để đối chiếu code được gửi.
Mình đọc lại log chạy thử
Anh em chỉ xem nó như một ví dụ minh hoạ trong phần hướng dẫn này. Log này ghi một lần thử bằng Claude Code, chứ không phải chat của Copilot, nên nó không cho thấy Copilot trả lời ra sao.
Log ghi lại một yêu cầu viết hàm Python kiểm tra số nguyên tố gửi cho Claude Sonnet qua Claude Code (claude -p), không kèm file hay công cụ nào. Model là AI tạo câu trả lời từ yêu cầu anh em gửi.
Trong log, prompt yêu cầu hàm nhận số nguyên, trả kết quả kiểm tra và báo lỗi nếu đầu vào không phải số nguyên dương, kèm ví dụ. Log ghi Claude Sonnet trả lời sau 4,3 giây, nhưng con số này không nói gì về tốc độ của Copilot.
Theo log, câu trả lời của Claude Sonnet dài 91 chữ, gồm một hàm và một dòng giải thích. Mấy con số này chỉ là thông tin mà phần log ghi lại. Log chưa có kết quả test. Mình chưa biết hàm đúng hay sai nếu chỉ đọc câu trả lời ấy.
Phần code trong log có xử lý đầu vào kiểu bool, tức giá trị đúng hoặc sai, và báo ValueError khi đầu vào không phải số nguyên dương. Ở đây, ValueError là lỗi báo rằng giá trị đầu vào không hợp lệ.
Anh em có thể lấy cách viết yêu cầu trong log làm mẫu. Phần anh em lấy được từ log là cách viết prompt: nói rõ việc cần làm, nêu điều kiện báo lỗi và đưa ví dụ.
Anh em bỏ qua thời gian trả lời khi muốn biết Copilot sẽ xử lý ra sao.
Lỗi hay gặp
Một lỗi tài liệu nhắc tới là anh em hỏi “cái này làm gì” mà Copilot không biết anh em đang nói tới file hay câu trả lời trước. Anh em hãy chọn lại đoạn code và gọi đúng phần muốn hỏi.
Anh em nên giữ lịch sử chat chỉ gồm những gì liên quan tới việc đang làm. Khi đổi việc, anh em mở chat mới rồi chỉ đưa lại những thông tin cần cho câu hỏi tiếp theo, theo hướng dẫn của tài liệu về việc giữ lịch sử liên quan.
Nếu anh em chưa kiểm tra được code thì đừng vội đưa vào việc thật, cứ dừng ở phần giải thích cho tới khi kiểm tra được.



