Utilisation de l'IA
Utiliser l’intelligence artificielle pour corriger une question ouverte (qui n'est pas une réponse proposée dans un QCM mais demande la saisie de texte) dans un quiz JavaScript/React.
Notions théoriques
Pourquoi une question ouverte ?
Jusqu’à présent, notre quiz Cyber permettait de répondre à des questions à choix multiples (QCM).
Ce format est très pratique pour :
- Corriger automatiquement
- Donner un score rapide
- Proposer une expérience fluide
Mais il ne permet pas de vérifier la compréhension réelle de l’élève.
C’est pourquoi nous allons ajouter une question ouverte, où l’utilisateur doit écrire une réponse avec ses propres mots.
Comment corriger automatiquement ?
Corriger une réponse ouverte est plus complexe qu’un QCM.
Il faut :
- Analyser le sens de la réponse
- Déterminer si elle est correcte ou non
- Fournir un feedback personnalisé
Pour cela, nous allons faire appel à un modèle d’intelligence artificielle via une API.
Quelle API utiliser ?

Nous allons utiliser OpenRouter, une alternative gratuite à OpenAI.
- OpenRouter est gratuit dans sa version de base
- OpenRouter fonctionne avec une clé API que vous pouvez obtenir facilement
- OpenRouter permet d’accéder à des modèles comme GPT-3.5 ou Mistral
OpenRouter propose par exemple Mistral 7B Instruct, qui est très performants et gratuits à utiliser.
Voici la liste des modèles de génération de textes, gratuits, à faibles latences, disponibles sur OpenRouter :
Comment fonctionne l’API OpenRouter ?
L’API d’OpenRouter fonctionne comme celle d’OpenAI :
- Vous envoyez un prompt (texte d’instruction)
- Vous recevez une réponse générée par l’IA
Nous allons créer un prompt du type :
"Voici une question de cybersécurité. Évalue la réponse de l'utilisateur et dis-moi si elle est correcte. Puis donne un commentaire personnalisé."
Exemple pratique
Voici un exemple de composant React qui utilise OpenRouter pour analyser une réponse libre :
"use client";
import { useState } from "react";
export default function QuestionOuverte() {
const [reponse, setReponse] = useState("");
const [resultat, setResultat] = useState("");
async function analyserReponse() {
const prompt = `
Tu es un professeur de cybersécurité.
Voici la question : "Qu'est-ce qu'une attaque de phishing ?"
Voici la réponse de l'