TP 1 - Script CLI avec l'IA
Créer un script d'analyse de ventes e-commerce en utilisant l'IA avec des instructions professionnelles.
Durée : 20 minutes
Contexte
Votre entreprise reçoit des fichiers CSV contenant les données de ventes e-commerce. Le responsable commercial souhaite obtenir rapidement quelques statistiques simples : le total des ventes, les produits les plus vendus, et le chiffre d'affaires par ville.
Pour le moment, il n'a besoin que d'un script simple qui lit un fichier CSV et affiche les résultats en console. Rien de compliqué, mais il faut que ce soit fait proprement.
Contraintes pédagogiques
Vous êtes libres d'utiliser l'outil de votre choix (Python, Node.js, etc.) et l'assistant IA de votre choix (Claude Code, Cursor, ChatGPT, Copilot, etc.).
Focus IA
Ce que vous allez apprendre dans ce TP :
- ✅ Prompting basique efficace : Formuler une demande claire à l'IA
- ✅ Itération avec l'IA : Tester, identifier les bugs, corriger avec l'aide de l'IA
- ✅ Instructions pour l'agent : Créer un dossier
/docsavec des instructions pour guider l'IA - ✅ Conventions Git professionnelles : Utiliser les Conventional Commits avec annotations IA
L'objectif n'est PAS de devenir expert en parsing CSV, mais d'apprendre à utiliser l'IA efficacement pour générer du code fonctionnel rapidement.
Objectif
À la fin de ce TP, vous devez avoir réussi les objectifs suivants :
- ✅ Un script CLI fonctionnel qui analyse le fichier
sales.csv - ✅ Un dossier
/docscontenant les instructions Git pour l'agent IA - ✅ Des commits propres suivant les Conventional Commits avec annotations IA
Fichiers fournis
../sources/sales.csv: Fichier CSV de données e-commerce avec 8 colonnes- Colonnes :
order_id,date,product_id,product_name,quantity,price,customer_city,status - Contient des lignes dupliquées (même
order_idpour plusieurs produits)
- Colonnes :
docs/git-conventions.txt: Instructions complètes pour que l'agent IA génère des commits conformes aux standards professionnels
Contraintes techniques
- Lecture CSV : Le script doit lire le fichier
sales.csvfourni - Calculs attendus :
- Total des ventes : somme de
quantity × pricepour toutes les lignes - Top 3 produits : classement par quantité totale vendue
- CA par ville : somme des ventes agrégées par
customer_city
- Total des ventes : somme de
- Format de sortie : Affichage console en texte formaté (pas de JSON pour ce TP)
- Pas de tests : Pour ce TP, validation manuelle uniquement (les tests arrivent au TP2)
Étape 1 - Initialiser le projet et le dossier d'instructions
Objectif : Créer la structure de projet avec un dossier /docs pour guider l'IA.
Action : Créez un nouveau dossier pour votre projet (ex:
TP-IA)
Observation : Vous avez un dossier vide prêt à accueillir votre codeAction : Dans ce dossier, créez un sous-dossier
docs/
Observation : Structure :TP-IA/docs/Action : Copiez le fichier
git-conventions.txtdans votre dossierdocs/en le renommant engit-conventions.mdObservation : Vous avez maintenantdocs/git-conventions.mdqui contient les règles de commits pour l'agent IAAction : Initialisez Git dans le dossier projet :
git init
Observation : Git est initialisé (message "Initialized empty Git repository")
Indice
```bash
Créer la structure
mkdir TP-IA cd TP-IA mkdir docs
Copier les instructions Git (renommer en .md pour l'IDE)
cp ../TP1/docs/git-conventions.txt docs/git-conventions.md
Initialiser Git
git init
Créer le .gitignore adapté à votre langage
Python
echo "pycache/ *.pyc .pytest_cache/ venv/" > .gitignore
Node.js
echo "node_modules/ *.log .env" > .gitignore ```
Étape 2 - Récupérer le fichier CSV
Objectif : Préparer les données pour le développement.
Action : Copiez le fichier
../sources/sales.csvdans votre dossier projet
Observation : Vous avezsales.csvà la racine du projetAction : Ouvrez le fichier CSV pour voir sa structure
Observation : Le fichier contient 8 colonnes :order_id,date,product_id,product_name,quantity,price,customer_city,status
Indice
# Copier le fichier
cp ../sources/sales.csv .
# Voir les premières lignes
head -5 sales.csv
Résultat attendu :
order_id,date,product_id,product_name,quantity,price,customer_city,status
ORD-001,2024-01-15,P001,Laptop,1,899.99,Paris,completed
ORD-001,2024-01-15,P045,Mouse,2,25.50,Paris,completed
...
Étape 3 - Générer le code avec l'IA (prompt simple)
Objectif : Utiliser l'IA pour créer le script d'analyse.
Action : Ouvrez votre outil IA préféré (Claude Code, Cursor, ChatGPT, Copilot, etc.)
Observation : L'outil IA est prêt à recevoir votre promptAction : Donnez ce prompt à l'IA en adaptant au langage de votre choix :
Prompt à utiliser :
Je veux un script [Python/Node.js] qui analyse un fichier CSV de ventes e-commerce.
Le CSV contient ces colonnes :
order_id, date, product_id, product_name, quantity, price, customer_city, status
Le script doit :
1. Lire le fichier "sales.csv" passé en argument
2. Calculer le TOTAL des ventes (somme de quantity × price pour toutes les lignes)
3. Trouver les TOP 3 produits les plus vendus (par quantité)
4. Calculer le chiffre d'affaires par ville (customer_city)
5. Afficher les résultats en console de manière formatée
Format de sortie attendu :
=== Analyse des Ventes ===
Total des ventes: XXXX.XX €
Top 3 Produits:
1. Produit (X unités)
...
CA par Ville:
Ville: XXXX.XX €
...
Génère le code dans un fichier app.py (ou app.js, main.rs selon le langage).
Observation : L'IA génère le code complet du script
Indice
Conseils pour le prompt :
- Soyez précis sur le langage : "Python" ou "Node.js" ou "Rust"
- Donnez la structure du CSV : Liste des colonnes
- Décrivez les calculs attendus : Total, top 3, CA par ville
- Montrez le format de sortie : L'IA comprendra mieux
Si l'IA demande des précisions :
- Pour Python : "Utilise le module csv standard, pas de pandas"
- Pour Node.js : "Utilise fs et readline, pas de librairie externe"
Étape 4 - Tester le script
Objectif : Vérifier que le code fonctionne et produit les bons résultats.
Action : Sauvegardez le code généré dans un fichier (app.py ou app.js) Observation : Le fichier est créé dans votre projet
Action : Lancez le script avec le fichier CSV
# Python
python app.py sales.csv
# Node.js
node app.js sales.csv
Observation attendue : Le script affiche :
=== Analyse des Ventes ===
Total des ventes: [montant] €
Top 3 Produits:
1. [Produit A] ([X] unités)
2. [Produit B] ([Y] unités)
3. [Produit C] ([Z] unité)
CA par Ville:
[Ville 1]: [montant] €
[Ville 2]: [montant] €
[Ville 3]: [montant] €
Si ce n'est pas le cas : Passez à l'Étape 5 pour corriger.
Indice - Problèmes courants
Erreur : "module not found" / "cannot find module"
- Python :
pip install [nom-du-module]si l'IA a utilisé des dépendances - Node.js :
npm install [nom-du-module]
Résultats incorrects :
- Total différent : Vérifiez que TOUTES les lignes sont prises en compte
- Top produits faux : L'agrégation doit sommer les quantités par nom de produit
- CA par ville faux : Vérifiez que les calculs sont bien
quantity × priceagrégés par ville
Le script plante :
- Vérifiez que le chemin vers
sales.csvest correct - Regardez le message d'erreur exact (vous en aurez besoin pour l'Étape 5)
Étape 5 - Corriger avec l'IA (si nécessaire)
Objectif : Débugger en itérant avec l'IA.
⚠️ Seulement si le script ne fonctionne pas correctement !
Action : Identifiez le problème précis (erreur ou résultat incorrect)
Observation : Vous avez un message d'erreur OU des chiffres qui ne correspondent pasAction : Retournez vers l'IA avec un prompt de debugging
Exemples de prompts de correction :
Si erreur d'exécution :
Le script génère cette erreur :
[COPIER-COLLER L'ERREUR EXACTE]
Voici le code généré :
[COPIER-COLLER LE CODE]
Comment corriger cette erreur ?
Si résultats incorrects :
Le script affiche un résultat différent de celui attendu.
Le problème vient probablement de l'arrondi ou du type de données (int au lieu de float).
Voici la fonction de calcul :
[COPIER-COLLER LA FONCTION]
Peux-tu corriger pour obtenir le bon résultat ?
Observation : L'IA propose une correction
- Action : Appliquez la correction et relancez le script (Étape 4)
Observation : Le script fonctionne maintenant avec les bons résultats
Indice - Bien débugger avec l'IA
Méthodologie efficace :
- Soyez précis : Donnez l'erreur EXACTE (pas de paraphrase)
- Contexte minimal : Montrez uniquement la partie du code concernée
- Résultat attendu : "Je veux [valeur attendue], j'obtiens [valeur obtenue]"
- Testez la correction : Ne faites pas confiance aveuglément, relancez !
Itération : Il est NORMAL de faire 2-3 allers-retours avec l'IA pour arriver au résultat. C'est justement ce que vous apprenez dans ce TP.
Étape 6 - Commiter avec les conventions professionnelles
Objectif : Créer un commit propre avec les annotations IA.
- Action : Ajoutez les fichiers au staging Git
git add .gitignore docs/ app.py sales.csv
# Adaptez selon votre langage (app.js, package.json, etc.)
Observation : git status montre les fichiers prêts à être commités (en vert)
- Action : Demandez à l'IA de générer le message de commit
Prompt pour l'IA :
Lis le fichier docs/git-conventions.md.
Génère un message de commit pour l'ajout initial de ce script d'analyse de ventes CSV.
Informations :
- Le script lit un fichier CSV de ventes e-commerce
- Il calcule le total des ventes, top 3 produits, et CA par ville
- Langage utilisé : [Python/Node.js]
- Outil IA utilisé : [nom de l'outil, ex: Claude Code, ChatGPT, etc.]
Respecte le format Conventional Commits avec annotations IA.
Observation : L'IA génère un message de commit complet avec annotations
- Action : Créez le commit avec le message généré
# Option 1 : Copier-coller directement
git commit -m "feat(cli): implement CSV sales analysis
[COLLER LE MESSAGE COMPLET GÉNÉRÉ PAR L'IA]"
# Option 2 : Via un fichier temporaire (plus pratique pour les longs messages)
# Créer commit-msg.txt avec le message
git commit -F commit-msg.txt
Observation : git log montre votre commit avec le message formaté
Indice - Exemple de message généré
feat(cli): implement CSV sales analysis
Add command-line tool to analyze e-commerce sales data:
- Read CSV files with 8 columns (order_id, date, product, etc.)
- Calculate total sales amount (quantity × price)
- Identify top 3 products by quantity sold
- Compute revenue by customer city
- Display formatted results in console
Implementation uses Python csv.DictReader for parsing.
Currency values formatted with 2 decimal precision.
---
🤖 AI-Assisted Development
Tool: Claude Code v1.2 (claude-sonnet-4-5-20250929)
Agent: Guided implementation from prompt
Prompt type: Feature request with functional specifications
Context files: sales.csv
Human validation:
- Functionality: ✓ Tested with sales.csv (results verified)
- Tests: ✗ Not implemented yet (planned for TP2)
- Code review: ✓ Logic validated manually
Points importants :
- Type
feat(nouvelle fonctionnalité) - Scope
cli(interface ligne de commande) - Corps détaillé (what + why)
- Annotations IA obligatoires (🤖 section)
Avancé
Questions pour aller plus loin :
Performance : Que se passe-t-il si le fichier CSV contient 1 million de lignes ? Comment l'IA pourrait-elle vous aider à optimiser le code ?
Gestion d'erreurs : Actuellement, que se passe-t-il si le fichier CSV est vide ou mal formaté ? Comment demanderiez-vous à l'IA d'ajouter une gestion d'erreurs robuste ?
Formats multiples : Comment prompteriez-vous l'IA pour ajouter une option
--format jsonqui affiche les résultats en JSON au lieu de texte ?Réutilisabilité : Sauriez-vous expliquer à l'IA comment refactorer le code pour séparer la logique de calcul de l'affichage ? (Indice : cela sera utile pour le TP3)
Synthèse
Qu'est-ce qui a bien fonctionné ?
- L'IA a-t-elle généré du code fonctionnel du premier coup ?
- Les instructions dans
docs/git-conventions.mdétaient-elles claires ? - Le fichier
requirements.mda-t-il aidé l'IA à comprendre vos besoins ?
Quels sont les problèmes rencontrés ?
- Avez-vous dû itérer plusieurs fois pour corriger des bugs ?
- Le format de sortie était-il correct dès la première génération ?
- Les commits ont-ils été faciles à créer avec les conventions ?
Quelles compétences avez-vous développées avec l'IA ?
- ✅ Formuler des prompts clairs et précis
- ✅ Itérer avec l'IA pour corriger des erreurs
- ✅ Créer des fichiers d'instructions pour guider l'agent IA
- ✅ Utiliser les Conventional Commits avec annotations IA
- ✅ Séparer spécifications (requirements.md) et code
Prochaine étape : Au TP2, vous ajouterez des tests automatisés pour valider ce code !