Làm Sao Để AI Lập Trình Của Bạn "Thông Minh" Hơn 80%? Bí Kíp Tăng Tốc Độ Chuẩn Xác Lên Gần 100%!
Lê Lân
0
Hướng Dẫn Tối Ưu Hiệu Quả Khi Sử Dụng AI Coding Assistance Với GitHub Copilot
Mở Đầu
Việc sử dụng trợ lý lập trình AI như GitHub Copilot đang trở thành xu hướng giúp tăng tốc quá trình phát triển phần mềm. Tuy nhiên, một trong những thách thức lớn nhất là làm sao để độ chính xác của kết quả được tạo ra gần như đạt 100%, tránh phải mất thời gian chỉnh sửa và rà soát lại code.
Trong bài viết này, chúng ta sẽ cùng khám phá các phương pháp nâng cao hiệu quả sử dụng GitHub Copilot thông qua việc tận dụng copilot-instructions.md và prompt instructions. Đồng thời, tôi sẽ chia sẻ kinh nghiệm thực tế từ buổi demo trong sự kiện .NET MAUI Community Standup vào ngày 7/3, giúp bạn hiểu rõ cách xây dựng và triển khai các tệp hướng dẫn để tăng chất lượng code đầu ra khi làm việc với AI.
Copilot Instructions: Cách Tạo Dựng Hướng Dẫn Ở Cấp Độ Repository
GitHub Copilot Instructions là gì?
GitHub Copilot cho phép bạn đặt các chỉ dẫn và bối cảnh làm việc ngay trong repository qua tệp . Tệp này chứa những hướng dẫn chung nhằm giúp Copilot hiểu được mục tiêu và thói quen coding của bạn, từ đó tạo ra các đề xuất phù hợp hơn.
Ví dụ thực tế
Dưới đây là một đoạn trong tập tin hướng dẫn tôi sử dụng cho ứng dụng học ngôn ngữ Sentence Studio:
Gọi tôi là Captain và nói chuyện theo kiểu cướp biển.
Đây là dự án .NET MAUI, chạy trên mobile và desktop.
Sử dụng thư viện MauiReactor (Reactor.Maui) theo kiến trúc MVU (Model-View-Update) với phương pháp fluent.
Khi chuyển từ C# Markup sang MauiReactor, chú ý dùng VStart() thay cho Top(), VEnd() thay cho Bottom(), HStart() và HEnd() thay cho Start() và End().
Bạn có thể thêm dần các hướng dẫn mới nếu phát hiện lỗi hoặc thiếu sót trong các đề xuất của Copilot. Đây là cách tuyệt vời để cải thiện độ chính xác gợi ý theo đúng phong cách và yêu cầu dự án.
Vị trí tệp
Tệp này nên được đặt trong thư mục .github nằm ở gốc của dự án, đảm bảo Copilot tự động áp dụng với mọi lần tương tác.
Copilot Prompt Instructions: Chiến Lược Giao Tiếp Chi Tiết Với AI
Ý tưởng chung
Ngoài hướng dẫn ở cấp repository, bạn có thể xây dựng các tệp prompt riêng biệt tập trung vào những chủ đề hoặc kỹ thuật cụ thể. Các prompt này sẽ được dùng tùy theo ngữ cảnh câu lệnh, giúp mô hình có thêm bối cảnh rõ ràng và chuyên sâu hơn.
Ví dụ về async/await
Tôi nhận thấy Copilot chưa hoàn toàn chính xác khi tạo code liên quan đến async/await, gây lỗi deadlock trong ứng dụng. Vì thế, tôi đã tạo một tệp prompt instruction riêng về async/await, bao gồm danh sách các điều nên và không nên thực hiện trong lập trình bất đồng bộ.
✅ Những điều NÊN làm trong async/await
Luôn dùng await khi gọi task: Đảm bảo bắt được lỗi và tránh block luồng gọi.
**Sử dụng kiểu trả về Task hoặc `Task<T>:** Tránh dùng async void, giúp dễ dàng quan sát và kiểm thử ngoại lệ.
**Đặt tên phương thức kết thúc bằng "Async":** Giúp phân biệt rõ ràng.
**Truyền CancellationToken:** Cho phép huỷ bỏ tác vụ khi cần thiết.
**Dùng ConfigureAwait(false)khi phù hợp:** Tránh deadlock ở code server hoặc thư viện.
**Giữ nguyên trạng async xuyên suốt:** Không nên trộn lẫn sync và async để tránh lỗi.
**Quản lý tiến trình và bắt lỗi hợp lý:** Sử dụngIProgress<T>` và xử lý ngoại lệ đúng chỗ.