La recherche internet dans My Personal AI est optimisée pour une expérience utilisateur améliorée : recherche internet optimisée, extraction de données en temps réel et détection d'intentions locales. Votre IA peut maintenant accéder aux informations web avec une fiabilité accrue, extraire des prix ou données récentes sans être trompée par le cache des sites, et détecter automatiquement les recherches de lieux de proximité.
- Brave Search & DuckDuckGo : Recherches rapides et stables avec gestion avancée du décodage (Brotli).
- Extraction Temps Réel : Priorisation des "Extraits de recherche" (snippets) par le LLM pour garantir des données à jour (ex: cours de la bourse, prix).
- Détection d'Intentions Locales : Reconnaissance automatique des requêtes de proximité (café, restaurant, adresse, proche).
- Résumés automatiques : Synthèse intelligente des résultats.
- Extraction de contenu : Analyse des pages web avec BeautifulSoup.
- Traitement parallèle : Analyse simultanée de plusieurs sources.
- Service wttr.in gratuit : Aucune clé API requise
- Détection automatique : Reconnaît les questions météo naturellement
- Toutes les villes du monde : Paris, Tokyo, New York, Londres, Sydney, São Paulo, etc.
- Données complètes :
- Conditions météorologiques actuelles
- Température et ressenti
- Humidité et précipitations
- Vitesse et direction du vent
- Phase lunaire
- Prévisions 3 jours : Conditions futures incluses
- Format convivial : Réponses structurées avec emojis
- Fallback : Liens Météo-France si service indisponible
- Détection d'intention : Reconnaissance automatique des demandes de recherche
- Extraction de requêtes : Analyse du langage naturel pour extraire les mots-clés
- Adaptation de format : Réponses personnalisées selon le type de recherche
- Gestion d'erreurs : Fallback gracieux en cas de problème réseau
🤖 "Quel est le café le plus proche de Compans Caffarelli ?"
🤖 "Trouve-moi un bon restaurant italien à Paris"
🤖 "Quelle est l'adresse de la mairie de Toulouse ?"
🤖 "Quelle est la météo à Paris ?"
🤖 "Quel temps fait-il à Toulouse aujourd'hui ?"
🤖 "Météo Lyon"
🤖 "Température à Marseille ?"
🤖 "Prévisions météo Nice"
🤖 "Cherche sur internet les actualités Python"
🤖 "Recherche des informations sur l'intelligence artificielle"
🤖 "Trouve-moi des news sur Tesla"
🤖 "Quelle est la hauteur de la Tour Eiffel ?"
🤖 "Comment faire du pain ?" (détecté comme tutoriel)
🤖 "Qu'est-ce que le machine learning ?" (détecté comme définition)
🤖 "Dernières actualités climatiques" (détecté comme news)
🤖 "Prix du Bitcoin aujourd'hui" (détecté comme prix)
🤖 "Peux-tu chercher..."
🤖 "Trouve-moi..."
🤖 "Recherche moi..."
🤖 "J'aimerais des infos sur..."
🤖 "Qu'est-ce qu'on dit sur..."
| Type | Mots-clés Détectés | Format de Réponse |
|---|---|---|
| Météo | météo, temps, température, prévisions, climat | Données temps réel + prévisions 3 jours |
| News | actualité, news, récent, dernières nouvelles | Résumé des dernières informations |
| Tutorial | comment, how to, guide, étapes | Instructions étape par étape |
| Definition | qu'est-ce que, définition, c'est quoi | Explication claire et concise |
| Price | prix, coût, combien | Information tarifaire actuelle |
| Review | avis, opinion, critique | Synthèse des opinions |
| General | (autres) | Résumé informatif général |
class InternetSearchEngine:
"""Moteur de recherche internet intelligent avec météo"""
def search_and_summarize(self, query: str, context: Dict) -> str:
"""Recherche et résume les résultats web"""
# 1. Détection météo (_is_weather_query)
# 2. Si météo: wttr.in API + extraction ville
# 3. Sinon: DuckDuckGo API Instant (priorité #1)
# 4. Extraction de contenu des pages
# 5. Analyse et résumé intelligent
# 6. Formatage contextuel de la réponse
def _handle_weather_query(self, query: str) -> str:
"""Gère les requêtes météo (v5.7.0)"""
# 1. Extraction ville (40+ villes FR reconnues)
# 2. Appel wttr.in API (format pipe-separated)
# 3. Parsing conditions|temp|humidité|vent|précip|lune
# 4. Formatage réponse avec emojis
# 5. Fallback Météo-France si erreur# Priorité 1: DuckDuckGo API Instant
# - Rapide et stable (< 500ms)
# - Pas de CAPTCHA
# - JSON structuré (Abstract + RelatedTopics)
# Priorité 2: Météo wttr.in (si détection météo)
# - Gratuit sans API key
# - Format texte simple
# - Supporte langue française
# Priorité 3: Wikipedia API
# - Fallback fiable
# - Contenu structuré
# - Peut timeout sur proxy entreprise
# Priorité 4: DuckDuckGo Lite (dernière chance)
# - Scraping HTML
# - Problèmes CAPTCHA fréquents (status 202)
# - Utilisé uniquement si tout échoue- Détection d'intention : Pattern
internet_searchreconnu - Extraction de requête : Analyse du langage naturel
- Détection météo : Mots-clés (météo, temps, température, etc.)
- Route spécialisée :
- Si météo →
_handle_weather_query()+ wttr.in - Sinon →
_perform_search()+ DuckDuckGo
- Si météo →
- Recherche web : DuckDuckGo API Instant (priorité #1)
- Extraction contenu : Scraping des pages pertinentes
- Résumé intelligent : Synthèse des informations
- Formatage : Adaptation selon le type de recherche
- Timeout réseau : 10 secondes par requête
- Retry automatique : 3 tentatives maximum
- Fallback gracieux : Message informatif en cas d'échec
- Validation contenu : Vérification de la qualité des résultats
# Optionnel : Configuration proxy
HTTP_PROXY=http://proxy:8080
HTTPS_PROXY=https://proxy:8080
# Optionnel : Timeout personnalisé (en secondes)
SEARCH_TIMEOUT=15# Dans internet_search.py
TIMEOUT = 10 # Timeout par requête
MAX_RETRIES = 3 # Nombre de tentatives
MAX_PAGES = 5 # Pages à analyser
MIN_CONTENT_LENGTH = 100 # Taille minimale du contenu
# Météo wttr.in (v5.7.0)
WTTR_BASE_URL = "https://wttr.in/"
WTTR_FORMAT = "%C|%t|%h|%w|%p|%m" # Conditions|Temp|Humid|Wind|Precip|Moon
WTTR_LANG = "fr" # Langue française
# Villes supportées (40+)
FRENCH_CITIES = [
"paris", "lyon", "marseille", "toulouse", "nice",
"nantes", "montpellier", "strasbourg", "bordeaux", ...
]- Temps météo wttr.in : 1-3 secondes (API externe)
- Temps DuckDuckGo Instant : 200-500ms
- Temps recherche complète : 2-5 secondes
- Pages analysées : 3-5 sources
- Taille des résumés : 200-800 mots
- Taux de succès : >98% avec API Instant (amélioration +3%)
- Villes météo supportées : Toutes les villes du monde (via wttr.in)
- Ordre moteurs optimisé : API Instant prioritaire (évite timeouts)
- Détection météo précoce : Route spécialisée avant recherche générale
- Traitement parallèle : Analyse simultanée des pages
- Cache DNS : Résolution rapide des domaines
- Compression : Requêtes HTTP compressées
- Headers optimisés : Évite les blocages anti-bot
- Cloudscraper fallback : Contournement CAPTCHA si nécessaire
- Recherches anonymes : Aucun tracking via DuckDuckGo
- Pas de cookies : Sessions sans persistance
- Headers génériques : User-agent standard
- Données locales : Aucune sauvegarde des recherches
- ✅ Utilisez des requêtes spécifiques
- ✅ Vérifiez votre connexion internet
- ✅ Reformulez en cas d'échec
- ❌ Évitez les requêtes trop larges
- ❌ N'abusez pas des recherches répétitives
Solution :
1. Vérifiez votre connexion
2. Testez avec ping google.com
3. Vérifiez les paramètres proxy
Problème : ConnectionResetError ou timeout wttr.in
Cause : Proxy/firewall entreprise bloque wttr.in
Solution :
1. Utilisez les liens Météo-France fournis en fallback
2. Configurez proxy dans internet_search.py si disponible
3. Accédez à wttr.in/{ville} directement dans navigateur
Problème : DuckDuckGo Lite retourne status 202
Solution : Ordre moteurs optimisé, API Instant maintenant prioritaire
Résultat : Plus de CAPTCHA avec nouveau système
Solution :
1. Reformulez votre requête
2. Soyez plus spécifique
3. Réessayez dans quelques instants
4. Vérifiez que tous les moteurs ne sont pas bloqués
Solution :
1. Utilisez des mots-clés différents
2. Élargissez votre recherche
3. Vérifiez l'orthographe
4. Pour météo: vérifiez que la ville est dans les 40+ supportées
# Activation des logs détaillés
import logging
logging.basicConfig(level=logging.DEBUG)Pour toute question ou problème :
- Consultez d'abord ce guide
- Vérifiez les logs dans
/logs/ - Testez avec des requêtes simples
- Redémarrez l'application si nécessaire
- Utilisez le script
clean_project.batpour nettoyer le cache
Amusez-vous bien avec la recherche internet ! 🔍✨