noyau_minimal.py — noyau Phase 0 modèle factice (17/10/2026)

noyau_minimal.py

MIRA — Phase 0 — Noyau minimal (modele factice)

Auteur : Da Conceicao Mario

Version : 0.1

Date : 17/10/2026

#

Principe : le contexte (dict N1 a N6) circule entre

les modules. Interface unique : executer(contexte) -> contexte

Pas de Phi-4 Mini ici — structure et routage seulement.

import json
import os
from datetime import datetime

— Chemin du fichier de configuration —

CHEMIN_CONFIG = os.path.join(
os.path.dirname(file),
"config", "chemins.json"
)

def _charger_chemins():
if os.path.exists(CHEMIN_CONFIG):
with open(CHEMIN_CONFIG, "r", encoding="utf-8") as f:
return json.load(f)
return {}

def _nouveau_contexte(question, historique=None):
"""Cree un contexte frais pour un nouveau tour."""
return {
"N1_question" : question,
"N2_historique" : historique if historique else [],
"N3_intention" : None,
"N4_specialiste": None,
"N5_reponse" : None,
"N6_meta" : {
"source_reponse" : None,
"erreurs" : [],
"mode" : "normal"
}
}

def _detecter_intention(contexte):
"""Detecte l’intention a partir de la question (N1)."""
q = contexte["N1_question"].lower()

if any(m in q for m in ["date", "jour", "heure", "aujourd"]):
    contexte["N3_intention"] = "question_date"
elif any(m in q for m in ["qui t'a", "cree", "createur", "auteur"]):
    contexte["N3_intention"] = "identite"
elif any(m in q for m in ["maintenance", "analyser", "rapport"]):
    contexte["N3_intention"] = "maintenance"
else:
    contexte["N3_intention"] = "inconnue"

return contexte

def _reponse_degradee(contexte):
"""Repond sans modele IA pour les intentions connues."""
intention = contexte["N3_intention"]

if intention == "question_date":
    maintenant = datetime.now().strftime("%A %d %B %Y, %H:%M")
    contexte["N5_reponse"] = "Nous sommes le " + maintenant + "."
    contexte["N6_meta"]["source_reponse"] = "degradee"

elif intention == "identite":
    contexte["N5_reponse"] = "Je suis MIRA, concue et faconnee par Da Conceicao Mario."
    contexte["N6_meta"]["source_reponse"] = "degradee"

return contexte

def _reponse_factice(contexte):
"""Remplace Phi-4 Mini pour l’instant (Phase 0)."""
if contexte["N5_reponse"] is None:
contexte["N5_reponse"] = (
"[NOYAU FACTICE] Question recue : "

  • contexte["N1_question"]
  • " — Le modele Phi-4 Mini sera branche en Phase 4."
    )
    contexte["N6_meta"]["source_reponse"] = "factice"
    return contexte

def _enregistrer_historique(contexte):
"""Ajoute le tour courant a N2_historique."""
tour_num = len(contexte["N2_historique"]) + 1
entree = {
"tour" : tour_num,
"horodatage" : datetime.now().isoformat(),
"question" : contexte["N1_question"],
"reponse" : contexte["N5_reponse"],
"source" : contexte["N6_meta"]["source_reponse"]
}
contexte["N2_historique"].append(entree)
return contexte

def executer(contexte):
"""
Interface principale du noyau.
Entree : contexte dict (N1 a N6)
Sortie : contexte enrichi
"""
try:
contexte = _detecter_intention(contexte)
contexte = _reponse_degradee(contexte)
contexte = _reponse_factice(contexte)
contexte = _enregistrer_historique(contexte)
except Exception as e:
contexte["N6_meta"]["erreurs"].append(str(e))
if contexte["N5_reponse"] is None:
contexte["N5_reponse"] = "Erreur interne dans le noyau."
contexte["N6_meta"]["source_reponse"] = "erreur"
return contexte

— Test rapide si lance directement —

if name == "main":
historique = []

questions = [
    "quel jour sommes-nous ?",
    "qui t'a cree ?",
    "comment fonctionne Python ?"
]

for q in questions:
    print("\n--- Question : " + q)
    ctx = _nouveau_contexte(q, historique)
    ctx = executer(ctx)
    print("Reponse  : " + str(ctx["N5_reponse"]))
    print("Source   : " + str(ctx["N6_meta"]["source_reponse"]))
    print("Erreurs  : " + str(ctx["N6_meta"]["erreurs"]))
    historique = ctx["N2_historique"]

print("\n--- Historique final ---")
for entree in historique:
    print(str(entree["tour"]) + ". " + entree["question"] + " -> " + entree["source"])

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Défiler vers le haut