Itération et débogage des prompts
Mettez en place une méthode systématique pour tester et perfectionner vos prompts, repérez les modes d’échec et utilisez l’OpenAI Playground pour itérer rapidement avant d’écrire du code destiné à la production.
Itération et débogage des prompts est une leçon AI Engineering Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Engineering Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Engineering Academy comprend 4 leçons au total.
La conception de messages est une discipline empirique
La conception efficace de messages ne consiste pas à trouver une formule magique : c’est un processus empirique et itératif, davantage comparable au débogage qu’à l’écriture. Vous rédigez un message, l’exécutez avec des entrées de test, observez où il échoue, formulez une hypothèse sur la cause de l’échec, puis modifiez le message pour le corriger. L’intuition seule n’est pas fiable ; vous avez besoin de données.
De nombreux développeurs commettent l’erreur de tester leur message sur un ou deux exemples conçus manuellement, d’obtenir de bons résultats, puis de le mettre en production — pour découvrir ensuite qu’il échoue sur 30 % des entrées réelles. Un processus d’évaluation systématique évite cela en exposant votre message à des exemples divers et représentatifs avant sa mise en service.
Créer d’abord un ensemble de test
Avant d’écrire votre message, constituez un ensemble de test de référence : une collection de 20 à 100 exemples d’entrées représentatifs, associés au résultat attendu ou aux critères de réussite. Cet ensemble devient votre référence pour évaluer toute modification du message.
Les bons ensembles de test comprennent : des entrées typiques, des cas limites (chaînes vides, entrées très longues, cas ambigus), des entrées adverses conçues pour mettre le message en défaut et des entrées provenant de différents segments de votre population d’utilisateurs. Plus votre ensemble de test est diversifié, plus vous pouvez avoir confiance dans le fait qu’une modification constitue une véritable amélioration plutôt qu’un surapprentissage des quelques exemples que vous aviez en tête.
Un outil simple d’évaluation
Écrire un script d’évaluation simple prend une heure et vous fait économiser des jours de débogage des problèmes de production. Le script exécute votre message avec chaque cas de test, compare la sortie au résultat attendu et indique un taux de réussite. Vous pouvez ensuite itérer sur le message et voir immédiatement si vos modifications ont amélioré le score global.
import openai
client = openai.OpenAI()
# Golden test set: (input, expected_output)
test_cases = [
('The product is excellent and very fast.', 'Positive'),
('Arrived damaged and customer service ignored me.', 'Negative'),
('Delivery was on time.', 'Neutral'),
('Worst purchase of my life. Never again!', 'Negative'),
('Good value for the price.', 'Positive'),
]
def evaluate_prompt(system_prompt):
correct = 0
for text, expected in test_cases:
resp = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': text}
],
max_tokens=10
)
prediction = resp.choices[0].message.content.strip()
if expected.lower() in prediction.lower():
correct += 1
else:
print(f'FAIL: "{text}" -> got "{prediction}", expected "{expected}"')
return correct / len(test_cases)
score = evaluate_prompt('Classify sentiment as Positive, Negative, or Neutral. Reply with one word only.')
print(f'Score: {score:.0%}')Catégoriser les modes d’échec
Lorsque votre message échoue sur certains cas de test, regroupez les échecs par type afin d’identifier des tendances. Les modes d’échec courants comprennent :
- Échecs de format : le modèle produit la bonne réponse, mais dans un format incorrect
- Échecs liés à l’ambiguïté : le modèle interprète la tâche différemment de ce que vous aviez prévu
- Échecs sur les cas limites : le modèle fonctionne avec les entrées typiques, mais échoue avec les entrées inhabituelles
- Échecs dus aux hallucinations : le modèle produit avec assurance un contenu factuel erroné
- Non-respect des instructions : le modèle suit partiellement les instructions, mais ne respecte pas certaines contraintes précises
Chaque type d’échec exige une correction différente. Les échecs de format nécessitent des instructions de sortie plus explicites ; les échecs liés à l’ambiguïté nécessitent une définition plus claire de la tâche ou des exemples.
L’OpenAI Playground pour itérer rapidement
L’OpenAI Playground (platform.openai.com/playground) est l’outil le plus rapide pour itérer sur des messages sans écrire de code. Il vous permet de changer de modèle, d’ajuster les paramètres à l’aide de curseurs, d’enregistrer des versions de messages et de comparer les sorties côte à côte.
Utilisez le Playground pendant la phase d’exploration de la conception des messages : essayez différentes formulations, testez interactivement les cas limites et développez votre intuition sur ce qui fonctionne. Une fois que vous avez convergé vers un message prometteur, passez au code avec un outil d’évaluation afin de le valider systématiquement sur l’ensemble de votre jeu de tests avant sa mise en production.
Gestion des versions des messages
Les messages sont du code. Ils doivent être gérés avec un contrôle de version, examinés et déployés avec la même rigueur que le code de l’application. L’approche la plus simple consiste à stocker vos modèles de messages sous forme de chaînes dans un fichier de constantes de votre dépôt, afin que les modifications soient suivies dans git et nécessitent une revue du code.
Les approches plus avancées consistent notamment à stocker les messages dans une base de données dédiée à leur gestion (LangSmith, PromptLayer ou une simple table Supabase), à étiqueter les versions et à effectuer des tests A/B entre les versions de messages en production. Cela est particulièrement important lorsque plusieurs membres de l’équipe travaillent sur les mêmes messages ou lorsque vous devez annuler une modification qui a dégradé la qualité en production.
# prompts/sentiment.py
# Version 2.1 - Added explicit tie-breaking rule for mixed reviews
SENTIMENT_V2_1 = '''You are a sentiment classification assistant.
Classify the customer review sentiment as exactly one of: Positive, Negative, or Neutral.
Rules:
- Positive: overall satisfaction, praise, or recommendation
- Negative: disappointment, complaint, or warning to others
- Neutral: factual statements without strong sentiment, or equal positive and negative content
- If the review contains both positive and negative elements, choose based on the DOMINANT tone
Respond with ONLY the single word classification. No explanation.'''
# Usage:
# from prompts.sentiment import SENTIMENT_V2_1Comparer systématiquement les variantes de messages
Lorsque vous avez deux versions concurrentes d’un prompt, exécutez-les toutes les deux sur l’intégralité de votre ensemble de tests et comparez les scores. Même une amélioration de 5 % de la précision sur un système en production traitant des milliers de requêtes par jour justifie l’effort d’évaluation. Ne choisissez jamais un prompt sur la base d’un ou deux exemples testés manuellement — comparez-les toujours sur l’ensemble des tests.
Pour les mesures de qualité subjectives, lorsqu’il n’existe pas de réponse unique correcte (par exemple le ton, l’utilité ou la créativité), vous pouvez utiliser un LLM comme évaluateur : demandez à un modèle puissant comme GPT-4o d’évaluer laquelle de deux réponses respecte le mieux vos critères de qualité. Cette méthode permet d’étendre l’évaluation au-delà de ce qu’un examen humain peut traiter.
Déboguer les sorties incohérentes
Par défaut, les sorties des LLM ne sont pas déterministes. Définir temperature=0 rend les sorties presque déterministes (le jeton le plus probable à chaque étape), ce qui est essentiel pour le débogage, car cela vous permet d’exécuter deux fois le même prompt et d’obtenir la même sortie. Lors du débogage, définissez toujours la température sur 0 afin de déterminer si une modification du prompt a provoqué le changement de sortie ou s’il s’agit simplement d’une variation aléatoire.
Une fois le prompt corrigé, réactivez une certaine température en production si votre cas d’utilisation bénéficie de variété (écriture créative, recherche d’idées), mais conservez une température de 0 pour les tâches d’extraction structurée et de classification qui nécessitent des sorties cohérentes et reproductibles.
import openai
client = openai.OpenAI()
# Deterministic mode for debugging
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Classify sentiment: Positive, Negative, or Neutral.'},
{'role': 'user', 'content': 'The product looks nice but broke after two days.'}
],
temperature=0, # deterministic
seed=42 # optional reproducibility seed
)
print(response.choices[0].message.content)Déboguer les hallucinations
Si votre prompt produit des faits hallucinés, ajoutez des contraintes qui rendent les hallucinations plus difficiles. Voici quelques techniques efficaces pour les limiter :
- Citer les sources : « Répondez uniquement à partir du contexte fourni. Si la réponse ne figure pas dans le contexte, dites que vous ne savez pas. »
- Quantifier la confiance : « Évaluez votre niveau de confiance de 1 à 5. S’il est inférieur à 3, ne répondez pas. »
- Ajouter une étape de vérification : « Avant de répondre, vérifiez que chaque fait que vous prévoyez d’utiliser figure dans le document fourni. »
Aucune technique n’élimine complètement les hallucinations, mais la combinaison de la récupération (RAG) et de contraintes fortes dans le prompt les réduit considérablement pour les applications qui reposent largement sur les connaissances.
Longueur du prompt et placement des instructions
Les recherches montrent que les LLM accordent davantage d’attention aux instructions placées au début et à la fin d’un prompt qu’à celles placées au milieu. C’est ce qu’on appelle le problème du milieu oublié. Si vous avez un long prompt contenant des instructions importantes enfouies au milieu et entourées de contexte, le modèle risque de ne pas les suivre de manière fiable.
Bonne pratique : placez vos instructions les plus importantes (la définition de la tâche et les contraintes critiques) tout au début du prompt système, puis rappelez les contraintes essentielles à la fin. Pour les longs documents injectés comme contexte, placez la question de l’utilisateur après le document plutôt qu’avant, car le modèle accorde davantage de poids au contenu le plus récent.
De l’exploration à la production
Le cycle de développement des prompts comporte trois phases :
- Exploration : utilisez le Playground pour expérimenter librement. Cherchez à comprendre ce qui fonctionne sur le plan conceptuel, plutôt qu’à obtenir une sortie parfaite.
- Évaluation : constituez un ensemble de tests et un dispositif d’évaluation. Exécutez les prompts candidats sur l’ensemble des tests et mesurez les taux de réussite. Répétez le processus jusqu’à atteindre votre seuil de qualité.
- Production : gérez la version du prompt final, ajoutez une surveillance pour suivre les indicateurs de qualité en production et configurez des alertes en cas de dégradation de la qualité. Prévoyez de futures itérations lorsque les versions des modèles changent.
Le fait de sauter la phase d’évaluation est la cause la plus fréquente des régressions de qualité des prompts en production. Le temps consacré à constituer un ensemble de tests approprié est largement rentabilisé.
Vérification rapide
Vérifiez votre compréhension des concepts d’ingénierie de l’IA présentés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que l’ingénierie des prompts nécessite un ensemble de tests de référence et un dispositif d’évaluation pour mesurer les améliorations de manière fiable, que les modes d’échec doivent être catégorisés afin d’identifier la correction adaptée à chaque type, et que la température 0 est essentielle au débogage, tandis que la gestion des versions des prompts et la surveillance en production permettent de boucler le suivi de la qualité. Nous allons maintenant voir comment les LLM traitent le texte au moyen de jetons et pourquoi le nombre de jetons est important pour le coût et le contexte.
Questions Fréquemment Posées
La leçon « Itération et débogage des prompts » est-elle gratuite ?
Oui — le texte complet de « Itération et débogage des prompts » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Engineering Academy, passe à CoddyKit PRO. Le cours AI Engineering Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Itération et débogage des prompts » ?
Mettez en place une méthode systématique pour tester et perfectionner vos prompts, repérez les modes d’échec et utilisez l’OpenAI Playground pour itérer rapidement avant d’écrire du code destiné à la… Tu pratiques AI Engineering Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Engineering Academy ?
Aucune expérience préalable n'est requise. AI Engineering Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Itération et débogage des prompts » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Engineering Academy ?
Oui. Chaque leçon AI Engineering Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Prompts zero-shot et few-shot
- Chaîne de pensée et raisonnement étape par étape
- Prompts système et définition d’une persona
- Itération et débogage des prompts