0Pricing
AI Prompt Engineering · Leçon

Diagnostiquer les sorties inattendues

Classez les modes d’échec : mauvaise réponse, mauvais format, hors sujet ou hallucination.

Diagnostiquer les sorties inattendues est une leçon AI Prompt Engineering gratuite sur CoddyKit. Ceci est la leçon 1 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 Prompt Engineering, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Prompt Engineering comprend 4 leçons au total.

Lorsque les invites échouent

Même des invites soigneusement rédigées produisent des résultats erronés. Le diagnostic des échecs nécessite une taxonomie — une classification du type d’échec survenu. Sans classification, le débogage repose sur des conjectures. Les quatre principales catégories d’échec sont les suivantes : réponse incorrecte, format incorrect, réponse hors sujet et hallucination.

Type d’échec 1 : Réponse incorrecte

Une réponse incorrecte est une erreur factuelle : le modèle a fourni une réponse au format correct et sur le bon sujet, mais son contenu est incorrect.

Exemples : dates, statistiques, noms, code comportant un bogue logique. C’est l’échec le plus difficile à détecter automatiquement, car la sortie semble correcte en apparence.

  • Cause : date d’arrêt des données d’entraînement, fait rare ou erreur de raisonnement en plusieurs étapes
  • Détection : comparaison avec la vérité de référence, examen humain ou appel de vérification au LLM
# Example: wrong answer failure
prompt = 'What year was Python first released?'
response = 'Python was first released in 1994.'  # Wrong — it was 1991

# Ground truth check
GROUND_TRUTH = '1991'
correct = GROUND_TRUTH in response
print(f'Correct: {correct}')  # False

Type d’échec 2 : Format incorrect

Un échec de format incorrect survient lorsque le modèle répond à la bonne question avec les bonnes informations, mais ignore l’instruction de mise en forme.

Exemples : renvoyer du texte brut alors que du JSON était demandé, ajouter du balisage alors que du texte brut était requis, renvoyer une liste alors qu’une seule valeur était demandée.

  • Cause : instruction de mise en forme enfouie dans une longue invite, instructions contradictoires, modèle ignorant les instructions de faible priorité
  • Détection : erreur d’analyse du JSON, incompatibilité avec l’expression régulière ou échec de validation du schéma
import json

response_text = 'Sure! Here is the result: {"name": "Alice", "age": 30}'

try:
    data = json.loads(response_text)
    print('Format OK:', data)
except json.JSONDecodeError as e:
    print(f'FORMAT FAILURE: {e}')
    # 'Sure! Here is the result:' prefix broke JSON parsing

Type d’échec 3 : Réponse hors sujet

Un échec hors sujet signifie que le modèle a répondu à une question différente de celle qui était posée. La réponse peut être factuellement correcte et bien mise en forme, mais elle ne répond pas à l’intention réelle de l’utilisateur.

Exemples : demander une fonction Python et recevoir une fonction JavaScript ; demander une réponse d’une ligne et recevoir une dissertation complète ; demander de corriger un bogue et recevoir une explication du bogue au lieu de la correction.

  • Cause : instruction ambiguë, contexte contradictoire ou dérive de la tâche dans les longues conversations
# Off-topic example
prompt = 'Write a Python function that reverses a list.'
response = '''
In JavaScript, you can reverse an array like this:
const reversed = arr.reverse();
'''

# Detection: check that output contains the correct language keyword
def check_language(response, expected_lang='def '):
    if expected_lang not in response:
        print(f'OFF-TOPIC FAILURE: expected {expected_lang} in response')
        return False
    return True

check_language(response)  # False — no Python def

Type d’échec 4 : Hallucination

Une hallucination est l’échec le plus dangereux : le modèle invente des faits qui n’existent pas. Ces faits semblent plausibles et sont présentés avec assurance, ce qui les rend difficiles à repérer.

Exemples : citations fabriquées (le titre d’un article semble réel, mais l’article n’existe pas), points de terminaison d’interface de programmation inventés, fausses statistiques, personnes inexistantes.

  • Cause : le modèle comble les lacunes de ses connaissances par un texte plausible fondé sur des correspondances de motifs
  • Détection : vérifier les faits à l’aide de sources faisant autorité, recouper les citations, vérifier les appels à l’interface de programmation
# Hallucination detection via external verification
import requests

def verify_doi(doi):
    url = f'https://doi.org/{doi}'
    resp = requests.head(url, allow_redirects=True, timeout=5)
    return resp.status_code == 200

# Model claimed this paper exists:
fabricated_doi = '10.1234/fake.paper.2023.99999'
if not verify_doi(fabricated_doi):
    print('HALLUCINATION DETECTED: DOI does not exist')

La taxonomie des échecs en pratique

Lorsqu’un échec est observé, classez-le d’abord avant d’essayer de le corriger. Le type d’échec détermine la stratégie de correction :

  • Réponse incorrecte : ajouter du contexte, utiliser la récupération ou passer à un modèle plus performant
  • Format incorrect : renforcer l’instruction de mise en forme, ajouter des exemples de sortie, utiliser des sorties structurées ou des appels de fonctions
  • Hors sujet : réécrire l’instruction de manière plus précise, simplifier l’invite
  • Hallucination : ajouter un contexte d’ancrage, demander au modèle de dire « Je ne sais pas », activer les citations

Journalisation structurée des échecs

Consignez chaque échec avec sa classification. Avec le temps, des tendances apparaissent : une section précise de l’invite est à l’origine de la plupart des erreurs de format, ou un sujet précis déclenche de fréquentes hallucinations. Les journaux structurés permettent un débogage fondé sur les données.

import json
from datetime import datetime

def log_failure(prompt, response, failure_type, details=''):
    entry = {
        'timestamp': datetime.utcnow().isoformat(),
        'failure_type': failure_type,  # wrong_answer | wrong_format | off_topic | hallucination
        'prompt_hash': hash(prompt),
        'response_snippet': response[:200],
        'details': details
    }
    with open('prompt_failures.jsonl', 'a') as f:
        f.write(json.dumps(entry) + '\n')

log_failure(
    prompt=my_prompt,
    response=bad_response,
    failure_type='wrong_format',
    details='JSON prefix text broke parsing'
)

Classification automatisée des échecs

Pour les essais à grande échelle, utilisez un appel à un LLM classificateur afin d’attribuer automatiquement à chaque réponse un type d’échec. Cela permet d’évaluer par lots des centaines de cas d’essai.

def classify_failure(prompt, expected, actual):
    classification_prompt = (
        f'You are a QA evaluator for LLM outputs.\n'
        f'Prompt: {prompt}\n'
        f'Expected behavior: {expected}\n'
        f'Actual output: {actual}\n\n'
        'Classify the failure as one of: CORRECT, WRONG_ANSWER, WRONG_FORMAT, OFF_TOPIC, HALLUCINATION.\n'
        'Reply with only the label.'
    )
    resp = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': classification_prompt}]
    )
    return resp.choices[0].message.content.strip()

Matrice de gravité

Tous les échecs n’ont pas le même impact. Une matrice de gravité aide à prioriser les corrections :

  • Hallucination dans un contexte médical ou juridique : critique — corriger immédiatement
  • Format incorrect dans un outil interne : élevé — empêche l’analyse syntaxique en aval
  • Réponse incorrecte dans un cas limite rare : moyen — surveiller la fréquence
  • Réponse hors sujet pour une entrée ambiguë : faible — acceptable si le cas est peu fréquent

Suivez chaque semaine le taux d’échec pour chaque type. Une hausse dans n’importe quelle catégorie signale une régression qui nécessite votre attention.

Création d’un tableau de bord des échecs

Un tableau de bord simple des échecs lit le journal des échecs et indique le nombre d’occurrences par type et par section de l’invite :

import json
from collections import Counter

def failure_report(log_path='prompt_failures.jsonl'):
    entries = []
    with open(log_path) as f:
        for line in f:
            entries.append(json.loads(line))

    counts = Counter(e['failure_type'] for e in entries)
    total = len(entries)

    print(f'Total failures: {total}')
    for ftype, count in counts.most_common():
        pct = 100 * count / total
        print(f'  {ftype}: {count} ({pct:.1f}%)')

failure_report()

Prévenir les échecs de manière proactive

Stratégies proactives pour réduire chaque type d’échec avant qu’il ne survienne :

  • Réponse incorrecte : fournir un texte de référence dans l’invite (RAG) ; demander au modèle de citer sa source
  • Format incorrect : utiliser le mode JSON ou les appels de fonctions ; fournir un exemple de format dans l’invite
  • Hors sujet : placer la tâche dans la première phrase ; éviter les longues introductions qui diluent l’intention
  • Hallucination : indiquer « N’utilisez que les informations fournies ci-dessous » ; ajouter « En cas de doute, dites Je ne sais pas »

Vérification des connaissances

Quel type d’échec survient lorsque le modèle invente des faits qui n’existent pas, comme une citation fabriquée ou un point de terminaison d’interface de programmation inexistant ?

Récapitulatif : Diagnostiquer les sorties inattendues

Les quatre types d’échec des LLM et leurs principales caractéristiques :

  • Réponse incorrecte : format correct, sujet correct, contenu incorrect — vérifier les faits par rapport à la vérité de référence
  • Format incorrect : contenu correct, instruction de mise en forme ignorée — la validation du schéma le détecte
  • Hors sujet : format correct, réponse à une autre question — vérifier la correspondance entre la langue et la tâche
  • Hallucination : faits inventés — vérifier à l’aide de sources externes

Consignez et classez chaque échec. Suivez les taux par type au fil du temps. Prochaine leçon : l’analyse des causes profondes pour déterminer quelle partie de l’invite a provoqué l’échec.

Questions Fréquemment Posées

La leçon « Diagnostiquer les sorties inattendues » est-elle gratuite ?

Oui — le texte complet de « Diagnostiquer les sorties inattendues » 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 Prompt Engineering, passe à CoddyKit PRO. Le cours AI Prompt Engineering comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Diagnostiquer les sorties inattendues » ?

Classez les modes d’échec : mauvaise réponse, mauvais format, hors sujet ou hallucination. Tu pratiques AI Prompt Engineering 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 Prompt Engineering ?

Aucune expérience préalable n'est requise. AI Prompt Engineering 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 1 sur 4.

Combien de temps prend la leçon « Diagnostiquer les sorties inattendues » ?

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 Prompt Engineering ?

Oui. Chaque leçon AI Prompt Engineering 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

  1. Diagnostiquer les sorties inattendues
  2. Analyse des causes profondes des problèmes d’invites
  3. Approche systématique du débogage
  4. Stratégies de journalisation et de documentation
← Retour à AI Prompt Engineering