Assistente AI modulare (Python + Flask) con chat testuale e vocale, modalità di “interrogazione” con valutazione automatica, e ricerca semantica RAG.
AIcompanion nasce per unire conversazione naturale (testo/voce) e strumenti didattici (interrogazioni e feedback) in un’unica app locale e modulare. L’obiettivo è avere un “compagno” che non solo risponde, ma può anche contestualizzare (RAG) e valutare.
- Chat testuale e vocale: input testo/audio, risposta LLM, salvataggio su disco (
questions/eresponses/). - Pipeline voce end-to-end: Speech-to-Text con Whisper, Text-to-Speech con Kokoro.
- Modalità “interrogazione”: sessioni di test, valutazione automatica (CORRETTA/SBAGLIATA) con spiegazioni e riepilogo finale.
- Ricerca semantica (RAG): recupero documenti pertinenti tramite vector store + embeddings (OllamaEmbeddings).
- Modularità: componenti separati (ASR/TTS/RAG/valutazione) per estendere facilmente modelli e flussi.
AIcompanion è progettato come piattaforma modulare dove:
- L’esperienza utente può alternare chat libera e sessioni strutturate di test.
- I modelli possono essere sostituiti/aggiornati senza riscrivere l’intera app (LLM, embeddings, ASR, TTS).
- Le risposte possono essere arricchite con conoscenza esterna tramite RAG per aumentare coerenza e utilità.
| Area | Technology | Goal |
|---|---|---|
| App | Python + Flask | Web app semplice, estendibile, con endpoint per testo e audio |
| LLM | ChatOllama | Risposte conversazionali locali |
| ASR | Whisper (+ ffmpeg) | Trascrizione audio → testo |
| TTS | Kokoro | Sintesi vocale testo → audio |
| RAG | Vector Store + OllamaEmbeddings | Recupero contesto semantico per risposte più pertinenti |
| Storage | File system (questions/, responses/) |
Persistenza semplice di domande/risposte |
I contributi sono benvenuti.
- Per bug e feature request, apri una Issue
- Per contributi al codice, apri una Pull Request con una descrizione chiara della modifica e della motivazione
- Per contatti diretti, scrivimi a simonesiega1@gmail.com o contattami su GitHub
Questo progetto è distribuito sotto i termini della licenza MIT, come indicato nel file LICENSE.
