mode_reseau.py — deuxième cerveau ponctuel, avec contrôle de justesse

Bienvenue sur CFTPfr.fr Forums mode_reseau.py — deuxième cerveau ponctuel, avec contrôle de justesse

  • Ce sujet est vide.
Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #285
    Mario Da Conceicao
    Maître des clés

    Nouveau composant du 01/08/2026 — "mode réseau", le deuxième cerveau ponctuel de MIRA. Utilisé uniquement pour vérifier/compléter une réponse quand une connexion est disponible, jamais comme dépendance. Toute information réseau est croisée entre plusieurs sources et clairement étiquetée, pour garantir la justesse plutôt que d’introduire de l’incertain ou du faux.

    Principe

    1. MIRA répond d’abord avec ses connaissances locales (modèle + spécialités validées)
    2. Si une connexion est disponible ET que la réponse est incertaine, elle peut vérifier en ligne
    3. Une information réseau n’est acceptée que si au moins 2 sources la confirment
    4. La réponse finale distingue toujours clairement "connaissance locale" et "vérifié en ligne"
    import socket
    import logging
    
    def connexion_disponible(hote="1.1.1.1", port=53, delai=2):
        """
        Vérifie si une connexion réseau est disponible, sans dépendre d'un site
        précis (utilise un serveur DNS public juste pour tester la connexion,
        aucune requête de contenu). Léger, rapide, respecte la vie privée.
        """
        try:
            socket.setdefaulttimeout(delai)
            socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((hote, port))
            return True
        except OSError:
            return False
    
    class ModeReseau:
        """
        Le "deuxième cerveau" de MIRA : uniquement pour vérifier ou compléter
        une réponse incertaine quand une connexion existe. Jamais une
        dépendance — MIRA reste complète sans lui.
        """
    
        def __init__(self, nb_sources_minimum=2):
            self.nb_sources_minimum = nb_sources_minimum
    
        def disponible(self):
            return connexion_disponible()
    
        def verifier_information(self, question, requests_module=None):
            """
            Cherche une confirmation croisée d'une information incertaine.
            Ne conclut JAMAIS à une confirmation sur une seule source.
            """
            if not self.disponible():
                return {
                    "statut": "hors_ligne",
                    "message": "Pas de connexion — réponse basée uniquement sur les connaissances locales."
                }
    
            if requests_module is None:
                try:
                    import requests as requests_module
                except ImportError:
                    return {"statut": "outil_manquant", "message": "Bibliothèque réseau non installée."}
    
            # À brancher : une vraie recherche, qui doit interroger au moins
            # self.nb_sources_minimum sources indépendantes avant de conclure
            # à une confirmation. Squelette volontairement laissé ouvert tant
            # que la source de recherche n'est pas choisie.
            return {
                "statut": "a_implementer",
                "message": "Recherche réseau prête à être branchée à une vraie source."
            }
    
        def etiqueter_reponse(self, reponse_locale, resultat_verification):
            """
            Assemble la réponse finale en distinguant TOUJOURS ce qui vient des
            connaissances locales de ce qui vient d'une vérification réseau —
            jamais mélangé sans distinction claire pour l'utilisateur.
            """
            statut = resultat_verification.get("statut")
            if statut == "confirme":
                return f"{reponse_locale}\n\n(Vérifié en ligne : {resultat_verification.get('details', '')})"
            elif statut == "hors_ligne":
                return f"{reponse_locale}\n\n(Basé uniquement sur mes connaissances locales — hors connexion)"
            else:
                return f"{reponse_locale}\n\n(Non vérifié en ligne)"

    Ce qui reste à faire

    Choisir la source de recherche réelle à brancher dans verifier_information() — à décider une fois OS-MIRE installé et testable en conditions réelles.

Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.
Retour en haut