amelioration latex
This commit is contained in:
@ -96,31 +96,23 @@ $historique = $db->fetchAll(
|
|||||||
[$id_conversation]
|
[$id_conversation]
|
||||||
);
|
);
|
||||||
|
|
||||||
// Construire le prompt système
|
$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.
|
||||||
$system_prompt = "Tu es un assistant pédagogique en mathématiques pour élèves de collège/lycée.
|
|
||||||
|
|
||||||
RÈGLES ABSOLUES :
|
RÈGLES ABSOLUES :
|
||||||
- NE JAMAIS donner la réponse finale ou les calculs complets
|
- JAMAIS donner la réponse finale ou résoudre l'exercice
|
||||||
- Utiliser la méthode socratique : poser des questions pour guider la réflexion
|
- Poser des QUESTIONS pour guider la réflexion
|
||||||
- Donner des INDICES progressifs (formules, méthodes, étapes)
|
- Donner des INDICES progressifs
|
||||||
- Encourager l'élève à décomposer le problème lui-même
|
- Rappeler les formules/théorèmes pertinents
|
||||||
- Rester positif et encourageant
|
- Encourager l'élève à décomposer le problème
|
||||||
- Répondre en français simple et clair
|
|
||||||
- Réponses courtes (max 3-4 lignes)
|
|
||||||
|
|
||||||
STRICTEMENT INTERDIT :
|
UTILISE LA NOTATION MATHÉMATIQUE :
|
||||||
- Résoudre l'exercice complètement
|
- Fractions : 1/2 (sera converti automatiquement)
|
||||||
- Donner les chiffres de la réponse finale
|
- Puissances : x^2, 10^3
|
||||||
- Faire les calculs à la place de l'élève
|
- Symboles : × (multiplication), ÷ (division)
|
||||||
|
- Tu peux aussi utiliser LaTeX entre dollars : \$\\frac{1}{2}\$
|
||||||
|
|
||||||
CONTEXTE :
|
ÉNONCÉ DE LA QUESTION (NE CONTIENT PAS LA RÉPONSE) :
|
||||||
Évaluation : {$question['titre_eval']}
|
" . $enonce_question;
|
||||||
Type de question : {$question['type_question']}
|
|
||||||
|
|
||||||
ÉNONCÉ :
|
|
||||||
{$question['enonce']}
|
|
||||||
|
|
||||||
Aide l'élève avec des questions et indices, PAS avec la réponse.";
|
|
||||||
|
|
||||||
// Construire l'historique pour Ollama
|
// Construire l'historique pour Ollama
|
||||||
$messages_ollama = [];
|
$messages_ollama = [];
|
||||||
|
|||||||
@ -243,13 +243,71 @@ async loadHelpRemaining() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ajouterMessage(texte, type) {
|
ajouterMessage(texte, type) {
|
||||||
const msgDiv = document.createElement('div');
|
const msgDiv = document.createElement('div');
|
||||||
msgDiv.className = `message message-${type}`;
|
msgDiv.className = `message message-${type}`;
|
||||||
msgDiv.textContent = texte;
|
|
||||||
this.chatMessages.appendChild(msgDiv);
|
// Convertir le texte brut en HTML avec support LaTeX
|
||||||
this.scrollToBottom();
|
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 <br>
|
||||||
|
let html = texte.replace(/\n/g, '<br>');
|
||||||
|
|
||||||
|
// 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() {
|
afficherTypingIndicator() {
|
||||||
const typingDiv = document.createElement('div');
|
const typingDiv = document.createElement('div');
|
||||||
typingDiv.className = 'typing-indicator';
|
typingDiv.className = 'typing-indicator';
|
||||||
|
|||||||
@ -595,6 +595,9 @@ $reponses_sauvegardees = json_decode($tentative['reponses_json'] ?? '{}', true)
|
|||||||
</style>
|
</style>
|
||||||
<!-- Chatbot IA Styles -->
|
<!-- Chatbot IA Styles -->
|
||||||
<link rel="stylesheet" href="assets/css/chatbot.css">
|
<link rel="stylesheet" href="assets/css/chatbot.css">
|
||||||
|
|
||||||
|
<!-- KaTeX pour le rendu mathématique -->
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<?php if ($apercu_mode): ?>
|
<?php if ($apercu_mode): ?>
|
||||||
@ -997,6 +1000,11 @@ $reponses_sauvegardees = json_decode($tentative['reponses_json'] ?? '{}', true)
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- KaTeX JS -->
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"></script>
|
||||||
|
|
||||||
<!-- Chatbot IA Scripts -->
|
<!-- Chatbot IA Scripts -->
|
||||||
<script src="assets/js/chatbot.js"></script>
|
<script src="assets/js/chatbot.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
Reference in New Issue
Block a user