Skip to content

Commit 7ffe818

Browse files
committed
Merge branch 'lab/fullstack'
2 parents 74fab8f + 7cf1c8c commit 7ffe818

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

docs/laborok/2/index.md

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ A feladatok megoldásához az alábbi telepített szoftverekre van szükség (al
1414

1515
## Előkészület
1616

17-
A feladatok megoldása során ne felejtsd el követni a feladatbeadás folyamatát [Github](../../tudnivalok/github/GitHub.md).
17+
A feladatok megoldása során ne felejtsd el követni a feladatbeadás folyamatát, amiről [itt olvashatsz részletesen](../../tudnivalok/github/GitHub.md).
1818

1919
### Git repository létrehozása és letöltése
2020

@@ -41,7 +41,7 @@ Minden modell esetében a leírásban találunk egy összehasonlítást a modell
4141

4242
A solution 3 projektből áll:
4343

44-
- **AI**: Az LLM modell beburkolására szolgáló WebAPI, ami a [http://localhost:5555/](http://localhost:5555/) címen érhető el. Az API leírását a [/swagger/index.html](http://localhost:5555/swagger/index.html) címen tudjuk kiolvasni.
44+
- **AI**: Az LLM modell beburkolására szolgáló WebAPI, ami a [http://localhost:5555/](http://localhost:5555/) címen érhető el. Az API leírását a [/swagger/index.html](http://localhost:5555/swagger/index.html) címen tudjuk kiolvasni. Ebben a projektben nem kell mósosításokat végezni a feladat megoldása során, minden elő van készítve. A célja, hogy ezen keresztül el tudjuk érni a lokálisan futtatott modellt.
4545
- **Server**: A FullStack alkalmazáshoz tartozó backend. A [http://localhost:5130/](http://localhost:5130/) címen érhető el. Az API leírását a [/swagger/index.html](http://localhost:5130/swagger/index.html) címen tudjuk kiolvasni.
4646
- **Client**: A FullStack alkalmazáshoz tartozó React frontend. A [http://localhost:5173/](http://localhost:5173/) címen érhető el.
4747

@@ -61,7 +61,7 @@ A futtatáshoz az `AI` és a `Server` projekteket kell elindítani:
6161

6262
## Az elkészítendő alkalmazás
6363

64-
A labor során egy olyan LLM-et használó fullstack alkalmazást kell önállóan elkészítened, mely a munkaerőtoborzással kapcsolatos egyes feladatokat könnyíti meg. Az alkalmazásban nincs szükség authentikációra, adatbázisra, vagy perzisztenciára. Az alkalmazás állapot mentes. Az elkészülő HR asszisztens alkalmazás célja, hogy támogassa a HR munkatársakat a beérkező jelentkezések feldolgozására. A markdown formátumban megküldött önéletrajzok alapján, a szoftvernek képesnek kell lennie a következő feladatok megoldására:
64+
A labor során egy olyan LLM-et használó fullstack alkalmazást kell önállóan elkészítened, mely a munkaerőtoborzással kapcsolatos egyes feladatokat könnyíti meg. Az alkalmazásban nincs szükség authentikációra, adatbázisra, vagy perzisztenciára. Az alkalmazás állapot mentes. Az elkészülő HR asszisztens alkalmazás célja, hogy támogassa a HR munkatársakat a beérkező jelentkezések feldolgozásában. A markdown formátumban megküldött önéletrajzok alapján, a szoftvernek képesnek kell lennie a következő feladatok megoldására:
6565

6666
- A jelentkező kulcs kompetenciáinak kigyűjtése
6767
- Azoknak a pozícióknak a meghatározása, melyekre a jelentkező alkalmas lehet
@@ -84,7 +84,15 @@ Az alkalmazás funkcióinak teszteléséhez elengedhetetlen egy markdown önéle
8484

8585
## 1. feladat
8686

87-
Első lépésben biztosítsd a szerver számára az AI modellel való kommunikáció alapjait. Vizsgáld meg az AI modell API leírását (`/api/Chat`), különös tekintettel a kérés törzsének elvárt felépítésére. Hozz létre egy service interface-t, az ezt megvalósító service osztályt, valamint a szükséges modelleket. A service valósítsa meg a megfelelő HTTP kérést, mely segítségével tetszőleges prompt küldhető az AI modell felé. A feladat végén a service-t regisztrálni is kell a DI (Dependency Injection) konténerbe.
87+
Első lépésben biztosítsd a szerver számára az AI modellel való kommunikáció alapjait az alábbiak szerint.
88+
89+
1. Futtasd a kiinduló alkalmazást és vizsgáld meg az AI modell API leírását (`/api/Chat`) a fent megadott címen. Keresd meg a leírásban a kérés és a válasz törzsének felépítését. A HTTP kérés kiszolgálása során, a szerver és az AI modellt burkoló WebAPI közötti kommunikáció ezeket a JSON formátumokat használja.
90+
2. Hozd létre a fentieknek megfelelően a kommunikációhoz szükséges modell osztály(oka)t, mely(ek) példányait sorosítva az előző lépésben vizsgált JSON objektumokat kapjuk.
91+
3. Hozz létre egy service interface-t, az ezt megvalósító service osztályt. A service valósítsa meg a megfelelő HTTP kérést, mely segítségével tetszőleges prompt küldhető az AI modell felé. Rendelkezzen tehát a service egy olyan függvénnyel, ami paraméterként egy (az API leírásnak megfelelő) promptot vár, és ezt elküldi az AI projektben definiált végpontra.
92+
4. A feladat végén az elkészült service-t regisztrálni is kell a DI (Dependency Injection) konténerbe.
93+
94+
??? info "Tipp"
95+
A DI konténerbe service-t regisztrálni a `Main` függvényen belül, az `AddScoped` vagy `AddTransient` függvény meghívásával lehet.
8896

8997
??? info "Segítség"
9098
Az `/api/Chat/Stream` végponttal egyelőre nem kell foglalkoznod, az csak az opcionális feladathoz tartozik.
@@ -109,8 +117,18 @@ Az alábbi felsorolás tartalmazza, hogy a szerver mely API végpontjai milyen f
109117
- `/api/HR/questions`: A kérésben kapott CV alapján fogalmazzon meg lehetséges kérdéseket, amiket érdemes lehet feltenni az állásinterjú során.
110118
- `/api/HR/invitation`: Generáljon meghívólevelet a kérésben kapott CV "tulajdonosa" részére, ami alkalmas egy interjúra történő behívásra.
111119

112-
??? info "Tipp"
113-
Az egyes végpontok által meghívott service osztály Dependency Injection (DI) használatával elkérhető az alkalmazástól.
120+
A megoldás főbb lépései a következők:
121+
122+
1. Az egyes végpontok által meghívott service osztályt Dependency Injection (DI) használatával kérd el az alkalmazástól, hogy a controller használni tudja.
123+
2. Valósíts meg minden végponthoz egy-egy függvényt, amely a fenti leírásnak megfelelő funkciót biztosítja, a következők szerint:
124+
- A függvény paraméterként kapja meg a CV-t valamilyen formában.
125+
- A funkciónak megfelelően hozza létre a promptot.
126+
- A service felhasználásával küldje el a promptot az AI modellnek.
127+
128+
??? info "Tipp"
129+
A prompt létrehozása során tartsd szem előtt a felesleges kódduplikáció elkerülését. A modell használata során az AI projekt felé küldött HTTP kérések azonos felépítésű, de különböző tartalmú promptokat fognak tartalmazni.
130+
131+
114132

115133
### Beadandó
116134

@@ -131,8 +149,9 @@ Az alábbi felsorolás tartalmazza, hogy a szerver mely API végpontjai milyen f
131149

132150
Az alkalmazás megvalósításának utolsó lépéseként tedd működővé az egyes funkciókat az előző feladatban létrehozott API hívások segítségével. Ehhez egészítsd ki a kliens Service osztályát a megfelelő HTTP kérésekkel.
133151

134-
??? info "Tipp"
135-
A megoldás színvonalát emeli, ha figyelsz a felesleges kódismétlés elkerülésére.
152+
- Minden funkcióhoz/API végponthoz tartozzon egy függvény, amely paraméterként megkapja a CV-t, és megvalósítja a HTTP kérést.
153+
- Figyelj a felesleges kódismétlés elkerülésére!
154+
- A HTTP kérés megvalósítása során gondoskodj a megfelelő hibakezelésről is.
136155

137156
### Beadandó
138157

0 commit comments

Comments
 (0)