Activité Test dans Éléa
Dans l’application Élea (disponible dans l’ENT de Normandie), il est possible de créer des tests : ce sont des questionnaires auto-corrigés, composés de questions de types variés : QCM, réponses courtes, appariements...

Pour construire une activité test, vous pouvez vous référer à la documentation Élea.
Une fois l’activité créée, il est possible d’utiliser des LLMs (grands modèles de langage) pour vous aider à concevoir les questions du test. L’ensemble des prompts présentés par la suite ont été testés sur ChatGPT d’Open AI et Le Chat de Mistral.
Lorsque vous ajoutez des questions dans Élea, vous pouvez soit les saisir de toute pièce, soit les importer d’une banque de questions. Il est donc possible d’importer des questions préparées par un LLM.
De manière générale, il faut avoir en tête que les LLMs sont une aide mais ne remplacent en rien l’expertise de l’enseignant.e, il est toujours essentiel de relire les questions proposées par l’IA.
Préparation des questions par un LLM
Les questions importées devront au préalable être enregistrées dans un fichier texte :
- si vous êtes connecté au LLM, celui-ci peut vous le préparer directement et vous n’aurez qu’à le télécharger.
- si vous n’êtes pas connecté, il suffira de copier-coller les questions dans un fichier texte de type bloc-note. Mistral ne permet de poser qu’entre 5 et 10 questions en version non connectée, ensuite il faut attendre un jour pour continuer la conversation.
Remarque : les versions connectées sont plus puissantes et gardent un historique de votre travail. Avec une version connectée, le LLM « comprendra » à chaque utilisation mieux vos demandes.
Vous allez alors fournir un prompt au LLM lui indiquant :
- le niveau de vos élèves
- le sujet sur lequel vous voulez travailler (listes, dictionnaires, variables, conditions ...)
- la difficulté des questions
- le type de questions (QCM, textes à trous, appariements, Cloze ...)
Il ne faut pas hésiter à spécifier la demande, changer de thème, de niveau de difficulté, demander à ne pas utiliser certaines fonctions.
Exemple : Le prompt demandait des questions de niveau intermédiaire pour des premières NSI sur les listes et les dictionnaires. Voici un exemple de question proposée :
Slicing de liste :
Que vaut liste[1:3] si liste = [0, 1, 2, 3, 4] ?
a. [1, 2]
b. [1, 3]
c. [2, 3]
d. [0, 1, 2]
Les slice n’étant pas au programme, vous pouvez lui demander de ne pas en utiliser dans ses questions.
Il est aussi possible :
- d’augmenter le niveau de difficulté. Dans cet exemple, le LLM pourra proposer des listes ou des dictionnaires construits par compréhension ou en utilisant des boucles bornées.
- d’utiliser une méthode en particulier, par exemple .key() ou .values() pour les dictionnaires
- de demander d’autres types de questions : appariement, réponses courtes...
Il est préférable de demander plus de questions que ce dont vous avez besoin afin de pouvoir choisir celles qui vous correspondent le mieux.
Les LLMs peuvent avoir tendance à mettre la bonne réponse en première position, vous pouvez les laisser ainsi, en paramétrant votre test pour que les réponses soient mélangées.
Mise au format GIFT
Lorsque suffisamment de questions vous conviennent, il faut maintenant les convertir en GIFT (précisions sur le format).
Commencez par donner au LLM l’adresse du site ci-dessus pour lui fournir les éléments du format GIFT.
Si les questions ne comportent pas de code, le LLM n’a aucun problème à vous fournir des questions au format GIFT. Dans le cas où les questions comporteraient du code, il y a certains points de vigilance à respecter, notamment sur les caractères à échapper pour obtenir une interprétation correcte du fichier GIFT par Éléa. En cas de problème d’échappement ou d’indentation, il suffira de lui rappeler les règles.
Voici un prompt détaillé à fournir au modèle de langage (LLM) pour préciser les exigences du format GIFT :
Problèmes rencontrés avec le LLM
- Il a échappé par erreur des caractères qui ne devraient pas être échappés, comme les crochets
[]
et les underscores_
dans les réponses ou n’a pas échappé les{}
et les=
. Comme indiqué dans le lien, les seuls symboles à devoir être échappés dans ce contexte sont :~ = # { }
Exemple :::Q2 - Syntaxe de liste:: Quelle est la bonne syntaxe pour créer une liste en Python ? { ~ma\_liste = \(1, 2, 3\) ~ma\_liste = \{1, 2, 3\} =ma\_liste = \[1, 2, 3\] ~ma\_liste = 1, 2, 3 }
ou
::Q2 - Syntaxe de liste:: Quelle est la bonne syntaxe pour créer une liste en Python ? { ~ma_liste = (1, 2, 3) ~ma_liste = {1, 2, 3} =ma_liste = [1, 2, 3] ~ma_liste = 1, 2, 3 }
au lieu de :
::Q2 - Syntaxe de liste:: Quelle est la bonne syntaxe pour créer une liste en Python ? { ~ma_liste \= (1, 2, 3) ~ma_liste \= \{1, 2, 3\} =ma_liste \= [1, 2, 3] ~ma_liste \= 1, 2, 3 }
- Les questions à choix multiples (QCM) avec du code Python ont besoin de respecter le comportement de
print()
avec un retour à la ligne après chaque valeur affichée. Les réponses avec des retours à la ligne\n
ne s’affichaient pas correctement dans Moodle à cause de la mauvaise gestion des espaces après\n
.
Exemple :::Q3 - Parcours des paires clé-valeur:: Quel est le résultat du code suivant ?\n\n mon_dico = \{ "nom": "Alice", "age": 17 \}\n for key, value in mon_dico.items() :\n print(key, value) { =nom Alice =age 17 ~Erreur ~nom 17 }
au lieu de :
::Q3 - Parcours des paires clé-valeur:: Quel est le résultat du code suivant ?\n\n mon_dico = \{ "nom": "Alice", "age": 17 \}\n for key, value in mon_dico.items() :\n print(key, value) { =nom Alice\n age 17 ~Erreur ~nom 17 }
- Mistral a rencontré un problème de présentation des réponses, il écrivait :
::Q1::Quelle est la syntaxe correcte pour créer une liste vide en Python ? { =[] =list() ~{} ~() }
au lieu de :
::Q1::Quelle est la syntaxe correcte pour créer une liste vide en Python ? { =[] =list() ~\{\} ~() }
Il y avait un problème d’échappement et d’espaces ; en lui fournissant la correction pour une question, il a pu corriger l’ensemble.
- Pour les questions à réponses courtes, les LLMs respectent la norme PEP 8. Comme les caractères sont vérifiés un à un, une réponse avec un espace en moins sera comptée fausse. Pour les réponses courtes, préférer les réponses avec un mot.
Exemple :- sera compté faux (espaces manquants après les virgules) :
- sera compté juste :
Cas particulier : Questions au format cloze
La question de type cloze à réponses intégrées permet de construire un texte troué ou lacunaire dans lequel les réponses sont intégrées. Le type de réponse peut être un choix multiple, une réponse courte ou une réponse numérique. (lien de la documentation Moodle)
Ce type de question peut être demandé au LLM mais ne peut pas être importé au format GIFT. Une seule paire d’accolades étant autorisée pour le format GIFT, il ne prendrait qu’une seule des questions.
Il est cependant tout à fait possible de faire écrire quelques questions cloze au LLM. Dans ce cas, il faudra choisir lors de l’importation : Questions Cloze à réponses intégrées.
Un exemple de question au format cloze est :
Complétez ce texte avec le bon vocabulaire Python.
Pour définir une fonction en Python, on utilise le mot-clé {1:MC:=def#Correct~function~define}. Pour afficher un message, on utilise la fonction {1:SA :=print#Bonne réponse}. Le mot-clé {1:MC:=if#Bonne réponse~when~test} permet de faire un test conditionnel, et on peut gérer l'alternative avec {1:MCS:=else~elseif~otherwise}.
et son rendu :
