Spaces:
Runtime error
Runtime error
| title: Veille CI | |
| emoji: 🔎 | |
| colorFrom: green | |
| colorTo: yellow | |
| sdk: gradio | |
| sdk_version: "5.0.0" | |
| app_file: app.py | |
| pinned: false | |
| # Veille automatisée — Côte d'Ivoire (prototype gratuit) | |
| Pipeline : recherche web → extraction du contenu → synthèse IA avec citations → cache local. | |
| ## 1. Obtenir les clés API gratuites (5 min) | |
| ### Tavily (recherche web) — gratuit, 1000 requêtes/mois | |
| 1. Aller sur https://tavily.com | |
| 2. Créer un compte (gratuit, pas de carte bancaire requise) | |
| 3. Copier la clé API depuis le dashboard | |
| ### Google Gemini (synthèse IA) — gratuit, quota généreux (~1500 requêtes/jour) | |
| 1. Aller sur https://aistudio.google.com/apikey | |
| 2. Se connecter avec un compte Google | |
| 3. Cliquer sur "Create API key" | |
| 4. Copier la clé | |
| ## 2. Installation | |
| ```bash | |
| cd veille-app | |
| pip install -r requirements.txt | |
| ``` | |
| ## 3. Configuration | |
| ```bash | |
| export TAVILY_API_KEY="ta_cle_tavily" | |
| export GEMINI_API_KEY="ta_cle_gemini" | |
| ``` | |
| (Sur Windows PowerShell : `$env:TAVILY_API_KEY="ta_cle"`) | |
| ## 4. Lancer | |
| ```bash | |
| python app.py | |
| ``` | |
| L'interface s'ouvre sur http://127.0.0.1:7860 | |
| ## 5. Déploiement gratuit (optionnel) | |
| Pour rendre l'app accessible en ligne, gratuitement : | |
| 1. Créer un Hugging Face Space (type Gradio) : https://huggingface.co/new-space | |
| 2. Uploader `app.py` et `requirements.txt` | |
| 3. Ajouter `TAVILY_API_KEY` et `GEMINI_API_KEY` dans les "Secrets" du Space (Settings > Repository secrets) | |
| 4. Le Space se déploie automatiquement | |
| ## Comment ça marche | |
| 1. **Recherche** : Tavily cherche les pages web récentes sur le thème + "Côte d'Ivoire", en | |
| priorisant certains domaines fiables (gouv.ci, aip.ci, fratmat.info, etc.) — modifiable | |
| dans `DOMAINES_PRIORITAIRES` en haut de `app.py`. | |
| 2. **Extraction** : `trafilatura` nettoie chaque page pour ne garder que le texte utile | |
| (sans pubs, menus, etc.). | |
| 3. **Synthèse** : Gemini reçoit les extraits numérotés et génère une synthèse structurée où | |
| chaque affirmation est reliée à sa source `[1]`, `[2]`, etc. Il évalue aussi la fiabilité | |
| des informations. | |
| 4. **Cache** : chaque thème recherché est mis en cache 6h dans `veille_cache.db` (SQLite) pour | |
| éviter de repayer une recherche identique. Modifiable via `CACHE_TTL_HOURS`. | |
| ## Limites connues de ce prototype | |
| - Certains sites ivoiriens bloquent le scraping ou ont un contenu mal structuré → | |
| `trafilatura` peut échouer à extraire le texte sur certaines pages (ce n'est pas grave, | |
| la source est simplement ignorée). | |
| - Le free tier Tavily (1000/mois) et Gemini (~1500/jour) sont largement suffisants pour un | |
| usage personnel ou une démo, mais à surveiller si tu ouvres l'accès à plusieurs utilisateurs. | |
| - Pas d'authentification utilisateur ni de limitation d'usage — à ajouter avant une mise en | |
| production publique. | |
| ## Pistes d'amélioration | |
| - Ajouter des embeddings (Chroma) pour permettre une recherche sémantique dans l'historique | |
| des synthèses déjà générées. | |
| - Filtrer les résultats Tavily par date exacte (`start_date`/`end_date` dans l'API) plutôt | |
| que de compter sur la mention "2026" dans la requête. | |
| - Ajouter un export PDF de la synthèse. | |
| - Permettre à l'utilisateur de choisir la fenêtre temporelle (dernière semaine / mois / an). | |