🎬 IA Déconnectée - Cas d'usage Inspirants

Procédure technique d'installation interactive

📋 Sommaire

🔧 Prérequis système ⚙️ Installation de l'environnement 🎓 Création du chatbot éducatif 🌾 Déploiement chatbot agricole 🏥 Configuration assistant santé 🏛️ Mise en place gardien culturel ✅ Tests et validation

🔧 Prérequis système

Configuration minimale recommandée

Vérification préalable

# Vérifier Python
python3 --version

# Vérifier pip  
pip3 --version

# Vérifier espace disque
df -h

⚙️ Installation de l'environnement

Étape 1 : Mise à jour du système

sudo apt update && sudo apt upgrade -y

Étape 2 : Installation des dépendances

# Installation Python et pip
sudo apt install python3 python3-pip -y

# Installation Streamlit
pip3 install streamlit

# Vérification installation
streamlit --version
✅ Résultat attendu :
✅ Streamlit importé avec succès
🎯 Environnement prêt pour IA déconnectée

🎓 Création du chatbot éducatif

Étape 1 : Créer la base de connaissances éducative

cat > base_education.py << 'EOF'
# Base de connaissances éducative française
responses_education = {
    "mathématiques": [
        "Les mathématiques aident à résoudre des problèmes quotidiens.",
        "Pour calculer une surface : longueur × largeur.",
        "Les fractions représentent des parts d'un tout.",
        "Le théorème de Pythagore : a² + b² = c² pour un triangle rectangle."
    ],
    "sciences": [
        "L'eau bout à 100°C au niveau de la mer.",
        "Les plantes ont besoin de lumière pour la photosynthèse.",
        "Le cycle de l'eau : évaporation, condensation, précipitation.",
        "La gravité fait tomber les objets vers le sol."
    ],
    "géographie": [
        "Madagascar est la 4ème plus grande île du monde.",
        "Le climat tropical domine dans le Nord.",
        "Les hauts plateaux occupent le centre de l'île.",
        "L'océan Indien entoure Madagascar."
    ]
}

def get_reponse_education(question):
    question_lower = question.lower()
    
    for sujet, reponses in responses_education.items():
        if sujet in question_lower:
            import random
            return random.choice(reponses)
    
    return f"Question intéressante sur '{question}'. Peux-tu préciser ta matière ?"
EOF

Étape 2 : Créer l'interface éducative

cat > chatbot_education.py << 'EOF'
import streamlit as st
import random
from base_education import responses_education, get_reponse_education

# Configuration page
st.set_page_config(
    page_title="Assistant Éducatif Local",
    page_icon="🎓",
    layout="wide"
)

# En-tête
st.title("🎓 Assistant Éducatif Local")
st.write("*Aide aux devoirs - Fonctionne sans Internet*")
st.markdown("---")

# Interface principale
col1, col2 = st.columns([2, 1])

with col1:
    # Sélection matière
    matiere = st.selectbox(
        "Choisis ta matière :", 
        ["Mathématiques", "Sciences", "Géographie"],
        index=0
    )
    
    # Zone de question
    question = st.text_area(
        "Pose ta question :", 
        placeholder="Exemple : Comment calculer l'aire d'un rectangle ?",
        height=100
    )
    
    # Bouton de soumission
    if st.button("🎯 Obtenir de l'aide", type="primary"):
        if question.strip():
            with st.spinner("🤔 Je réfléchis..."):
                reponse = get_reponse_education(question)
                
            st.success("📖 Explication :")
            st.write(reponse)
        else:
            st.warning("⚠️ Pose d'abord ta question !")

with col2:
    st.subheader("📊 Statistiques")
    st.metric("Questions disponibles", "20+")
    st.metric("Matières couvertes", "3")
    st.metric("Langue", "Français")

st.markdown("---")
st.markdown("*🎓 Assistant éducatif développé pour l'IA déconnectée*")
EOF

Étape 3 : Test du chatbot éducatif

# Lancer l'application
streamlit run chatbot_education.py
🌐 URL d'accès : http://localhost:8501

🌾 Déploiement chatbot agricole

Étape 1 : Base de connaissances agricole

cat > base_agricole.py << 'EOF'
# Conseils agricoles adaptés à Madagascar
conseils_agricole = {
    "riz": {
        "plantation": "Période optimale : octobre-décembre selon les régions. Préparation des pépinières en septembre.",
        "maladies": [
            "Pyriculariose : taches brunes sur les feuilles. Traitement : variétés résistantes.",
            "Helminthosporiose : dessèchement des feuilles. Prévention : rotation des cultures."
        ],
        "conseils": "Rotation avec légumineuses recommandée. Drainage adapté essentiel. Espacement 20x20 cm."
    },
    "manioc": {
        "plantation": "Début saison des pluies (octobre-novembre). Boutures de 20 cm minimum.",
        "maladies": [
            "Mosaïque : jaunissement des feuilles. Solution : utiliser boutures saines.",
            "Bactériose : flétrissement brutal. Prévention : éviter blessures lors plantation."
        ],
        "conseils": "Espacement 1m x 1m. Buttage après 3 mois. Récolte après 8-12 mois."
    }
}

def get_conseil_agricole(culture, type_conseil):
    culture_lower = culture.lower()
    
    if culture_lower in conseils_agricole:
        data = conseils_agricole[culture_lower]
        
        if "calendrier" in type_conseil.lower():
            return f"📅 {data['plantation']}"
        elif "maladie" in type_conseil.lower():
            import random
            return f"🐛 {random.choice(data['maladies'])}"
        elif "pratique" in type_conseil.lower():
            return f"💡 {data['conseils']}"
    
    return f"Conseil non disponible pour {culture}. Cultures disponibles : riz, manioc"
EOF

🏥 Configuration assistant santé

⚠️ AVERTISSEMENT IMPORTANT

Cette IA donne des informations générales de prévention, PAS de diagnostic médical. En cas de symptômes : consultez immédiatement un professionnel de santé.

Base de connaissances santé préventive

cat > base_sante.py << 'EOF'
# Informations de prévention santé validées
sante_prevention = {
    "paludisme": {
        "prevention": [
            "Utiliser une moustiquaire imprégnée chaque nuit",
            "Éliminer toutes les eaux stagnantes autour de la maison",
            "Porter des vêtements couvrants le soir"
        ],
        "action": "Consulter IMMÉDIATEMENT le centre de santé le plus proche"
    },
    "hygiene": {
        "conseils": [
            "Lavage des mains aux 5 moments clés (OMS)",
            "Latrine à plus de 30m des points d'eau",
            "Conservation des aliments dans des récipients fermés"
        ]
    }
}

def get_info_sante(categorie):
    if "paludisme" in categorie.lower():
        info = sante_prevention["paludisme"]
        return f"🦟 **Prévention paludisme :**\\n" + "\\n".join([f"• {p}" for p in info["prevention"]]) + f"\\n\\n🏥 **Action :** {info['action']}"
    
    elif "hygiene" in categorie.lower():
        conseils = sante_prevention["hygiene"]["conseils"]
        return f"💧 **Hygiène :**\\n" + "\\n".join([f"• {c}" for c in conseils])
    
    return "Information de santé non disponible. Consultez votre centre de santé."
EOF

🏛️ Mise en place gardien culturel

Base patrimoine malgache

cat > base_culture.py << 'EOF'
# Patrimoine culturel malgache
patrimoine_malgache = {
    "proverbes": {
        "marina": {
            "malgache": "Ny marina tsy mba maty",
            "francais": "La vérité ne meurt jamais",
            "explication": "Proverbe sur l'importance et la permanence de la vérité"
        },
        "fihavanana": {
            "malgache": "Ny fihavanana no harem-pirenena",
            "francais": "La solidarité est la richesse de la nation",
            "explication": "Valeur fondamentale malgache de l'entraide mutuelle"
        }
    },
    "traditions": {
        "famadihana": {
            "nom": "Famadihana",
            "description": "Cérémonie de retournement des morts",
            "signification": "Renouvellement du lien avec les ancêtres"
        }
    }
}

def get_info_culturelle(categorie):
    if "proverbe" in categorie.lower():
        import random
        p = random.choice(list(patrimoine_malgache["proverbes"].values()))
        return f"**Malgache :** {p['malgache']}\\n**Français :** {p['francais']}\\n**Explication :** {p['explication']}"
    
    return "Information culturelle non disponible."
EOF

✅ Tests et validation

Script de test automatisé

cat > test_complet.py << 'EOF'
#!/usr/bin/env python3

import subprocess
import time
import sys

print("🧪 Test complet IA Déconnectée - Cas d'usage")
print("=" * 50)

def test_streamlit_install():
    """Test installation Streamlit"""
    try:
        import streamlit
        print("✅ Streamlit installé correctement")
        return True
    except ImportError:
        print("❌ Streamlit non installé")
        return False

def test_bases_donnees():
    """Test bases de connaissances"""
    tests = [
        ("base_education.py", "responses_education"),
        ("base_agricole.py", "conseils_agricole"),
        ("base_sante.py", "sante_prevention"),
        ("base_culture.py", "patrimoine_malgache")
    ]
    
    succes = 0
    for fichier, variable in tests:
        try:
            with open(fichier, 'r') as f:
                contenu = f.read()
                if variable in contenu:
                    print(f"✅ {fichier} : Base de données présente")
                    succes += 1
                else:
                    print(f"❌ {fichier} : Variable {variable} manquante")
        except FileNotFoundError:
            print(f"❌ {fichier} : Fichier non trouvé")
    
    return succes == len(tests)

# Exécution tests
if __name__ == "__main__":
    print("\\n1️⃣ Test installation...")
    test1 = test_streamlit_install()
    
    print("\\n2️⃣ Test bases de données...")
    test2 = test_bases_donnees()
    
    if all([test1, test2]):
        print("\\n🎉 TOUS LES TESTS RÉUSSIS !")
        print("Votre environnement IA déconnectée est prêt !")
    else:
        print("\\n⚠️ Certains tests ont échoué")
        sys.exit(1)
EOF

# Rendre exécutable et lancer
chmod +x test_complet.py
python3 test_complet.py

🔧 Dépannage

Erreur : "streamlit command not found"

# Solution 1 : Réinstaller streamlit
pip3 install --upgrade streamlit

# Solution 2 : Utiliser python -m
python3 -m streamlit run votre_fichier.py

🔗 Navigation du Projet

📚 Retour au Guide Complet 🏗️ Voir l'Architecture Projet

Version : Juillet 2025 | Auteur : Erick Mormin | Projet IA Déconnectée

px; margin: 20px 0; } .progress { height: 100%; background: linear-gradient(90deg, #667eea, #764ba2); border-radius: 3