You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/laborok/2/index.md
+27-8Lines changed: 27 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ A feladatok megoldásához az alábbi telepített szoftverekre van szükség (al
14
14
15
15
## Előkészület
16
16
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).
18
18
19
19
### Git repository létrehozása és letöltése
20
20
@@ -41,7 +41,7 @@ Minden modell esetében a leírásban találunk egy összehasonlítást a modell
41
41
42
42
A solution 3 projektből áll:
43
43
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.
45
45
-**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.
46
46
-**Client**: A FullStack alkalmazáshoz tartozó React frontend. A [http://localhost:5173/](http://localhost:5173/) címen érhető el.
47
47
@@ -61,7 +61,7 @@ A futtatáshoz az `AI` és a `Server` projekteket kell elindítani:
61
61
62
62
## Az elkészítendő alkalmazás
63
63
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:
65
65
66
66
- A jelentkező kulcs kompetenciáinak kigyűjtése
67
67
- 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
84
84
85
85
## 1. feladat
86
86
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.
88
96
89
97
??? info "Segítség"
90
98
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
109
117
-`/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.
110
118
-`/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.
111
119
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
+
114
132
115
133
### Beadandó
116
134
@@ -131,8 +149,9 @@ Az alábbi felsorolás tartalmazza, hogy a szerver mely API végpontjai milyen f
131
149
132
150
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.
133
151
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.
0 commit comments