Tài liệu này hướng dẫn chi tiết cách thiết lập môi trường lập trình Python, cấu hình API Key, quy trình phân nhánh Git làm việc nhóm và chuẩn bị sản phẩm nộp bài cho Lab 02: AI Product Scoping (Vin Smart Future).
Môi trường ảo (virtual environment) giúp cô lập các thư viện của dự án này, tránh xung đột với các phiên bản thư viện khác cài trên máy của bạn.
Mở terminal tại thư mục gốc của dự án (VinUni_Day02-AI-Product-Lab) và chạy lệnh tương ứng với hệ điều hành của bạn:
- Windows (PowerShell hoặc CMD):
python -m venv .venv - macOS / Linux:
python3 -m venv .venv
Bạn phải kích hoạt môi trường ảo mỗi khi mở terminal mới trước khi chạy code.
- Windows (PowerShell):
(Nếu gặp lỗi "Execution Policy", hãy chạy lệnh:
.venv\Scripts\Activate.ps1
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Processrồi kích hoạt lại). - Windows (CMD):
.venv\Scripts\activate.bat
- macOS / Linux:
source .venv/bin/activate - Dấu hiệu kích hoạt thành công: Ở đầu dòng lệnh của terminal xuất hiện ký hiệu
(.venv).
Chạy lệnh sau để cài đặt SDK của Gemini và các thư viện hỗ trợ:
pip install google-genai google-generativeai pytestĐể code Python gọi được Gemini API, bạn cần khai báo khóa API của mình vào biến môi trường. Lưu ý: Không được dán trực tiếp API Key vào code để tránh bị lộ khóa khi push lên GitHub.
Hãy mở terminal đã kích hoạt (.venv) và chạy lệnh nạp khóa tương ứng:
- Nếu dùng PowerShell (Mặc định của VS Code / Cursor):
$env:GEMINI_API_KEY="AIzaSyYourGeminiApiKeyHere"
- Nếu dùng Command Prompt (CMD):
set GEMINI_API_KEY=AIzaSyYourGeminiApiKeyHere
- Dùng Terminal:
export GEMINI_API_KEY="AIzaSyYourGeminiApiKeyHere"
Chạy lệnh python nhanh này trong terminal để kiểm tra:
python -c "import os; print('API Key status: OK' if os.getenv('GEMINI_API_KEY') else 'API Key status: MISSING')"Môn học này áp dụng mô hình cộng tác nhóm kết hợp chấm điểm cá nhân và chấm điểm nhóm thông qua Git Branching.
-
Tổ chức Nhóm & Repository:
- Mỗi nhóm gồm 4 đến 6 thành viên.
- Trưởng nhóm chịu trách nhiệm khởi tạo Repository chung của nhóm và thêm (add) tất cả các thành viên vào danh sách Contributors với quyền write.
- Tất cả thành viên (bao gồm cả Nhóm trưởng) đều phải thực hiện làm bài trên Branch riêng (nhánh cá nhân) của mình.
-
Bài tập Code (
.py) — Chấm điểm CÁ NHÂN:- Mỗi thành viên tự hoàn thành file code
.pycá nhân của mình. - Push file
.pylên branch cá nhân. - 🛑 LƯU Ý QUAN TRỌNG: KHÔNG merge file code (
.py) vào branchmain. Điểm nhóm sẽ KHÔNG tính cho các file code. Phần code.pysẽ được hệ thống/giảng viên chấm điểm độc lập trên từng branch cá nhân.
- Mỗi thành viên tự hoàn thành file code
-
Bài tập Báo cáo/Tài liệu (
.md) — Chấm điểm NHÓM:- Mỗi bạn tự hoàn thiện các file
.mdcá nhân trên branch riêng và push bài lên branch cá nhân đó. - Sau khi TẤT CẢ các thành viên trong nhóm đã hoàn thành và push bài lên branch cá nhân, Trưởng nhóm sẽ tổ chức họp/bàn luận với các thành viên để review và chọn ra các ý tưởng hay nhất, file
.mdchất lượng nhất. - Trưởng nhóm (hoặc đại diện nhóm) tổng hợp, chỉnh sửa và merge các file
.mdxuất sắc nhất vào branchmain. Branchmainlà căn cứ duy nhất để tính điểm báo cáo chung cho toàn nhóm.
- Mỗi bạn tự hoàn thiện các file
-
Điền Form Nộp bài chính thức:
- 🛑 QUAN TRỌNG: Khi điền form nộp bài, CHỈ CẦN TRƯỞNG NHÓM điền Họ tên và link Repository của nhóm.
- Các thành viên khác VUI LÒNG KHÔNG ĐIỀN THÊM FORM để tránh trùng lặp thông tin nộp bài.
- Tạo repo mới trên GitHub (hoặc accept link GitHub Classroom).
- Vào tab Settings > Collaborators (hoặc Manage access) > Click Add people.
- Nhập username GitHub hoặc email của 4-6 thành viên để mời họ làm Contributors.
- Gửi link repo cho các thành viên clone về máy.
Sau khi clone repo về máy, mở terminal tại thư mục dự án và tạo nhánh riêng theo tên/mã sinh viên của bạn:
# Clone repo chung về máy
git clone <URL_REPOSITORY_CUA_NHOM>
cd VinUni_Codelab_Day02
# Tạo và chuyển sang branch cá nhân (Ví dụ: nguyenvana hoặc dev-student1)
git checkout -b <ten-cua-ban>Thực hiện chỉnh sửa code .py và hoàn thiện các file .md trên branch cá nhân. Sau đó thực hiện commit và push:
# Kiểm tra các file đã chỉnh sửa
git status
# Thêm tất cả file đã làm vào staging
git add .
# Commit bài làm cá nhân
git commit -m "Feat: Complete individual assignment by <Ten-Cua-Ban>"
# Push bài làm lên branch cá nhân (KHÔNG push trực tiếp lên main)
git push origin <ten-cua-ban>Sau khi tất cả thành viên đã push branch cá nhân lên GitHub:
- Thảo luận: Trưởng nhóm và các thành viên họp review các branch, thảo luận chọn ra bài viết
.md(Problem Scan, Deep Dive Report, AI Log) xuất sắc nhất. - Merge file
.mdvàomain:# Trưởng nhóm chuyển về branch main và cập nhật mới nhất git checkout main git pull origin main # Lấy nội dung các file .md được chọn từ branch thành viên (Ví dụ từ branch nguyenvana) git checkout nguyenvana -- 01-problem-scan.md 02-deep-dive-report.md 03-ai-log.md 04-workflow-diagram.png # Commit nội dung .md đã chắt lọc cho nhóm git commit -m "Chore: Select and merge best markdown reports into main" # Push main lên GitHub để nộp bài nhóm git push origin main
- 🛑 Nhắc lại: KHÔNG thực hiện checkout hay merge file
.pyvào branchmain. File.pychỉ nằm tại branch riêng của từng thành viên.
- Duy nhất Trưởng nhóm mở Form nộp bài của môn học, điền Họ và tên Trưởng nhóm cùng Link Repository GitHub của nhóm.
- Các thành viên còn lại tuyệt đối không điền form này nữa.
File này thể hiện tư duy tìm kiếm bài toán thực tế.
- Cách làm: Copy và hoàn thiện nội dung của Phase 1 (SCAN) và Phase 2 (QUICK-ASSESS) từ file
01-worksheet.md. - Yêu cầu nội dung:
- Bảng quét cơ hội (SCAN): Điền tối thiểu 5 bài toán thực tế thuộc các công ty thành viên Vingroup.
- 3 Quick Problem Cards: Điền đầy đủ thông tin cho 3 bài toán tiềm năng nhất (Actor, Quy trình hiện tại, Bottleneck, AI Solution, Metric...).
Báo cáo phân tích sâu dự án AI mà nhóm/cá nhân lựa chọn.
- Cách làm: Copy và hoàn thiện nội dung của Phase 3 (DEEP-DIVE) và Phase 5 (EVALUATE) từ file
01-worksheet.md. - Yêu cầu nội dung:
- Problem Statement (6-field): Điền đầy đủ 6 trường thông tin cho bài toán đã chọn.
- Future-State Flow & AI Fit: Mô tả quy trình tương lai có tích hợp AI (Rule, LLM, Agentic Loop), cơ chế Human-in-the-loop và Fallback.
- Evaluate: Đánh giá độ sẵn sàng qua bảng Checklist và đưa ra quyết định GO / NOT YET / NO-GO.
Sơ đồ trực quan hóa quy trình vận hành hiện tại.
- Cách làm: Vẽ sơ đồ quy trình hiện tại (Current-State Workflow) lên giấy/bảng trắng hoặc công cụ vẽ trực tuyến.
- Yêu cầu: Thể hiện rõ các bước tuần tự, điểm chuyển giao (🔄 Handoff), thời gian xử lý và điểm nghẽn cổ chai (🔴 Bottleneck).
- Cách làm: Viết bài tự luận phản ánh quá trình sử dụng AI (ChatGPT, Gemini, Claude...) làm trợ lý đồng hành.
- Yêu cầu: Nêu rõ AI giúp gì, AI trả lời sai/hallucination ở đâu, và bạn đã sửa prompt/ranh giới ra sao để đạt kết quả chuẩn.
- Vị trí: Lưu tại file
.pycá nhân của bạn (ví dụ:starter-code/prompt_prototype.pyhoặc file.pyđược yêu cầu). - Lưu ý: Chỉ nộp trên branch cá nhân (
git push origin <ten-cua-ban>), không merge vàomain.
| Loại Bài Tập / Thao Tác | Định Dạng File / Hành Động | Vị Trí Nộp | Người Thực Hiện | Tiêu Chí Tính Điểm |
|---|---|---|---|---|
| Code Python | .py |
Branch Cá nhân (<ten>) |
Từng thành viên | Điểm CÁ NHÂN (chấm trên branch riêng) |
| Báo cáo / Document | .md, .png |
Branch main (Sau khi chọn lọc & merge) |
Cả nhóm / Trưởng nhóm đại diện merge | Điểm NHÓM (chấm trên branch main) |
| Form Nộp Bài | Form trực tuyến | Link Google Form / LMS | Chỉ DUY NHẤT Trưởng nhóm điền | Ghi nhận/tổng hợp bài nộp của nhóm |