173 lines
4.5 KiB
Markdown
173 lines
4.5 KiB
Markdown
# 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
|
|
|
|
```powershell
|
|
cd pwa_assistant
|
|
copy .env.example .env
|
|
```
|
|
|
|
Remplir `.env` :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```powershell
|
|
C:\Users\baron\AppData\Local\Programs\Python\Python313\python.exe -m pip install -r requirements.txt
|
|
```
|
|
|
|
Lancer :
|
|
|
|
```powershell
|
|
C:\Users\baron\AppData\Local\Programs\Python\Python313\python.exe app.py
|
|
```
|
|
|
|
Puis ouvrir :
|
|
|
|
```text
|
|
http://localhost:8080
|
|
```
|
|
|
|
Sur telephone, le micro necessite HTTPS sauf cas particulier localhost.
|
|
|
|
## Deploiement VPS Hostinger
|
|
|
|
Exemple Ubuntu pour le VPS actuel (`/root/openbot`) :
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
cp deploy/opensquared-assistant.service /etc/systemd/system/opensquared-assistant.service
|
|
systemctl daemon-reload
|
|
systemctl enable --now opensquared-assistant
|
|
```
|
|
|
|
Commandes faciles :
|
|
|
|
```bash
|
|
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` :
|
|
|
|
```bash
|
|
install -m 755 deploy/openbot /usr/local/bin/openbot
|
|
openbot status
|
|
openbot restart
|
|
openbot logs
|
|
```
|
|
|
|
Nginx :
|
|
|
|
```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 :
|
|
|
|
```bash
|
|
sudo certbot --nginx -d assistant.ton-domaine.com
|
|
```
|
|
|
|
## Installation Android
|
|
|
|
1. Ouvrir l'URL HTTPS dans Chrome Android.
|
|
2. Menu `...`.
|
|
3. `Ajouter a l'ecran d'accueil` ou `Installer l'application`.
|
|
4. Ouvrir l'icone `Assistant`.
|
|
5. Appuyer une fois sur `Demarrer` pour lancer le mode mains libres.
|
|
6. Parler naturellement : apres 2 secondes de silence, le message est envoye.
|
|
7. Appuyer sur `Arreter` pour 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 :
|
|
|
|
```text
|
|
Ajoute Sophie avec l'adresse sophie@example.com
|
|
```
|
|
|
|
Ensuite tu peux dire :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
/root/openbot/data/memory.sqlite
|
|
```
|
|
|
|
Exemples de phrases :
|
|
|
|
```text
|
|
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=browser` utilise 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=groq` dans `.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.
|