4.5 KiB
Health AI Assistant
Opis aplikácie
Health AI Assistant je webová aplikácia, ktorá umožňuje používateľom registráciu, prihlásenie, interaktívny chat a prezeranie histórie konverzácií. Aplikácia využíva generatívny model (pomocou Mistral) na spracovanie dotazov a poskytovanie odpovedí. Používateľom poskytuje možnosť overenia pomocou Google OAuth a uchováva dáta v databáze PostgreSQL.
Použité cloudové a kontajnerové technológie
- Verejný cloud:
Aplikácia je nasadená na AWS EC2, pričom bol použitý Elastic IP, aby bola verejná IP adresa statická. - Docker:
Nasadenie aplikácie je plne založené na Docker kontajneroch. Použité sú kontajnery pre:- Elasticsearch – pre fulltext vyhľadávanie a ukladanie indexov.
- PostgreSQL – ako databáza s perzistentným zväzkom (volume
pgdata
). - Backend – Flask aplikácia, ktorá spracúvala API požiadavky.
- Frontend – klientská časť, ktorá komunikuje s backendom.
- Nginx:
Ako reverzný proxy server je nastavený Nginx pre zabezpečený prístup cez HTTPS. Certifikát je získaný pomocou Certbot (Let's Encrypt). - Skripty:
Nasadenie a zrušenie aplikácie sa automatizuje pomocou skriptovprepare-app.sh
,stop-app.sh
,start-app.sh
aremove-app.sh
.
Obsah odovzdávaných súborov a konfigurácia
V repozitári sú nasledovné súbory a adresáre:
-
docker-compose.yml – definuje štyri služby (elasticsearch, postgres, backend, frontend) a sieť
app-network
.- Pre každú službu je definovaný aj parameter
restart: always
, ktorý zabezpečuje automatický reštart v prípade chyby. - Pre Postgres je definovaný persistent volume
pgdata
.
- Pre každú službu je definovaný aj parameter
-
Dockerfile pre jednotlivé komponenty:
./elasticsearch/Dockerfile
./Backend/Dockerfile
./frontend/Dockerfile
-
Skripty:
prepare-app.sh
– zostaví a spustí aplikáciu pomocoudocker-compose up --build -d
stop-app.sh
– zastaví bežiace kontajnerystart-app.sh
– spustí zastavené kontajneryremove-app.sh
– odstráni kontajnery, siete a volume
-
Nginx konfigurácia:
Súbor/etc/nginx/sites-available/healthai-tuke.com
(nasadený na AWS) zabezpečuje:- Presmerovanie HTTP na HTTPS.
- Reverzný proxy pre
/api/
na backend (port 5000), a ostatné na frontend (port 5173).
AWS EC2 Deployment Automatization
Pre jednoduché nasadenie, správu a odstránenie inštancií v AWS EC2 boli pridané skripty do adresára aws config
:
Skript | Popis |
---|---|
deploy-instance.sh |
Vytvorí nový EC2 inštanciu, priradí k nej Elastic IP a vypíše jej IP adresu. |
setup-docker.sh |
Nainštaluje Docker, Docker Compose a Git na čerstvo nasadený EC2 server. |
setup-nginx-certs.sh |
Skopíruje certifikáty z Let's Encrypt na server a nakonfiguruje Nginx ako reverzný proxy s HTTPS. |
start-instance.sh |
Spustí poslednú zastavenú EC2 inštanciu. |
stop-instance.sh |
Zastaví poslednú bežiacu EC2 inštanciu. |
terminate.sh |
Zastaví a odstráni poslednú bežiacu EC2 inštanciu. |
connect.sh |
Pripojí sa k bežiacej EC2 inštancii cez SSH pomocou .pem kľúča. |
Požiadavky
- Nainštalovaný AWS CLI
- Prístup k
.pem
súkromnému kľúču - Nastavené identifikátory:
eipalloc-...
,subnet-...
,ami-...
,sg-...
Ukážka použitia
# Vytvorenie a pripojenie inštancie
./aws\ config/deploy-instance.sh
./aws\ config/setup-docker.sh
./aws\ config/setup-nginx-certs.sh
# Pripojenie
./aws\ config/connect.sh
# Zastavenie alebo zrušenie
./aws\ config/stop-instance.sh
./aws\ config/terminate.sh
Ako pozrieť a použiť aplikáciu
-
Otvorte webový prehliadač a zadajte adresu:
https://healthai-tuke.com
-
Funkcie aplikácie:
- Registrácia a prihlásenie
- Interaktívny chat
- Prezeranie histórie konverzácií
-
API rozhranie je možné použiť pomocou:
- curl
- Postman
- čalšie frontend požiadavky