IA & Prompting
Comprendre comment fonctionnent les LLMs, maîtriser l'art du prompt, exploiter l'IA efficacement pour coder, rédiger et analyser — et savoir quand ne pas lui faire confiance.
Comment fonctionne un LLM
Un LLM (Large Language Model) est un modèle de réseau de neurones entraîné sur d'énormes corpus de texte pour prédire quel token (morceau de mot) vient après un autre. Il ne "comprend" pas au sens humain — il produit le texte le plus probable étant donné ce qu'il a vu à l'entraînement et le contexte donné.
| Étape | Ce qui se passe |
|---|---|
| Tokenisation | Ton texte est découpé en tokens (~¾ d'un mot en moyenne) |
| Embedding | Chaque token est converti en vecteur numérique dans un espace de haute dimension |
| Attention | Le mécanisme Transformer calcule les relations entre tous les tokens du contexte |
| Prédiction | Le modèle génère une distribution de probabilité sur le prochain token |
| Sampling | Un token est tiré selon la température (créativité) et affiché |
Température — paramètre qui contrôle la "créativité" de la réponse. Proche de 0 : réponses déterministes et factuelles. Proche de 1 : réponses variées et créatives. Pour du code ou des faits, une température basse est préférable. Pour de la fiction, une température haute donne plus de variété.
Fenêtre de contexte — un LLM ne lit pas "toute l'internet" à chaque question. Il ne voit que ce qui est dans sa fenêtre de contexte (la conversation en cours + l'éventuel system prompt). Au-delà de cette limite, il "oublie" le début de la conversation. Les modèles récents ont des fenêtres de 100 000 à 1 million de tokens.
Un LLM ne "sait" pas — il prédit. Il peut produire du texte très convaincant et totalement faux. C'est la source des hallucinations (voir section 9).
Fine-tuning & RLHF — les LLMs bruts sont ensuite ajustés par renforcement avec feedback humain (RLHF) pour être utiles, inoffensifs et honnêtes. C'est ce qui transforme un "prédicteur de token" en assistant conversationnel. Le system prompt (instructions invisibles définies par le service) oriente aussi fortement le comportement.
RAG (Retrieval-Augmented Generation) — technique qui injecte des documents récupérés (base de connaissance, web…) dans le contexte avant que le LLM réponde. Permet de contourner la date de coupure et de réduire les hallucinations sur des domaines précis. C'est ce que font les modes "web search" de Claude, ChatGPT et Perplexity.
Modèles disponibles
Il n'existe pas un modèle "meilleur dans tous les cas". Le choix dépend de la tâche : Claude pour l'analyse et le code long, ChatGPT pour l'usage général, Gemini pour Google Workspace, Perplexity pour la recherche factuelle récente, Copilot dans l'IDE. Tester sur sa propre tâche reste la meilleure approche.
Anatomie d'un bon prompt
Un bon prompt n'est pas magique — c'est simplement de la communication précise. Les mêmes informations que tu donnerais à un collègue humain compétent.
Comparaison prompt faible vs prompt fort :
Le prompt est une conversation, pas une commande. Si la première réponse n'est pas satisfaisante : reformuler, préciser, demander "pourquoi tu as fait ce choix ?", ou dire "c'est trop vague, va plus loin sur le point 2".
Techniques avancées de prompting
Entrée: "voiture" → Sortie: "VÉHICULE"
Entrée: "Python" → Sortie: ?
Prompt :
Un train part de Paris à 08h00 à 200 km/h.
Un autre part de Lyon (410 km) à 09h00 à 250 km/h.
À quelle heure et à quelle distance de Paris se croisent-ils ?
Raisonne étape par étape avant de donner le résultat.
Réponse de l'IA (avec CoT) :
Étape 1 : À 09h00, le train de Paris a parcouru
200 × 1 = 200 km. Distance restante = 410 - 200 = 210 km.
Étape 2 : Les deux trains se rapprochent à 200 + 250 = 450 km/h.
Étape 3 : Temps pour se croiser = 210 / 450 = 0.467h ≈ 28 min.
Étape 4 : Heure de croisement = 09h00 + 28 min = 09h28.
Étape 5 : Distance de Paris = 200 + 200×0.467 = 200 + 93 = 293 km.
Résultat : ils se croisent à 09h28, à 293 km de Paris.
Prompt :
Classe ces éléments au format JSON. Exemples :
Input: "Alice, 28 ans, ingénieure"
Output: {"nom":"Alice","age":28,"metier":"ingénieure"}
Input: "Bob, 34 ans, médecin"
Output: {"nom":"Bob","age":34,"metier":"médecin"}
Maintenant classe :
Input: "Carl, 41 ans, architecte"
Output:
L'IA complète avec le même format exactement :
{"nom":"Carl","age":41,"metier":"architecte"}
Anti-patterns fréquents
Prompts pour coder
──────────────────────────────────────────
GÉNÉRATION
──────────────────────────────────────────
Tu es un développeur Python expert.
Écris une fonction qui [description précise].
Contraintes :
- Utilise [bibliothèque X] version [Y]
- Gère les cas d'erreur suivants : [liste]
- Ajoute des docstrings au format Google
- Écris les type hints complets
- N'utilise pas de variables globales
Voici le contexte du code environnant :
[coller le code existant pertinent]
──────────────────────────────────────────
DÉBOGAGE
──────────────────────────────────────────
Ce code Python produit l'erreur suivante.
Code complet :
[coller TOUT le code, pas juste la ligne]
Message d'erreur complet (copier-coller) :
[traceback complet]
Comportement attendu : [description]
Comportement observé : [description]
1. Explique la cause racine de l'erreur
2. Propose une correction
3. Explique comment éviter ce type d'erreur
──────────────────────────────────────────
REFACTORING
──────────────────────────────────────────
Voici du code Python fonctionnel mais qui
doit être amélioré :
[coller le code]
Objectifs de refactoring (par priorité) :
1. Lisibilité — noms de variables clairs
2. Respecter PEP 8 et les conventions Python
3. Réduire la duplication (DRY)
4. Améliorer la gestion des erreurs
Contrainte : ne pas changer le comportement
observable ni l'interface publique.
Explique chaque modification importante.
──────────────────────────────────────────
REVUE DE CODE
──────────────────────────────────────────
Fais une revue de code de ce fichier comme
si tu étais un senior lors d'un code review.
Identifie les problèmes par catégorie :
- Bugs potentiels
- Problèmes de performance
- Mauvaises pratiques
- Manques de tests
Pour chaque problème : localise la ligne,
explique le risque, propose la correction.
──────────────────────────────────────────
TESTS
──────────────────────────────────────────
Génère des tests unitaires pytest complets
pour cette fonction Python :
[coller la fonction]
Couvre obligatoirement :
- Cas nominal (valeurs typiques)
- Valeurs limites (0, vide, None, max)
- Cas d'erreur (exceptions attendues)
- Au moins 8 tests distincts
Utilise des noms de test descriptifs.
Prompts pour rédiger
──────────────────────────────────────────
RÉDACTION D'UN RAPPORT
──────────────────────────────────────────
Rédige une introduction de rapport pour
le contexte suivant :
Sujet : [sujet précis]
Audience : [qui va le lire]
Niveau technique attendu : [débutant/expert]
Longueur visée : [nombre de mots]
Ton : [formel / académique / technique]
L'introduction doit inclure :
1. Contexte et problématique (2-3 phrases)
2. Objectifs du document
3. Plan annoncé (3 parties)
À ne pas inclure : remerciements, citations.
──────────────────────────────────────────
AMÉLIORATION DE TEXTE
──────────────────────────────────────────
Améliore ce texte en conservant
EXACTEMENT le sens et les idées.
Texte original :
[coller le texte]
Objectifs d'amélioration :
- Clarté : phrases plus directes
- Cohérence : transitions entre idées
- Niveau de langue : [cible]
Ne pas changer : la structure en [N] parties,
les exemples cités, le point de vue.
──────────────────────────────────────────
RÉSUMÉ STRUCTURÉ
──────────────────────────────────────────
Voici un document technique long :
[coller le document]
Produis un résumé structuré en 3 niveaux :
1. TL;DR — 3 phrases maximum, le strict
essentiel pour quelqu'un qui n'a pas
le temps de lire.
2. Points clés — 5 à 7 bullets, ce que
quelqu'un doit retenir après lecture.
3. Questions ouvertes — 2-3 points qui
méritent approfondissement ou qui ne
sont pas résolus dans le document.
Pour la rédaction académique : toujours demander à l'IA de générer un premier jet, puis le retravailler soi-même. Utiliser l'IA pour structurer, reformuler et corriger — pas pour remplacer la réflexion. La valeur ajoutée humaine reste dans les idées, l'argumentation et le jugement critique.
Les détecteurs de texte IA (GPTZero, Turnitin IA…) sont peu fiables et génèrent de nombreux faux positifs, y compris sur des textes humains. L'usage éthique de l'IA pour la rédaction dépend du contexte et des règles de l'établissement, pas du détecteur.
Prompts pour analyser des données
──────────────────────────────────────────
ANALYSE D'UN DATASET
──────────────────────────────────────────
Voici les 20 premières lignes d'un CSV de
ventes (copier-coller ou upload du fichier).
[données]
Effectue une analyse exploratoire :
1. Décris la structure (colonnes, types,
valeurs manquantes visibles)
2. Identifie 3 tendances ou patterns
3. Signale les anomalies ou valeurs
suspectes
4. Propose 3 visualisations pertinentes
avec le code pandas/matplotlib pour
chacune
──────────────────────────────────────────
GÉNÉRER LE CODE D'ANALYSE
──────────────────────────────────────────
Voici le schéma de mon DataFrame pandas :
[coller df.info() ou df.dtypes]
Écris le code Python complet pour :
- Nettoyer les valeurs manquantes
- Créer un rapport groupby par [colonne]
- Exporter le résultat en Excel multi-feuilles
Suppose que le CSV est chargé dans df.
──────────────────────────────────────────
INTERPRÉTATION
──────────────────────────────────────────
Voici les résultats d'une analyse de données :
[coller les chiffres, tableaux, graphiques]
Contexte : il s'agit de [description du
domaine et de l'objectif de l'analyse].
Interprète ces résultats pour un public
non-technique (direction, client) :
1. Que montrent ces chiffres en langage clair
2. Quelle est la conclusion principale
3. Quelle décision cela suggère-t-il
4. Quelles limites ou précautions mentionner
──────────────────────────────────────────
FORMULES EXCEL / SQL
──────────────────────────────────────────
Écris la formule Excel pour [description].
Mon tableau s'appelle [nom], les colonnes
sont [A=..., B=..., C=...].
Explique la formule partie par partie.
Pour l'analyse de données, Claude et ChatGPT peuvent générer du code Pandas/matplotlib directement exécutable. Claude.ai et ChatGPT Plus acceptent aussi l'upload de fichiers CSV/Excel et peuvent exécuter du code Python dans un sandbox pour produire des graphiques.
Limites & hallucinations
Une hallucination est une affirmation inventée par le LLM avec le même ton confiant qu'une réponse vraie. Le modèle ne "sait pas qu'il ne sait pas" — il génère ce qui est statistiquement probable, pas ce qui est vrai.
Domaines où faire confiance avec précaution :
Réflexe anti-hallucination : pour tout fait précis important, demander à l'IA de citer ses sources — si elle ne peut pas, c'est un signal. Utiliser Perplexity ou le mode web search de Claude/ChatGPT pour les informations récentes et factuelles.
Confidentialité : ne jamais envoyer à un LLM cloud des données personnelles identifiables, des mots de passe, du code source propriétaire ou des informations sensibles d'entreprise. Pour ces usages, préférer un modèle local (Ollama + Llama/Mistral) ou une instance enterprise avec confidentialité garantie.
Workflow recommandé
1. CADRER avant de promper
→ Qu'est-ce que je veux VRAIMENT obtenir ?
→ Quel format me sera utile ?
→ Quelle information l'IA n'a pas ?
2. PROMPT INITIAL structuré
→ Rôle + contexte + tâche + format + contraintes
→ Inclure le code/texte/données pertinents
3. ÉVALUER la première réponse
→ Est-ce que ça répond à ma question ?
→ Qu'est-ce qui manque ou est faux ?
→ Ne pas accepter si non satisfait
4. ITÉRER de façon ciblée
→ "Le point 2 est trop vague, développe"
→ "Pourquoi as-tu fait ce choix ?"
→ "Maintenant critique ta propre réponse"
5. VÉRIFIER le résultat
→ Tester le code
→ Vérifier les faits importants
→ Relire avec son propre jugement
6. RAFFINER si nécessaire
→ "Maintenant reformule pour [audience]"
→ "Simplifie la partie [X]"
# Commencer une nouvelle conversation pour chaque projet
→ Évite la confusion entre contextes différents
# Résumer le contexte si la conversation est longue
"Pour rappel du contexte : nous travaillons sur
[X], les décisions prises jusqu'ici sont [Y],
la contrainte principale est [Z]. Maintenant..."
# Utiliser des titres clairs
"=== NOUVELLE TÂCHE : Refactoring ===" pour
structurer une conversation multi-tâches
# Sauvegarder les bons prompts
→ Conserver un fichier de prompts réutilisables
→ Template par type de tâche (debug, review...)
# Nommer les artefacts
"La fonction que tu as générée précédemment
(appelons-la generate_report), modifie-la pour..."
→ Évite les ambiguïtés dans les références
L'IA comme amplificateur, pas substitut. Les meilleurs résultats viennent de la combinaison : ton expertise du domaine + la vitesse de l'IA. L'IA génère, tu juges. L'IA suggère, tu décides. L'IA rédige un premier jet, tu apportes la substance.
Cheat Sheet Prompting
🏗️ Anatomie d'un prompt
| Rôle | "Tu es un expert en..." |
| Contexte | Projet, niveau, audience |
| Tâche | Verbe précis + objectif |
| Format | Longueur, structure, langue |
| Contraintes | "Sans X", "Ne pas Y" |
| Exemples | Entrée→Sortie attendue |
⚡ Techniques clés
| Zero-shot | Tâche directe, sans exemple |
| Few-shot | 2-5 exemples avant la tâche |
| Chain-of-Thought | "Raisonne étape par étape" |
| Self-check | "Critique ta réponse" |
| Decompose | Étapes séquentielles |
| Priming | Fournir du contexte/style |
✓ Bonnes pratiques
| Coller le code/texte complet | ✓ |
| Spécifier le format de sortie | ✓ |
| Itérer de façon ciblée | ✓ |
| Tester tout code généré | ✓ |
| Vérifier les faits importants | ✓ |
| Séquencer les tâches complexes | ✓ |
✗ Anti-patterns
| Prompt trop vague | ✗ |
| 5 tâches en 1 prompt | ✗ |
| Accepter sans vérifier | ✗ |
| Données sensibles en clair | ✗ |
| Citer sans vérifier source | ✗ |
| "Refais" sans plus de contexte | ✗ |
Tu es [rôle + expertise].
Contexte :
[Décrire la situation, le projet, les contraintes
existantes, la stack technique si pertinent]
Tâche :
[Verbe d'action précis + ce qui est attendu]
Format de la réponse :
[Structure, longueur, langue, niveau de détail]
Contraintes :
[Ce qu'il ne faut pas faire / utiliser]
Matériau de travail :
[Code / texte / données à traiter]
# Approfondir
"Développe le point [N] avec un exemple concret."
"Va plus loin sur [aspect spécifique]."
# Simplifier
"Réexplique comme si je n'avais aucune
connaissance en [domaine]."
# Changer de format
"Reformule sous forme de tableau comparatif."
"Donne-moi seulement le code, sans explication."
# Vérification
"Es-tu certain de [affirmation] ? Si tu as
un doute, dis-le explicitement."
"Quelles informations devrais-je vérifier
dans ta réponse ?"
# Itération créative
"Propose 3 approches alternatives."
"Quelle serait l'approche la plus simple ?
La plus robuste ? La plus rapide ?"