Dùng AI

Đưa dự án AI lên GitHub làm portfolio xin việc

Một portfolio AI trên GitHub gồm bốn phần: profile README giới thiệu bạn là ai, tối đa sáu kho hoặc gist được ghim lên trang cá nhân, README từng dự án nêu rõ bài toán, dữ liệu, kết quả có số liệu và cách chạy, và một bản demo người xem bấm vào dùng được. Hai, ba dự án làm kỹ có giá trị hơn hàng chục kho dở dang.

Ý chính
  • Trang cá nhân GitHub là thứ người xem mở đầu tiên. Làm ba việc: profile README, ghim các dự án tốt nhất (tối đa sáu mục), ẩn hoặc lưu trữ các kho bài tập dở dang.
  • Mỗi dự án trong portfolio cần README trả lời: bài toán gì, dữ liệu nào, kết quả ra sao (có con số), chạy thế nào.
  • Một bản demo bấm vào dùng được, qua Hugging Face Spaces hay GitHub Pages, giúp người không đọc code vẫn thấy dự án hoạt động.
  • Code sạch là một phần của portfolio: có requirements, có test, không có khóa API hay dữ liệu cá nhân, có giấy phép.

Bài này dựa trên GitHub Docs về profile README, ghim kho, GitHub Pages và README, đọc ngày 11/11/2026. Nếu bạn chưa từng đưa code lên GitHub, bắt đầu từ bài đưa code lên GitHub.

Người xem portfolio cần thấy gì

Người xem portfolio của sinh viên ngành AI, dù là người tuyển dụng hay giảng viên hướng dẫn, thường muốn trả lời nhanh ba câu: bạn làm được gì, bạn làm tới đâu, và bạn có hoàn thành việc không. Một trang GitHub có hai, ba dự án hoàn chỉnh, mỗi dự án có README rõ ràng và chạy được, trả lời ba câu này tốt hơn nhiều so với hàng chục kho chỉ có một commit "first commit".

Vì vậy hãy nghĩ portfolio như một sản phẩm: chọn lọc, sắp xếp, và làm cho người xem tốn ít công nhất.

Profile README: lời giới thiệu trên trang cá nhân

Theo GitHub Docs, profile README hiện trên trang cá nhân khi bạn có một kho công khai trùng tên với tên người dùng, và kho đó có tệp README.md ở thư mục gốc, có nội dung. Cách tạo: bấm dấu +, chọn New repository, đặt tên đúng bằng tên người dùng của bạn, chọn Public, bật Add README, tạo kho rồi sửa README.

Nội dung nên ngắn, khoảng mười dòng:

  • Một câu bạn là ai: ví dụ sinh viên năm ba, quan tâm xử lý ngôn ngữ tự nhiên tiếng Việt.
  • Hai, ba dự án nổi bật, mỗi dự án một dòng có liên kết và kết quả chính.
  • Công cụ bạn dùng thành thạo: Python, PyTorch, scikit-learn, Git.
  • Cách liên hệ: email hoặc trang cá nhân.

Không cần nhiều huy hiệu, ảnh động hay bảng thống kê. Chữ rõ ràng và liên kết đúng có giá trị hơn.

Ghim sáu dự án tốt nhất

GitHub Docs cho biết bạn ghim được tối đa sáu mục, gồm kho và gist, lên trang cá nhân để người khác nhanh chóng thấy những việc tốt nhất của bạn. Vào trang cá nhân, chọn tùy chỉnh mục ghim ở phần "Popular repositories" hoặc "Pinned", chọn tối đa sáu mục, kéo thả để đổi thứ tự rồi lưu.

Gợi ý sắp xếp: dự án hoàn chỉnh nhất lên đầu; xen một dự án học máy cổ điển, một dự án học sâu hay mô hình ngôn ngữ, và một đóng góp mã nguồn mở nếu có. Các kho bài tập theo môn thì chuyển sang riêng tư hoặc đánh dấu lưu trữ (archive) để trang chính gọn.

Portfolio AI trên GitHub Người xem có vài phút: cho họ thấy ngay Profile READMEKho trùng tênbạn là ai, làm gì Ghim 6 mụcDự án tốt nhấtkho và gist README dự ánBài toán, số liệucách chạy DemoSpaces, Pagesảnh, GIF Ít dự án làm kỹ hơn nhiều kho dở dang
Portfolio AI trên GitHub Profile READMEKho trùng tênbạn là ai, làm gì Ghim 6 mụcDự án tốt nhấtkho và gist README dự ánBài toán, số liệucách chạy DemoSpaces, Pagesảnh, GIF Ít dự án làm kỹ hơn nhiều kho dở dang
Hình 1. Bốn phần của một portfolio AI trên GitHub: profile README trong kho trùng tên người dùng để giới thiệu bạn là ai và làm gì; ghim tối đa sáu dự án tốt nhất (kho hoặc gist); README từng dự án nêu bài toán, số liệu và cách chạy; và demo qua Hugging Face Spaces, GitHub Pages hoặc ảnh, GIF. Ít dự án làm kỹ có giá trị hơn nhiều kho dở dang.

Chọn dự án nào để đưa vào

Dự án tốt cho portfolio có một bài toán cụ thể, dữ liệu rõ nguồn và kết quả đo được. Vài hướng hợp với sinh viên học AI:

  • Phân loại văn bản tiếng Việt: cảm xúc bình luận, phân loại tin tức. Có nhiều bộ dữ liệu công khai, kết quả đo bằng độ chính xác, F1.
  • Thị giác máy tính nhỏ: nhận diện một loại đối tượng cụ thể, so sánh vài mô hình.
  • Hỏi đáp trên tài liệu: chatbot trả lời dựa trên giáo trình một môn học, có trích nguồn đoạn văn.
  • Agent nhỏ: một agent dùng vài công cụ để làm một việc lặp lại, có ghi chép cách bạn giới hạn quyền của nó.

Một dự án làm lại từ bài hướng dẫn vẫn được, nếu bạn thêm phần của mình: dữ liệu khác, so sánh thêm mô hình, phân tích lỗi. Ghi rõ phần nào theo hướng dẫn nào, phần nào là bạn làm, và phần nào có dùng AI hỗ trợ viết code.

README từng dự án

Theo GitHub Docs, README nên nói dự án làm gì, vì sao hữu ích, cách bắt đầu, hỏi trợ giúp ở đâu. Với dự án AI trong portfolio, cụ thể hơn:

  1. Bài toán: một đoạn ngắn, kèm ảnh chụp hoặc GIF kết quả ở ngay đầu.
  2. Dữ liệu: nguồn, kích thước, cách chia tập huấn luyện và kiểm tra, giấy phép của dữ liệu.
  3. Cách chạy: lệnh cài và lệnh chạy trong khối code, chép vào là chạy được.
  4. Kết quả: con số trên tập kiểm tra, so với một mô hình đơn giản làm mốc. Nói cả chỗ mô hình còn sai.
  5. Giấy phép: chọn một giấy phép, xem bài đọc README và LICENSE.

Đoạn Python dưới đây soát một tệp README theo đúng danh sách trên: tìm các mục tiêu đề (bỏ qua dòng # là chú thích trong khối code), xem có ảnh hay liên kết demo không, kết quả có con số không, và lệnh chạy có nằm trong khối code không. Hai README mẫu cho thấy sự khác biệt: README đầy đủ đạt 8/8, còn README kiểu "Code đồ án môn học máy" thiếu cả tám mục.

"""Soát README của một dự án AI trước khi đưa vào portfolio: còn thiếu mục nào người xem cần.

Chạy: python cham_readme.py duong/dan/README.md
Chạy không tham số: soát hai README mẫu có sẵn.
Cách soát đơn giản: tìm tiêu đề mục (dòng bắt đầu bằng #) và vài dấu hiệu trong nội dung.
"""
import re
import sys

MUC = [
    ("Mô tả bài toán", ["bài toán", "giới thiệu", "about", "overview", "mục tiêu"]),
    ("Dữ liệu", ["dữ liệu", "data", "dataset"]),
    ("Cách chạy", ["cài đặt", "cách chạy", "install", "usage", "getting started"]),
    ("Kết quả", ["kết quả", "results", "đánh giá", "evaluation"]),
    ("Giấy phép", ["giấy phép", "license"]),
]


def tieu_de(van_ban):
    """Các dòng tiêu đề Markdown, bỏ qua dòng # nằm trong khối code (chú thích của bash, Python)."""
    ds, trong_code = [], False
    for d in van_ban.splitlines():
        if d.lstrip().startswith("```"):
            trong_code = not trong_code
        elif not trong_code and d.startswith("#"):
            ds.append(d.lstrip("#").strip().lower())
    return ds


def soat(van_ban):
    td = tieu_de(van_ban)
    thap = van_ban.lower()
    kq = []
    for ten, tu in MUC:
        kq.append((ten, any(any(t in h for t in tu) for h in td)))
    kq.append(("Có ảnh hoặc demo", bool(re.search(r"!\[[^\]]*\]\(|huggingface\.co/spaces|\.gif\b", thap))))
    kq.append(("Kết quả có con số", bool(re.search(r"\d+(?:[.,]\d+)?\s*%|\b(?:accuracy|f1|mae|rmse|bleu)\b\s*[:=]?\s*\d", thap))))
    kq.append(("Lệnh chạy trong khối code", "```" in van_ban))
    return kq


def in_bao_cao(ten, van_ban):
    kq = soat(van_ban)
    print(f"== {ten}: đạt {sum(d for _, d in kq)}/{len(kq)}")
    for muc, dat in kq:
        if not dat:
            print(f"  thiếu: {muc}")
    return kq


README_TOT = """# Phân loại bình luận tiếng Việt

## Bài toán
Phân loại bình luận sản phẩm thành tích cực, tiêu cực.

![Ảnh giao diện](anh/demo.png)

## Dữ liệu
12.000 bình luận đã gán nhãn, chia 80/10/10.

## Cách chạy
```bash
pip install -r requirements.txt
python du_doan.py "Sản phẩm rất tốt"
```

## Kết quả
Accuracy 91,2% trên tập kiểm tra; F1 = 0,90.

## Giấy phép
MIT
"""

README_THIEU = """# project-final

Code đồ án môn học máy.

pip install -r requirements.txt
python main.py
"""


def chay_thu():
    return [in_bao_cao("README tốt", README_TOT), in_bao_cao("README thiếu", README_THIEU)]


if __name__ == "__main__":
    if len(sys.argv) > 1:
        with open(sys.argv[1], encoding="utf-8") as f:
            in_bao_cao(sys.argv[1], f.read())
    else:
        chay_thu()

Chạy python cham_readme.py README.md trong thư mục dự án của bạn để soát. Công cụ chỉ kiểm hình thức; nội dung có đúng, có trung thực hay không vẫn do bạn.

Demo chạy được

Người xem không phải ai cũng clone code về chạy. Một bản demo giúp họ thấy ngay dự án hoạt động:

  • Hugging Face Spaces: chạy giao diện Gradio hay Streamlit cho mô hình của bạn, có địa chỉ riêng. Xem bài Hugging Face là gì.
  • GitHub Pages: trang web tĩnh miễn phí. Theo GitHub Docs, trang của người dùng nằm trong kho tên <tên-người-dùng>.github.io; với gói GitHub Free, kho phải công khai. Hợp để làm trang giới thiệu tổng hợp các dự án.
  • Ảnh chụp và GIF trong README: cách đơn giản nhất, không cần chạy máy chủ.

Code sạch cũng là portfolio

Người xem kỹ sẽ mở code. Vài điểm cho thấy bạn làm việc cẩn thận:

  • Có requirements.txt và hướng dẫn tạo môi trường ảo.
  • Có .gitignore để không đưa mô hình nặng, dữ liệu lớn, thư mục môi trường ảo lên kho.
  • Không có khóa API, mật khẩu hay dữ liệu cá nhân trong code và lịch sử commit.
  • Có vài test và workflow tự chạy test; xem bài GitHub Actions.
  • Lịch sử commit có lời nhắn rõ ràng, chia thành nhiều bước thay vì một commit khổng lồ.

Một đóng góp nhỏ vào dự án mã nguồn mở, như sửa tài liệu hay sửa một lỗi được gắn nhãn good first issue, cũng là điểm cộng; quy trình nằm trong bài issue và pull request.

Đưa portfolio vào CV

Portfolio chỉ có ích khi người xem tìm tới được. Vài cách gắn nó vào hồ sơ:

  • Đặt địa chỉ trang GitHub ở phần thông tin liên hệ trong CV, cạnh email.
  • Trong mục dự án của CV, mỗi dự án một dòng mô tả kèm kết quả chính và liên kết thẳng tới kho, không chỉ tới trang cá nhân.
  • Trước khi gửi, mở từng liên kết bằng trình duyệt ẩn danh để chắc kho đang công khai và demo còn chạy.
  • Khi ứng tuyển vị trí cụ thể, đổi thứ tự mục ghim để dự án gần với công việc nhất nằm đầu.

Cập nhật portfolio sau mỗi dự án lớn thay vì đợi lúc đi xin việc; lúc đó bạn còn nhớ rõ đã làm gì và vì sao.

Cẩn thận
  • Ghim kho bài tập chép theo hướng dẫn mà không có phần của mình.
  • README chỉ có một dòng tên dự án, không có kết quả, không có cách chạy.
  • Đưa khóa API lên kho công khai, kể cả trong một commit cũ.
  • Báo số liệu đẹp mà không nói đo trên tập nào.
  • Dùng AI viết phần lớn code nhưng không ghi rõ và không giải thích được khi được hỏi.

Câu hỏi thường gặp

Cần bao nhiêu dự án?

Hai đến bốn dự án hoàn chỉnh là đủ cho sinh viên. Chất lượng của README và độ hoàn thiện quan trọng hơn số lượng.

Kho riêng tư có đưa vào portfolio được không?

Người ngoài không xem được kho riêng tư. Với đồ án có dữ liệu không được công khai, có thể làm một kho công khai chứa code và dữ liệu mẫu nhỏ, kèm mô tả.

Ô vuông xanh đóng góp (contribution graph) có quan trọng không?

Nó chỉ cho thấy tần suất commit. Một dự án hoàn chỉnh có README tốt nói nhiều hơn một biểu đồ dày đặc.

Có nên ghi rõ phần nào dùng AI hỗ trợ?

Nên. Ghi trung thực giúp người xem hiểu đúng năng lực của bạn, và bạn cần giải thích được mọi phần code trong kho khi được hỏi.

Học tiếp

Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.

Muốn học bài bản cùng giảng viên?

Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.

Xem Khóa AI

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483