Bakalarska_praca/README.md

106 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# **Health AI**
*Interaktívny chat-bot na odporúčanie liekov*
---
## Čo projekt robí?
**Health AI** je full-stack aplikácia, ktorá
1. **Odpovedá na otázky o symptómoch a odporúča lieky dostupné na Slovensku.**
2. **Zohľadňuje osobné údaje pacienta** (vek, chronické ochorenia, alergie, voľnopredajný / na predpis).
3. **Kombinuje znalosti veľkého jazykového modelu Mistral** so súborom príbalových letákov uložených v Elasticsearch (vektorové aj full-textové vyhľadávanie).
4. **Automaticky vyhodnocuje kvalitu odpovede** (0 10) a výsledky loguje pre ďalšie ladenie.
5. **Ukladá históriu konverzácie** do PostgreSQL a zobrazuje ju na fronte.
6. Podporuje **Google OAuth 2.0** aj lokálnu registráciu.
---
## 🏁 Rýchly štart (Docker compose)
```bash
git clone https://github.com/<your-org>/health-ai.git
cd health-ai
# spusti celý stack
docker compose up --build
```
| Služba | URL |
| ------------- | ---------------------------------------------- |
| Frontend | [http://localhost:5173](http://localhost:5173) |
| Backend API | [http://localhost:5000](http://localhost:5000) |
| Elasticsearch | [http://localhost:9200](http://localhost:9200) |
| PostgreSQL | `localhost:5432` |
> Pri prvom štarte sa automaticky vytvoria tabuľky `users`, `chat_history` a index `drug_docs`.
---
## Štruktúra repozitára
```
.
├─ docker-compose.yml
├─ .env
├─ backend/
│ ├─ Dockerfile
│ ├─ server.py # Flask API
│ ├─ model.py # AI logika (LangChain + Mistral + Elasticsearch)
│ ├─ requirements.txt
│ └─ config.json
└─ frontend/
├─ Dockerfile
├─ src/… # React + Vite + TS
└─ package.json
```
---
## Dôležité API endpointy
| Metóda | URL | Stručný popis |
| ------------------------------------ | ------------------------------------------------- | ------------- |
| `POST /api/chat` | `{query, email, chatId?}` → AI odpoveď + `chatId` | |
| `GET /api/chat_history?email=x` | zoznam konverzácií používateľa | |
| `GET /api/chat_history_detail?id=x` | detail jednej konverzácie | |
| `POST /api/save_user_data` | uloženie doplnkových údajov pacienta | |
| `POST /api/verify` | Google OAuth verifikácia tokenu | |
| `POST /api/register` / `/login` | lokálny účet | |
---
## Architektúra (high-level)
```
┌───────────── Vite/React ─────────────┐
│ používateľský chat → /api/chat │
└──────────────────────────────────────┘
┌───────────── Flask API ──────────────┐
│ validácia tokenu · REST · routing │
│ │ │
│ ▼ ▼
│ PostgreSQL Elasticsearch
│ (users, chat) (vektor + text index)
│ ▲ │
└─────────────────┴──→ Mistral LLM ←──┘
```
---
## ✨ Hlavné knižnice
* **LangChain**, **HuggingFace Embeddings**
* **Mistral-small / mistral-large** (Chat Completion API)
* **Elasticsearch** ako vektorový úložný priestor
* **React 18 + TypeScript + Vite** na fronte
> **Upozornenie**: Aplikácia má iba demonštračný charakter. Neposkytuje oficiálne lekárske odporúčania pred použitím akéhokoľvek lieku sa poraďte s lekárom.