Procédure technique d'installation interactive
# Vérifier Python
python3 --version
# Vérifier pip
pip3 --version
# Vérifier espace disque
df -h
sudo apt update && sudo apt upgrade -y
# Installation Python et pip
sudo apt install python3 python3-pip -y
# Installation Streamlit
pip3 install streamlit
# Vérification installation
streamlit --version
✅ Streamlit importé avec succès
🎯 Environnement prêt pour IA déconnectée
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
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
# Lancer l'application
streamlit run chatbot_education.py
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
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é.
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
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
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
# Solution 1 : Réinstaller streamlit
pip3 install --upgrade streamlit
# Solution 2 : Utiliser python -m
python3 -m streamlit run votre_fichier.py
Version : Juillet 2025 | Auteur : Erick Mormin | Projet IA Déconnectée