OpenSquared Assistant PWA
POC de PWA mobile pour parler a l'assistant depuis un telephone.
Fonctionnalites
- Interface mobile installable sur Android via "Ajouter a l'ecran d'accueil".
- Bouton micro avec transcription Groq Whisper.
- Reponse LLM Groq.
- Lecture audio automatique de la reponse avec une voix francaise douce cote navigateur.
- Envoi d'emails Gmail avec carnet de contacts
contacts.json. - Ajout de contacts par conversation, par exemple :
Ajoute Sophie avec l'adresse sophie@example.com. - Memoire professionnelle SQLite pour clients, projets, taches, notes et depots Git associes.
Configuration locale
cd pwa_assistant
copy .env.example .env
Remplir .env :
GROQ_API_KEY=...
GMAIL_EMAIL=...
GMAIL_PASSWORD=...
APP_SECRET=...
TTS_PROVIDER=browser
CONTACTS_FILE=/root/openbot/data/contacts.json
MEMORY_DB=/root/openbot/data/memory.sqlite
Installer :
C:\Users\baron\AppData\Local\Programs\Python\Python313\python.exe -m pip install -r requirements.txt
Lancer :
C:\Users\baron\AppData\Local\Programs\Python\Python313\python.exe app.py
Puis ouvrir :
http://localhost:8080
Sur telephone, le micro necessite HTTPS sauf cas particulier localhost.
Deploiement VPS Hostinger
Exemple Ubuntu pour le VPS actuel (/root/openbot) :
cd /root
git clone https://gitea.open-squared.tech/admin/openbot.git openbot
cd openbot
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
nano .env
Service systemd pour que l'app continue apres fermeture de Putty :
cp deploy/opensquared-assistant.service /etc/systemd/system/opensquared-assistant.service
systemctl daemon-reload
systemctl enable --now opensquared-assistant
Commandes faciles :
systemctl start opensquared-assistant
systemctl stop opensquared-assistant
systemctl restart opensquared-assistant
systemctl status opensquared-assistant
journalctl -u opensquared-assistant -f
Optionnel, installer le raccourci openbot :
install -m 755 deploy/openbot /usr/local/bin/openbot
openbot status
openbot restart
openbot logs
Nginx :
server {
server_name assistant.ton-domaine.com;
location / {
proxy_pass http://172.17.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
HTTPS avec Certbot :
sudo certbot --nginx -d assistant.ton-domaine.com
Installation Android
- Ouvrir l'URL HTTPS dans Chrome Android.
- Menu
.... Ajouter a l'ecran d'accueilouInstaller l'application.- Ouvrir l'icone
Assistant. - Appuyer une fois sur
Demarrerpour lancer le mode mains libres. - Parler naturellement : apres 2 secondes de silence, le message est envoye.
- Appuyer sur
Arreterpour couper l'ecoute continue.
Contacts email
Les contacts sont stockes dans contacts.json en local. Sur le VPS, le service utilise /root/openbot/data/contacts.json pour eviter de modifier les fichiers suivis par Git.
Tu peux les ajouter directement dans l'assistant :
Ajoute Sophie avec l'adresse sophie@example.com
Ensuite tu peux dire :
Envoie un email a Sophie
L'assistant remplacera Sophie par son adresse email.
Memoire professionnelle
Les informations professionnelles sont stockees dans une base SQLite. Sur le VPS, le service utilise :
/root/openbot/data/memory.sqlite
Exemples de phrases :
SAFTCO est un nouveau client, note quelque part que je dois rappeler le directeur.
Note que le projet Portail SAFTCO est associe au client SAFTCO.
Associe le repo /root/openbot/repos/saftco au projet Portail SAFTCO.
Qu'est-ce que tu sais sur SAFTCO ?
La memoire peut contenir des clients, projets, taches, notes et depots Git associes a un projet.
Notes
- Groq Orpheus TTS doit etre accepte dans la console Groq pour fonctionner : https://console.groq.com/playground?model=canopylabs%2Forpheus-v1-english
- Par defaut
TTS_PROVIDER=browserutilise la voix francaise du telephone pour eviter l'accent anglais du modele Groq Orpheus. - La PWA privilegie les voix feminines francaises disponibles sur le telephone, avec un debit plus lent et un ton plus doux.
- Pour revenir au TTS Groq, mettre
TTS_PROVIDER=groqdans.env. - La lecture audio automatique depend toujours des regles du navigateur mobile, mais elle marche mieux dans une PWA apres un tap utilisateur que dans Telegram.