Đến nội dung chính
AI Coding

Bắt đầu với GitHub Copilot trong VS Code

Dùng Copilot viết hàm tính tổng giỏ hàng, tạo test và kiểm tra thay đổi ngay trong VS Code.

Tổng quan

Dành cho người học muốn tự hoàn thành bài thực hành bắt đầu với github copilot trong vs code, với dữ liệu mẫu có thể kiểm tra.

  • Thiết lập đúng tài khoản Copilot trong VS Code.
  • Tạo hàm nhỏ từ hợp đồng đầu vào/đầu ra.
  • Chạy test thay vì tin rằng gợi ý luôn đúng.

Bạn sẽ hoàn thành: basket.py và test_basket.py vượt qua ba test về giỏ hàng.

Chuẩn bị

  • VS Code, tài khoản GitHub có quyền dùng Copilot và Python 3.10+.
  • Biết tạo file và chạy lệnh Python trong terminal.

Copilot có lựa chọn truy cập và hạn mức tùy tài khoản, gồm lựa chọn miễn phí khi đủ điều kiện. Bài không yêu cầu gói trả phí cụ thể hoặc agent mode.

Thực hành từng bước

Luồng thực hành minh họa; không phải kết quả đo thực nghiệm.

Bước 1. Đăng nhập và mở thư mục bài tập

Trong VS Code, chọn biểu tượng Copilot hoặc mục Accounts để đăng nhập GitHub theo hướng dẫn chính thức. Nếu được yêu cầu cài hoặc bật phần mở rộng Copilot, hoàn thành bước đó. Mở một thư mục mới copilot-lab rồi tạo basket.py; không cấp quyền truy cập một repository công việc chưa được phép chia sẻ.

Bước 2. Nêu hợp đồng trước khi nhận code

PROMPT · HƯỚNG DẪN
Trong basket.py, viết total_cents(prices). prices là list số nguyên không âm biểu diễn xu; giỏ rỗng trả 0, số âm hoặc giá trị không phải int gây ValueError. Từ chối bool dù Python coi bool là int. Không gọi mạng, không cài thư viện. Giải thích ngắn cách kiểm tra đầu vào.

Gửi yêu cầu qua Copilot Chat với file đang mở. Nếu dùng gợi ý inline, đọc từng dòng trước khi chấp nhận. Câu trả lời có thể khác mẫu dưới; hợp đồng và test là tiêu chí chấp nhận.

PYTHON
def total_cents(prices):
    if not isinstance(prices, list):
        raise ValueError("prices must be a list")
    if any(type(p) is not int or p < 0 for p in prices):
        raise ValueError("invalid price")
    return sum(prices)

Bước 3. Tạo test độc lập với câu trả lời

Lưu đoạn dưới vào test_basket.py cạnh basket.py. Các test cố ý bao gồm True để phát hiện code dùng isinstance(p, int) quá rộng. Đây là các kiểm tra tối thiểu, không phải test mọi giỏ hàng.

PYTHON
import unittest
from basket import total_cents

class BasketTests(unittest.TestCase):
    def test_total(self):
        self.assertEqual(total_cents([125, 250]), 375)
    def test_empty(self):
        self.assertEqual(total_cents([]), 0)
    def test_invalid(self):
        for value in [-1, "5", True]:
            with self.assertRaises(ValueError):
                total_cents([value])

if __name__ == "__main__":
    unittest.main()
SHELL
python3 -m unittest -v

Bước 4. Rà soát diff và một thay đổi nhỏ

Yêu cầu Copilot thêm test cho đầu vào không phải list, tự chạy lại test và đọc diff. Xác nhận không có dependency, cấu hình hay file không liên quan được thêm. Không commit hoặc gửi code tự động trong bài thực hành.

Kiểm tra kết quả

  • Ba test ban đầu chạy OK; test bổ sung kiểm tra đầu vào không phải list.
  • Bạn giải thích được vì sao True phải bị từ chối.

Xử lý lỗi thường gặp

Copilot báo chưa có quyền truy cập

Nguyên nhân: VS Code dùng sai tài khoản hoặc tài khoản hết hạn mức.

Cách xử lý: Kiểm tra Accounts và trạng thái Copilot; dùng hướng dẫn chính thức, không nhập token vào file code.

Test không tìm được basket

Nguyên nhân: Đang chạy ở sai thư mục.

Cách xử lý: Đặt hai file cùng thư mục rồi chạy python3 -m unittest -v tại đó.

Bài tập & mở rộng

  • Thêm test cho số 0 và tổng nhiều phần tử.
  • Tiếp tục bài debug/refactor để luyện phát hiện lỗi trong code AI tạo.

Ví dụ dùng đơn vị xu để tránh sai số float; không phải hệ thống thanh toán hay quy tắc thuế thực tế. Không chấp nhận code chỉ vì công cụ đã tạo.

Nguồn tham khảo

  1. VS Code Copilot setup
  2. Python unittest

Kiến thức liên quan

Tiếp tục thực hành