diff --git a/api/chatbot.php b/api/chatbot.php
index 93ea5ad..f78d6b5 100644
--- a/api/chatbot.php
+++ b/api/chatbot.php
@@ -96,31 +96,23 @@ $historique = $db->fetchAll(
[$id_conversation]
);
-// Construire le prompt système
-$system_prompt = "Tu es un assistant pédagogique en mathématiques pour élèves de collège/lycée.
+$prompt_systeme = "Tu es un assistant pédagogique en mathématiques. Ton rôle est d'AIDER l'élève à COMPRENDRE, PAS de donner la réponse.
RÈGLES ABSOLUES :
-- NE JAMAIS donner la réponse finale ou les calculs complets
-- Utiliser la méthode socratique : poser des questions pour guider la réflexion
-- Donner des INDICES progressifs (formules, méthodes, étapes)
-- Encourager l'élève à décomposer le problème lui-même
-- Rester positif et encourageant
-- Répondre en français simple et clair
-- Réponses courtes (max 3-4 lignes)
+- JAMAIS donner la réponse finale ou résoudre l'exercice
+- Poser des QUESTIONS pour guider la réflexion
+- Donner des INDICES progressifs
+- Rappeler les formules/théorèmes pertinents
+- Encourager l'élève à décomposer le problème
-STRICTEMENT INTERDIT :
-- Résoudre l'exercice complètement
-- Donner les chiffres de la réponse finale
-- Faire les calculs à la place de l'élève
+UTILISE LA NOTATION MATHÉMATIQUE :
+- Fractions : 1/2 (sera converti automatiquement)
+- Puissances : x^2, 10^3
+- Symboles : × (multiplication), ÷ (division)
+- Tu peux aussi utiliser LaTeX entre dollars : \$\\frac{1}{2}\$
-CONTEXTE :
-Évaluation : {$question['titre_eval']}
-Type de question : {$question['type_question']}
-
-ÉNONCÉ :
-{$question['enonce']}
-
-Aide l'élève avec des questions et indices, PAS avec la réponse.";
+ÉNONCÉ DE LA QUESTION (NE CONTIENT PAS LA RÉPONSE) :
+" . $enonce_question;
// Construire l'historique pour Ollama
$messages_ollama = [];
diff --git a/assets/js/chatbot.js b/assets/js/chatbot.js
index e3cea2c..0e423d4 100644
--- a/assets/js/chatbot.js
+++ b/assets/js/chatbot.js
@@ -243,13 +243,71 @@ async loadHelpRemaining() {
}
ajouterMessage(texte, type) {
- const msgDiv = document.createElement('div');
- msgDiv.className = `message message-${type}`;
- msgDiv.textContent = texte;
- this.chatMessages.appendChild(msgDiv);
- this.scrollToBottom();
+ const msgDiv = document.createElement('div');
+ msgDiv.className = `message message-${type}`;
+
+ // Convertir le texte brut en HTML avec support LaTeX
+ const htmlContent = this.formatMathText(texte);
+ msgDiv.innerHTML = htmlContent;
+
+ this.chatMessages.appendChild(msgDiv);
+
+ // Rendre les formules mathématiques avec KaTeX
+ if (typeof renderMathInElement !== 'undefined') {
+ renderMathInElement(msgDiv, {
+ delimiters: [
+ {left: '$$', right: '$$', display: true}, // Mode display (centré)
+ {left: '$', right: '$', display: false}, // Mode inline
+ {left: '\\(', right: '\\)', display: false},
+ {left: '\\[', right: '\\]', display: true}
+ ],
+ throwOnError: false,
+ trust: true
+ });
}
+ this.scrollToBottom();
+}
+
+// NOUVELLE MÉTHODE : Formater le texte avec support maths
+formatMathText(texte) {
+ // Convertir les retours à la ligne en
+ let html = texte.replace(/\n/g, '
');
+
+ // Détecter et convertir les fractions communes
+ // 1/2 → $\frac{1}{2}$
+ html = html.replace(/(\d+)\/(\d+)/g, '$\\frac{$1}{$2}$');
+
+ // Convertir les puissances
+ // x^2 → $x^2$
+ html = html.replace(/([a-z0-9]+)\^([0-9]+)/gi, '$$$1^{$2}$$');
+
+ // Convertir les indices
+ // x_1 → $x_1$
+ html = html.replace(/([a-z0-9]+)_([0-9]+)/gi, '$$$1_{$2}$$');
+
+ // Symboles mathématiques courants
+ const symbols = {
+ '×': '\\times',
+ '÷': '\\div',
+ '≤': '\\leq',
+ '≥': '\\geq',
+ '≠': '\\neq',
+ '≈': '\\approx',
+ '∞': '\\infty',
+ '√': '\\sqrt',
+ 'π': '\\pi',
+ '∑': '\\sum',
+ '∫': '\\int'
+ };
+
+ for (let [symbol, latex] of Object.entries(symbols)) {
+ html = html.replace(new RegExp(symbol, 'g'), '$' + latex + '$');
+ }
+
+ return html;
+}
+
afficherTypingIndicator() {
const typingDiv = document.createElement('div');
typingDiv.className = 'typing-indicator';
diff --git a/passer_evaluation.php b/passer_evaluation.php
index 50638f7..951d5aa 100644
--- a/passer_evaluation.php
+++ b/passer_evaluation.php
@@ -595,6 +595,9 @@ $reponses_sauvegardees = json_decode($tentative['reponses_json'] ?? '{}', true)
+
+
+