🤖projets

Creer un chatbot simple en Python

30 mars 2026 5 min de lecture

Pourquoi créer un chatbot pour ton projet NSI ?

Tu te demandes peut-être pourquoi choisir un chatbot comme projet pour la spécialité NSI ? La réponse est simple : c'est un projet complet qui te permet de mettre en pratique plusieurs notions clés du programme. En développant un chatbot, tu vas manipuler des structures de données (comme les dictionnaires pour stocker les réponses), utiliser des fonctions et des boucles, et aborder des concepts d'intelligence artificielle basique. C'est bien plus motivant que des exercices isolés !

De plus, un chatbot, même simple, donne un résultat concret et interactif dont tu peux être fier. Tu pourras le présenter à tes camarades, l'améliorer au fil du temps, et même l'utiliser comme base pour des projets plus ambitieux. C'est l'occasion parfaite de montrer ta créativité tout en validant des compétences techniques.

Les bases d'un chatbot : comment ça fonctionne ?

Avant de coder, il est essentiel de comprendre le principe de fonctionnement. Un chatbot simple repose sur un système de correspondance de motifs (pattern matching).

Le cœur de l'algorithme

Imagine que ton programme est une boîte noire. L'utilisateur entre une phrase (par exemple, "Quel temps fait-il ?"). Le chatbot analyse cette phrase, la compare à une liste de questions ou de mots-clés qu'il connaît, et renvoie la réponse associée. Si aucune correspondance n'est trouvée, il donne une réponse par défaut.

Schématiquement :

  • Entrée utilisateur : "Bonjour"
  • Traitement : Le programme cherche si "bonjour" est dans sa base de connaissances.
  • Sortie chatbot : "Salut ! Comment vas-tu ?"

Les données nécessaires

Pour fonctionner, ton chatbot a besoin d'une base de connaissances. La structure la plus adaptée en Python est le dictionnaire. Tu peux associer des mots-clés ou des phrases à des réponses.

Astuce NSI : Pense à utiliser des listes de synonymes pour chaque mot-clé afin d'améliorer la compréhension de ton chatbot. Par exemple, associer ["bonjour", "salut", "coucou"] à la même réponse.

Code ton premier chatbot pas à pas

Passons à la pratique ! Nous allons créer un chatbot nommé "PyBot" spécialisé dans l'aide aux devoirs de NSI.

Étape 1 : La structure de base et la boucle principale

Nous commençons par importer les modules nécessaires et définir la boucle infinie qui permettra à l'utilisateur de discuter avec le bot jusqu'à ce qu'il décide de quitter.

```python print("PyBot : Bonjour ! Je suis ton assistant NSI. Tape 'quitter' pour arrêter.") while True: # On récupère la saisie de l'utilisateur et on la met en minuscules user_input = input("Toi : ").lower() if user_input == 'quitter': print("PyBot : À bientôt ! Bon courage pour la NSI.") break # Ici, nous ajouterons la logique de réponse ```

Étape 2 : Créer la base de connaissances

Nous utilisons un dictionnaire où les clés sont des tuples contenant des mots-clés, et les valeurs sont les réponses correspondantes.

```python base_connaissances = { ("bonjour", "salut", "coucou", "yo"): "Salut ! Prêt pour un peu d'informatique ?", ("python", "langage"): "Python est un langage de programmation puissant et lisible. Parfait pour débuter !", ("boucle", "for", "while"): "Les boucles permettent de répéter des instructions. 'for' pour itérer sur une séquence, 'while' tant qu'une condition est vraie.", ("fonction", "def"): "Une fonction est un bloc de code réutilisable. On la définit avec 'def nom_fonction():'.", ("merci", "super", "cool"): "De rien ! N'hésite pas si tu as d'autres questions.", ("algorithme",): "Un algorithme est une suite d'instructions précises pour résoudre un problème. C'est le cœur de la NSI !" } ```

Étape 3 : Implémenter la logique de réponse

Il faut maintenant parcourir la base de connaissances pour trouver une correspondance entre les mots de l'utilisateur et nos mots-clés.

```python # ... dans la boucle while, après la condition 'quitter' reponse_trouvee = False for mots_cles, reponse in base_connaissances.items(): # On vérifie si au moins un mot-clé de la liste est présent dans l'input utilisateur for mot in mots_cles: if mot in user_input: print(f"PyBot : {reponse}") reponse_trouvee = True break # On sort de la boucle des mots-clés if reponse_trouvee: break # On sort de la boucle du dictionnaire if not reponse_trouvee: print("PyBot : Désolé, je n'ai pas compris. Pose-moi une question sur Python, les boucles, les fonctions ou les algorithmes !") ```

Améliore et personnalise ton chatbot

Avec les bases en place, tu peux maintenant rendre PyBot plus intelligent et plus robuste.

Ajouter des réponses aléatoires

Pour éviter que le chatbot ne soit trop répétitif, tu peux associer plusieurs réponses possibles à un même ensemble de mots-clés. Utilise le module random.

```python import random base_amelioree = { ("bonjour", "salut"): ["Salut à toi !", "Bonjour ! Comment ça va ?", "Hey !"], } # Dans la logique de réponse : reponses_possibles = base_amelioree[mots_cles] reponse_choisie = random.choice(reponses_possibles) print(f"PyBot : {reponse_choisie}") ```

Gérer la ponctuation et les fautes simples

Pour être plus tolérant, tu peux nettoyer la saisie utilisateur en supprimant la ponctuation.

```python import string # Avant de traiter user_input : user_input = user_input.translate(str.maketrans('', '', string.punctuation)) ```

Projet d'extension : Un chatbot avec mémoire

Pour un projet plus avancé, tu peux donner une mémoire contextuelle à ton chatbot. Par exemple, il peut se souvenir du nom de l'utilisateur. Cela implique d'utiliser des variables globales ou un petit système d'états.

Défi NSI : Peux-tu modifier le code pour que le chatbot réagisse à "Je m'appelle [prénom]" et utilise ce prénom dans les conversations suivantes ? Pense à utiliser une variable comme nom_utilisateur = None et à la mettre à jour.

Aller plus loin : et après ?

Tu as maintenant un chatbot fonctionnel ! Voici quelques pistes pour approfondir ce projet et impressionner ton examinateur :

  • Interface Graphique (Tkinter) : Remplace la console par une fenêtre avec des zones de texte pour une expérience plus moderne.
  • Base de données externe : Stocke tes paires questions/réponses dans un fichier JSON. Cela permet de modifier les connaissances sans toucher au code.
  • Introduction au NLP : Explore la bibliothèque NLTK ou spaCy pour faire de la lemmatisation (revenir à la racine d'un mot : "mangeais" -> "manger"). Cela améliorera grandement les correspondances.
  • Chatbot spécialisé : Fais de PyBot un expert sur un sujet précis du programme NSI : les arbres binaires, le chiffrement, les réseaux...

N'oublie pas que la clé d'un bon projet est la documentation. Commente ton code, explique tes choix algorithmiques et décris les fonctionnalités dans un compte-rendu. Bonne programmation !

📚 Pour aller plus loin

Questions fréquentes

Est-ce que ce projet est assez complexe pour être présenté au Grand Oral ?

Absolument ! Un chatbot bien conçu est un excellent support pour le Grand Oral. Tu peux expliquer les structures de données utilisées (dictionnaires), l'algorithme de recherche de correspondance, et discuter des limites de cette approche par rapport à des IA plus avancées. Cela montre une compréhension concrète de plusieurs notions du programme.

Quelles notions du programme de NSI ce projet permet-il de réviser ?

Ce projet mobilise : les structures de données (dictionnaires, listes, tuples), les boucles (for, while), les conditions (if/else), les fonctions, la manipulation de chaînes de caractères, et introduit des concepts d'algorithmique (recherche, correspondance) et d'intelligence artificielle symbolique.

Je n'arrive pas à gérer les phrases complexes, mon chatbot ne comprend que des mots isolés. Que faire ?

C'est une limitation classique des chatbots simples. Pour l'améliorer, tu peux : 1) Augmenter ta liste de mots-clés et de synonymes. 2) Fractionner la phrase de l'utilisateur avec .split() et vérifier la présence de plusieurs mots-clés. 3) Pour un projet avancé, envisage d'utiliser une bibliothèque comme NLTK pour extraire les mots importants (noms, verbes) et ignorer les mots-outils (le, de, un).

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
chatbot Pythonprojet NSI IA
Pixel