qcm_nsi / prompt.py
dav74's picture
Upload prompt.py
f771c83 verified
prompt_math = """
Tu es un assistant pédagogique spécialisé en informatique et plus précisemment dans l'enseignement de la spécialité Numérique et Sciences Informatiques (NSI).
Ton rôle est d’accompagner un élève qui répond à des QCM.
Pour chaque question :
1. Si la réponse de l’élève est fausse
• Explique clairement pourquoi la réponse est incorrecte.
• Fournis une correction détaillée, étape par étape.
• Si nécessaire, rappelle brièvement la notion de cours utile.
• Adapte ton langage à celui d’un lycéen, sans jargon inutile.
2. Si la réponse de l’élève est correcte
• Félicite l’élève de manière encourageante.
• Donne une petite justification rapide pour confirmer le raisonnement.
Contraintes de style :
• Toujours bienveillant et motivant.
• Explications claires et adaptées à un élève.
• Proposer la méthode la plus simple en premier.
• Les formules mathématiques contenues dans ta réponse doivent être au format Latex
• Ne propose jamais de faire un nouvel exercice
• Tu ne dois pas utiliser des termes comme "bien vu" si la réponse de l'élève n'est pas correct
• Tu ne dois pas utiliser des formules comme "ne t'inquiète pas" si la réponse de l'élève n'est pas correct
Format de sortie attendu :
Réponds directement avec le texte destiné à l’élève (pas de métadonnées, pas d’instructions techniques).
Exemple 1 (réponse correcte)
Question (QCM) :
On considère le script suivant :
```python
t = [2, 8, 9, 2]
t[2] = t[2] + 5
```
Quelle est la valeur de `t` à la fin de son exécution ?
choix proposés : `[2, 13, 9, 2]` ; `[2, 8, 14, 2]` ; `[7, 13, 14, 7]` ; `[7, 13, 9, 2]`
Réponse de l'élève : `[2, 8, 14, 2]`
Réponse attendue de l'assistant :
Bravo, ta réponse est correcte. On ajoute bien 5 à la valeur situé à l'indice 2 de la liste t (c'est dire 9), on a donc 14 (5+9) à l'indice 2.
Exemple 2 (réponse incorrecte)
Question (QCM) :
Parmi les noms suivants, lequel n'est pas celui d'une méthode d'encodage des caractères ?
choix proposée : UTF-16 ; ASCII ; Arial ; Unicode
Réponse de l'élève : ASCII
Réponse attendue de l'assistant :
Ta réponse n'est pas correcte, ASCII est bien une méthode d'encodage de caractères. La réponse correcte était Arial, car Arial est une police de caractère pas une méthode d'encodage.
Voici l'énoncé de la question :
{enonce}
Voici les choix de réponse proposés à l'éléve (séparées par des points virgules) :
{choix}
Voici la réponse correct :
{correct}
Voici la réponse de l'élève :
{rep_eleve}
"""
bilan_prompt = """
Tu es un assistant pédagogique spécialisé en informatique et plus précisemment dans l'enseignement de la spécialité Numérique et Sciences Informatiques (NSI).
Ton rôle est de commenter et de tirer un bilan des résultats d'un QCM.
Pour t'aider dans ta tâche, tu as ta disposition :
- les résultats de l'élève (les différentes questions suivies de F si l'élève a donné une réponse incorrect et de V si la réponse de l'élève est correct) :
{exo}
- d'un extrait du programme de mathématique (le QCM portait sur cette partie du programme):
{prog}
A partir de ces éléments tu dois établir un bilan, donner des conseils à l'élève qui lui permettront de progresser (point à revoir...)
Tu ne dois pas proposer de répondre à des questions ou de revoir ensemble des points (l'élève n'a pas la possibilité de te poser des questions)
Ce bilan ne dois pas dépasser une vingtaine de ligne, il doit être concis et précis.
Il n'est pas nécessaire de revenir en détails sur chaque question, l'élève a déjà eu eu des remarques sur chaque question.
Il ne faut pas évoquer des notions qui n'ont pas été travaillées pendant le QCM
Tu ne dois pas employer de termes trop élogieux, surtout si la majorité des réponses sont fausses.
Tu ne dois pas donner la note obtenue dans ton commentaire.
"""
prem_rep_donnees = """
### Représentation des données : types et valeurs de base
- **Écriture d’un entier positif dans une base b⩾2**
- Passer de la représentation d’une base dans une autre.
> Les bases 2, 10 et 16 sont privilégiées. [commentaire]
- **Représentation binaire d’un entier relatif**
- Évaluer le nombre de bits nécessaires à l’écriture en base 2 d’un entier, de la somme ou du produit de deux nombres entiers.
> Il s’agit de décrire les tailles courantes des entiers (8, 16, 32 ou 64 bits). [commentaire]
>
> Il est possible d’évoquer la représentation des entiers de taille arbitraire de Python. [commentaire]
- Utiliser le complément à 2.
- **Représentation approximative des nombres réels : notion de nombre flottant**
- Calculer sur quelques exemples la représentation de nombres réels : `0.1`, `0.25` ou $1/3$.
> `0.2 + 0.1` n’est pas égal à `0.3`. [commentaire]
>
> Il faut éviter de tester l’égalité de deux flottants. [commentaire]
>
> Aucune connaissance précise de la norme IEEE-754 n’est exigible. [commentaire]
- **Valeurs booléennes : `0`, `1`.**
- **Opérateurs booléens : `and`, `or`, `not`.**
> Le ou exclusif (`xor`) est évoqué. [commentaire]
>
> Quelques applications directes comme l’addition binaire sont présentées. [commentaire]
>
> L’attention des élèves est attirée sur le caractère séquentiel de certains opérateurs booléens. [commentaire]
- **Expressions booléennes**
- Dresser la table d’une expression booléenne.
- **Représentation d’un texte en machine.**
- **Exemples des encodages ASCII, ISO-8859-1, Unicode**
- Identifier l’intérêt des différents systèmes d’encodage.
> Aucune connaissance précise des normes d’encodage n’est exigible. [commentaire]
- Convertir un fichier texte dans différents formats d’encodage.
"""
prem_web = """
### Interactions entre l’homme et la machine sur le Web
- **Modalités de l’interaction entre l’homme et la machine**
- Identifier les différents composants graphiques permettant d’interagir avec une application Web.
> Il s’agit d’examiner le code HTML d’une page comprenant des composants graphiques et de distinguer ce qui relève de la description des composants graphiques en HTML de leur comportement (réaction aux événements) programmé par exemple en JavaScript. [commentaire]
- **Événements**
- Identifier les événements que les fonctions associées aux différents composants graphiques sont capables de traiter.
- **Interaction avec l’utilisateur dans une page Web**
- Analyser et modifier les méthodes exécutées lors d’un clic sur un bouton d’une page Web.
- **Interaction client-serveur.**
- Distinguer ce qui est exécuté sur le client ou sur le serveur et dans quel ordre.
- **Requêtes HTTP, réponses du serveur**
> Il s’agit de faire le lien avec ce qui a été vu en classe de seconde et d’expliquer comment on peut passer des paramètres à un site grâce au protocole HTTP. [commentaire]
- Distinguer ce qui est mémorisé dans le client et retransmis au serveur.
- Reconnaître quand et pourquoi la transmission est chiffrée.
- **Formulaire d’une page Web**
- Analyser le fonctionnement d’un formulaire simple.
- Distinguer les transmissions de paramètres par les requêtes POST ou GET.
> Discuter les deux types de requêtes selon le type des valeurs à transmettre et/ou leur confidentialité. [commentaire]
"""
prem_archi_os = """
### Architectures matérielles et systèmes d’exploitation
-
- **Interface Homme-Machine (IHM) et périphériques d’entrée et de sortie [reformulé, ndr]**
- Identifier le rôle des capteurs et actionneurs.
- Réaliser par programmation une IHM répondant à un cahier des charges donné.
> Les activités peuvent être développées sur des objets connectés, des systèmes embarqués ou robots. [commentaire]
"""
prem_von = """
- **Modèle d’architecture séquentielle (von Neumann)**
> La présentation se limite aux concepts généraux. [commentaire]
- Distinguer les rôles et les caractéristiques des différents constituants d’une machine.
> On distingue les architectures monoprocesseur et les architectures multiprocesseur. [commentaire]
>
> Des activités débranchées sont proposées. [commentaire]
- Dérouler l’exécution d’une séquence d’instructions simples du type langage machine.
> Les circuits combinatoires réalisent des fonctions booléennes. [commentaire]
"""
prem_os = """
**Systèmes d’exploitation**
- Identifier les fonctions d’un système d’exploitation.
> Les différences entre systèmes d’exploitation libres et propriétaires sont évoquées. [commentaire]
>
> Il ne s’agit pas d’une étude théorique des systèmes d’exploitation. [commentaire]
- Utiliser les commandes de base en ligne de commande.
> Les élèves utilisent un système d’exploitation libre. [commentaire]
- Gérer les droits et permissions d’accès aux fichiers.
"""
prem_reseau = """
- **Transmission de données dans un réseau**
- Mettre en évidence l’intérêt du découpage des données en paquets et de leur encapsulation.
- **Protocoles de communication**
- Dérouler le fonctionnement d’un protocole simple de récupération de perte de paquets (bit alterné).
> Le protocole peut être expliqué et simulé en mode débranché. [commentaire]
>
> Le lien est fait avec ce qui a été vu en classe de seconde sur le protocole TCP/IP. [commentaire]
- **Architecture d’un réseau**
- Simuler ou mettre en œuvre un réseau.
> Le rôle des différents constituants du réseau local de l’établissement est présenté. [commentaire]
"""
prem_prog = """
### Langages et programmation
- **Constructions élémentaires**
- Mettre en évidence un corpus de constructions élémentaires.
> Séquences, affectation, conditionnelles, boucles bornées, boucles non bornées, appels de fonction. [commentaire]
- **Diversité et unité des langages de programmation**
- Repérer, dans un nouveau langage de programmation, les traits communs et les traits particuliers à ce langage.
> Les manières dont un même programme simple s’écrit dans différents langages sont comparées. [commentaire]
- **Spécification**
- Prototyper une fonction.
- Décrire les préconditions sur les arguments.
- Décrire des postconditions sur les résultats.
> Des assertions peuvent être utilisées pour garantir des préconditions ou des postconditions. [commentaire]
- **Mise au point de programmes**
- Utiliser des jeux de tests.
> L’importance de la qualité et du nombre des tests est mise en évidence. [commentaire]
>
> Le succès d’un jeu de tests ne garantit pas la correction d’un programme. [commentaire]
- **Utilisation de bibliothèques**
- Utiliser la documentation d’une bibliothèque.
> Aucune connaissance exhaustive d’une bibliothèque particulière n’est exigible. [commentaire]
### Représentation des données : types construits
- **p-uplets.**
- Écrire une fonction renvoyant un p-uplet de valeurs.
- **p-uplets nommés**
- Écrire une fonction renvoyant un p-uplet de valeurs.
- **Tableau indexé, tableau donné en compréhension**
> Seuls les tableaux dont les éléments sont du même type sont présentés. [commentaire]
>
> L’aspect dynamique des tableaux de Python n’est pas évoqué. [commentaire]
>
> Python identifie listes et tableaux. [commentaire]
>
> Il n’est pas fait référence aux tableaux de la bibliothèque NumPy. [commentaire]
- Lire et modifier les éléments d’un tableau grâce à leurs index.
> Aucune connaissance des tranches (slices) n’est exigible. [commentaire]
- Construire un tableau par compréhension.
- Utiliser des tableaux de compréhension tableaux pour représenter des matrices : notation `a[i][j]`.
- Itérer sur les éléments d’un tableau.
- **Dictionnaires par clés et valeurs**
- Construire une entrée de dictionnaire.
> En Python, les p-uplets nommés sont implémentés par des dictionnaires. [commentaire]
- Itérer sur les éléments d’un dictionnaire.
> Il est possible de présenter les données EXIF d’une image sous la forme d’un enregistrement. [commentaire]
>
> Utiliser les méthodes `keys()`, `values()` et `items()`. [commentaire]
"""
prem_algo = """
### Algorithmique
- **Parcours séquentiel d’un tableau**
> On montre que le coût est linéaire. [commentaire]
- Écrire un algorithme de recherche d’une occurrence sur des valeurs de type quelconque.
- Écrire un algorithme de recherche d’un extremum, de calcul d’une moyenne.
- **Tris par insertion, par sélection**
> La terminaison de ces algorithmes est à justifier. [commentaire]
>
> On montre que leur coût est quadratique dans le pire cas. [commentaire]
- Écrire un algorithme de tri.
- Décrire un invariant de boucle qui prouve la correction des tris par insertion, par sélection.
- **Algorithme des k plus proches voisins**
- Écrire un algorithme qui prédit la classe d’un élément en fonction de la classe majoritaire de ses k plus proches voisins.
> Il s’agit d’un exemple d’algorithme d’apprentissage. [commentaire]
- **Recherche dichotomique dans un tableau trié**
- Montrer la terminaison de la recherche dichotomique à l’aide d’un variant de boucle.
> Des assertions peuvent être utilisées. [commentaire]
>
> La preuve de la correction peut être présentée par le professeur. [commentaire]
- **Algorithmes gloutons**
- Résoudre un problème grâce à un algorithme glouton.
> Exemples : problèmes du sac à dos ou du rendu de monnaie. [commentaire]
>
> Les algorithmes gloutons constituent une méthode algorithmique parmi d’autres qui seront vues en terminale. [commentaire]
"""
mapping = {
"prem_prog": prem_prog,
"prem_rep_donnees":prem_rep_donnees,
"prem_von":prem_von,
"prem_os":prem_os,
"prem_algo":prem_algo,
}