1. Intrarea în GitHub Classroom

Se face o singură dată. Conectezi contul GitHub la numele tău din lista de studenți.

  1. Deschide link-ul GitHub Classroom primit pe Teams.
  2. Autentifică-te cu contul GitHub.
  3. Selectează numele tău real din roster.
  4. Dacă nu găsești numele, oprește-te și anunță profesorul. Nu selecta altă persoană.
  5. Ești direcționat automat spre alegerea echipei.
Atenție: Numele real e doar în roster. În repository lucrăm cu ID-uri interne: student_01, student_02 etc.
2. Alegerea echipei

Repository-ul apare automat după ce primul membru acceptă assignment-ul.

  1. Dacă ești team starter, creezi echipa cu numele exact: team-1, team-2 etc.
  2. Dacă echipa există deja, alegi Join existing team.
  3. Nu crea o echipă nouă dacă echipa ta există.
  4. Nu schimba numele echipei.
exemplu — echipa 1
// Popescu Maria → team-1 → student_01 // Ionescu Andrei → team-1 → student_02 // Radu Elena → team-1 → student_03
Important: Ceilalți membri nu intră automat. Fiecare trebuie să acceseze link-ul și să intre în echipa corectă.
3. Clonarea repository-ului

Toți membrii echipei lucrează în același repository. Fiecare îl clonează pe calculatorul propriu.

  1. Intră în repository-ul echipei din GitHub Classroom.
  2. Apasă butonul verde Code și copiază link-ul HTTPS.
  3. Deschide terminalul în directorul unde ții proiectele.
terminal
git clone LINK_REPOSITORY cd NUME_REPOSITORY
LINK_REPOSITORY = link-ul din butonul Code
NUME_REPOSITORY = directorul creat automat după clone
4. Structura proiectului

Nu toate directoarele sunt folosite din prima zi — proiectul se completează treptat.

structura repository
README.md // descrierea proiectului echipei requirements.txt // biblioteci Python .env.example // model pentru .env local .gitignore // fișiere care nu se urcă pe GitHub notebooks/ // notebook-uri individuale data/ // date colectate și curățate assets/roles/ // roles.yaml — rolurile agenților core/ // cod profesor — nu se modifică app/app.py // aplicația Gradio reports/ // rapoarte, etică
DirectorCineCe se pune
notebooks/student_XX/individualnotebook-urile de seminar completate
data/echipăcorpus, date curățate, JSONL
assets/roles/echipărole cards pentru agenți
core/profesorcod de bază — nu se modifică
app/echipăaplicația finală
reports/echipăraport, limitări, etică
5. Python și venv

Se face o singură dată pe calculatorul tău. Mediul virtual .venv izolează bibliotecile proiectului.

Windows — PowerShell
python -m venv .venv Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser .venv\Scripts\activate pip install -r requirements.txt
Mac / Linux
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
activare la fiecare sesiune nouă
.venv\Scripts\activate // Windows source .venv/bin/activate // Mac / Linux // verificare: trebuie să apară (.venv) în prompt
Nu urca .venv pe GitHub. Este local și ignorat automat de .gitignore.
6. Chei API și fișierul .env

Cheia API se păstrează local în .env. Nu se scrie în notebook și nu se urcă pe GitHub.

Windows
copy .env.example .env code .env
Mac / Linux
cp .env.example .env code .env
conținut .env — completează cu cheia ta
// Gemini — aistudio.google.com (gratuit) GEMINI_API_KEY=cheia_ta_gemini   // DeepSeek — platform.deepseek.com (ieftin) DEEPSEEK_API_KEY=cheia_ta_deepseek   // OpenRouter — openrouter.ai (sute de modele, free tier) OPENROUTER_API_KEY=cheia_ta_openrouter   // Groq — console.groq.com (rapid, gratuit) GROQ_API_KEY=cheia_ta_groq
ProviderUnde creezi cheiaFree tier
Geminiaistudio.google.comda — generous
DeepSeekplatform.deepseek.comda — foarte ieftin
OpenRouteropenrouter.aida — modele gratuite
Groqconsole.groq.comda — rapid
Mistralconsole.mistral.aida — trial
Nu comite niciodată .env. Dacă ai urcat cheia din greșeală, șterge cheia din contul provider-ului și generează una nouă.
7. Prima rulare

Verifică că proiectul pornește. Erorile despre roluri sau vector store lipsă sunt normale la început.

terminal — cu .venv activ
python app/app.py
erori frecvente și soluții
// ModuleNotFoundError // → verifică că (.venv) apare în prompt pip install -r requirements.txt   // AuthenticationError // → verifică fișierul .env și cheia code .env   // FileNotFoundError: roles.yaml / vectorstore // → normal la început, se rezolvă în cursurile 3-6
8. Individual vs echipă

Există două tipuri de muncă cu directoare diferite în repository.

Muncă individuală
notebooks/student_XX/

Notebook-urile de seminar și exercițiile. Fiecare student lucrează în directorul său.

Muncă de echipă
data/ assets/roles/ app/ reports/

Role cards, corpus, aplicație, raport final.

9. Notebook-uri individuale

Notebook-urile vin de pe Teams. Le descarci, le completezi și le pui în directorul tău.

  1. Descarcă notebook-ul de pe Teams.
  2. Copiază-l în notebooks/student_XX/
  3. Completează celulele TODO și rulează (Run All).
  4. Salvează, fă commit și push.
terminal — exemplu student_03, cursul 1
// notebook copiat în notebooks/student_03/c1_llm_intro.ipynb git pull origin main git add notebooks/student_03/ git commit -m "add C1 notebook student_03" git push
Nu pune numele real în directoare sau fișiere. Folosește doar student_01, student_02 etc.
10. Workflow Git zilnic

La început de sesiune: pull. La final: commit + push. Fără excepții.

▶ La început
.venv\Scripts\activate // sau: source .venv/bin/activate   git pull origin main

Pull descarcă schimbările colegilor. Notebook-urile noi vin de pe Teams.

◼ La final
git status git add . git commit -m "mesaj" git push

Commit des. Push la finalul sesiunii. Munca ta nu e vizibilă colegilor până nu dai push.

Mesaje bune:
"add role card agent anti_sistem"
"collect 500 comments video XYZ"
"complete C2 notebook student_02"
11. Issues și GitHub

Issues sunt lista de taskuri a echipei. Se folosesc și pentru a cere ajutor profesorului.

Lucrul cu issues:

  1. Deschide tab-ul Issues din repository-ul echipei.
  2. Alege un task și notează în comentariu că lucrezi la el.
  3. Fă commit cu mesaj clar când termini.
  4. Închide issue-ul manual după ce echipa verifică.
Avansat: poți folosi closes #N în commit message pentru închidere automată — dar doar dacă ești sigur că taskul e complet.

Cum întrebi profesorul pe GitHub:

Deschide un Issue nou cu titlul clar și tag-ul question. Profesorul primește notificare și răspunde acolo — conversația rămâne vizibilă pentru toată echipa.

cum creezi un issue de întrebare
// 1. Issues → New Issue // 2. Titlu clar: [Întrebare] build_vectorstore.py — eroare FAISS la rulare   // 3. Descriere — include: // • ce ai încercat să faci // • mesajul de eroare exact (copy-paste) // • ce ai încercat să rezolvi   // 4. Labels → question // 5. Assignees → @profesor // 6. Submit new issue
IssueCe înseamnăLivrabil
#1 Setuprepo, venv, .envaplicația pornește
#2 Notebook C1primul apel LLMnotebooks/student_XX/c1...
#3 Role cardsroluri agențiassets/roles/roles.yaml
#4 Corpuscolectare și curățaredata/raw/, data/cleaned/
#5 RAGcăutare cu surserezultate documentate
#6 Appintegrare aplicațieapp/app.py funcțional
#7 Reportlimitări și eticăreports/ completat
question Întrebareceri ajutor profesoruluirăspuns în comentarii
12. Comenzi Git utile

Comenzi de bază — folosite în fiecare sesiune:

ComandăCe face
git statusarată ce fișiere s-au schimbat
git pull origin maindescarcă schimbările colegilor
git add .pregătește toate fișierele modificate
git add FISIERpregătește un singur fișier
git commit -m "mesaj"salvează o versiune locală
git pushtrimite commiturile pe GitHub

Comenzi de inspecție — să înțelegi ce s-a întâmplat:

ComandăCe face
git log --onelineistoricul scurt al commiturilor
git log --oneline -10ultimele 10 commituri
git diffce linii s-au schimbat față de ultimul commit
git diff FISIERschimbările dintr-un singur fișier
git showdetaliile ultimului commit
git blame FISIERcine a modificat fiecare linie

Comenzi de corecție — când ai greșit ceva:

ComandăCe face
git restore FISIERanulează modificările locale la un fișier
git restore .anulează toate modificările locale
git commit --amend -m "mesaj"corectează mesajul ultimului commit (înainte de push)
git reset HEAD~1anulează ultimul commit, păstrează modificările

Comenzi utile diverse:

ComandăCe face
git clone LINKcopiază un repository pe calculatorul tău
git remote -varată unde e conectat repository-ul
git branchlistează branch-urile locale
git stashascunde temporar modificările nesalvate
git stash popaduce înapoi modificările ascunse
git fetchverifică ce e nou pe GitHub fără să descarce
să vezi istoria vizual în terminal
git log --oneline --graph --all // afișează un arbore ASCII cu toate commiturile și branch-urile
13. Conflicte

Un conflict apare când două persoane modifică aceeași parte din același fișier. Se evită lucrând fiecare în directorul său.

Prevenire: lucrează în notebooks/student_XX/, fă pull înainte să începi, push la final. Pentru fișiere comune (roles.yaml, app.py) discutați în echipă cine modifică ce.
rezolvare conflict
git status // îți arată ce fișier are conflict   // deschizi fișierul și cauți markerii: <<<<<<< HEAD // varianta ta ======= >>>>>>> main // varianta colegului   // păstrezi varianta corectă, ștergi markerii, salvezi git add . git commit -m "resolve merge conflict" git push
Nu șterge repository-ul și nu folosi force push. Deschide un Issue cu label question și anunță profesorul.
14. Reguli obligatorii
  1. Nu urca niciodată .env pe GitHub.
  2. Nu scrie chei API direct în notebook-uri. Folosește .env.
  3. Nu pune nume reale în directoare sau fișiere. Folosește student_01, student_02 etc.
  4. Lucrează în directorul tău: notebooks/student_XX/
  5. Nu modifica directorul altui student.
  6. Nu modifica core/ decât dacă profesorul cere explicit.
  7. git pull înainte să începi orice sesiune.
  8. git push la finalul fiecărei sesiuni.
  9. Scrie mesaje de commit clare și descriptive.
  10. Nu folosi git push --force.
  11. Dacă nu știi ce face o comandă, deschide un Issue cu label question și întreabă.