--- 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).