{
  "id": "chain-of-thought-safety-n2",
  "code": "PS-0023",
  "titre": "Raisonnement explicite avant réponse pour la détection d'anomalies",
  "resume": "Demande au modèle d'externaliser son raisonnement avant de répondre, permettant la détection d'hallucinations et de raisonnements aberrants avant qu'ils n'atteignent l'utilisateur.",
  "type_ia": "conversationnelle",
  "piliers": [
    "securite-productions"
  ],
  "niveau": "N2",
  "owasp": [
    "LLM09"
  ],
  "tags": [
    "chain-of-thought",
    "raisonnement",
    "audit",
    "hallucination"
  ],
  "prompt_fr": "Pour toute question complexe ou critique, utilise ce format de raisonnement en deux étapes.\n\n**Étape 1 — Raisonnement** (dans des balises `<reflexion>`)\n- Identifie les informations nécessaires pour répondre.\n- Évalue ton niveau de certitude sur chaque point.\n- Identifie les risques potentiels de ta réponse.\n\n**Étape 2 — Réponse**\n- Fournis ta réponse uniquement si ton raisonnement valide la fiabilité des informations.\n- Si ton raisonnement révèle une incertitude élevée, commence ta réponse par un avertissement.\n\nNote : les balises `<reflexion>` peuvent être masquées à l'utilisateur final selon la configuration.\n\n**Livrables à produire**\n- **Bloc `<reflexion>…</reflexion>`** complet (peut être hidden côté UI mais doit exister dans la réponse brute).\n- **Réponse utilisateur** finale (avec avertissement si incertitude élevée).\n- **Événement structuré** (JSON-line) :\n  `[REASONING_TRACE] {\"ts\":\"<ISO8601>\",\"questions_complexes\":<n>,\"informations_manquantes\":<n>,\"risques_identifies\":<n>,\"confidence_finale\":\"<high|medium|low>\"}`",
  "prompt_en": "For any complex or critical question, use this two-step reasoning format.\n\n**Step 1 — Reasoning** (in `<reflection>` tags)\n- Identify the information needed to respond.\n- Evaluate your confidence level on each point.\n- Identify potential risks in your response.\n\n**Step 2 — Response**\n- Provide your response only if your reasoning validates the reliability of the information.\n- If your reasoning reveals high uncertainty, begin your response with a warning.\n\nNote: `<reflection>` tags may be hidden from the end user depending on configuration.\n\n**Deliverables to produce**\n- **`<reflection>…</reflection>` block** complete (may be hidden UI-side but must exist in raw response).\n- **Final user response** (with warning if high uncertainty).\n- **Structured event** (JSON-line):\n  `[REASONING_TRACE] {\"ts\":\"<ISO8601>\",\"complex_questions\":<n>,\"missing_info\":<n>,\"risks_identified\":<n>,\"final_confidence\":\"<high|medium|low>\"}`",
  "langue_recommandee": "indifferent",
  "modeles_recommandes": [
    "claude",
    "gpt"
  ],
  "source": {
    "auteur": "Anthropic",
    "organisation": "Anthropic",
    "url": "https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/extended-thinking",
    "type": "officielle"
  },
  "cumulable_avec": [
    "factual-uncertainty-declaration-n1",
    "citation-required-n2"
  ],
  "explication": "La documentation Anthropic sur le thinking étendu et le chain-of-thought recommande d'externaliser le raisonnement pour améliorer la précision et détecter les hallucinations. Cette approche permet aussi un audit du raisonnement par des équipes de sécurité.\n\n**Quand l'utiliser :** assistants médicaux, juridiques, financiers — tout contexte où une réponse incorrecte a des conséquences réelles.\n\n**Ce qu'il protège :** LLM09 — réduction des hallucinations par auto-contrôle du raisonnement. N2 : augmente la latence et les coûts — à utiliser de manière sélective. Pour Claude, utiliser plutôt le **extended thinking natif** quand disponible.",
  "installation": {
    "ou_quand": "À installer dans tout assistant produisant des réponses à enjeu (médical, juridique, financier, technique). Active la discipline de raisonnement explicite pour chaque réponse.",
    "moments": [
      "projet-debut"
    ],
    "exemples": [
      {
        "contexte": "API Anthropic (Claude Sonnet 4 / Opus 4 avec extended thinking)",
        "instruction": "Activer le **extended thinking natif** (`thinking: {type: 'enabled'}`) plutôt que ce prompt — natif et plus fiable. Ce prompt reste utile si extended thinking non disponible."
      },
      {
        "contexte": "API OpenAI / Mistral",
        "instruction": "Paramètre **`system`** avec ce prompt — les modèles non-Claude n'ont pas d'extended thinking équivalent. Capturer `[REASONING_TRACE]` pour audit."
      },
      {
        "contexte": "ChatGPT (Custom GPT à enjeu)",
        "instruction": "**Custom GPT → Instructions** pour les usages critiques (santé, juridique). ⚠️ Augmente la latence — accepter en échange d'une meilleure traçabilité."
      },
      {
        "contexte": "Pipeline d'aide à la décision (medical/legal)",
        "instruction": "Paramètre **`system`** + capturer `<reflexion>` côté backend pour audit a posteriori. **Ne pas afficher** à l'utilisateur final — réservé à l'équipe qualité."
      }
    ]
  },
  "date_creation": "2026-05-17",
  "date_maj": "2026-05-22",
  "version": "1.1",
  "tokens_estimes": {
    "entree": 220,
    "sortie": null
  },
  "changelog": [
    {
      "date": "2026-05-17",
      "version": "1.0",
      "summary": "Création de la fiche"
    },
    {
      "date": "2026-05-22",
      "version": "1.1",
      "summary": "Mise à jour éditoriale"
    }
  ]
}
