{
  "id": "source-diversity-requirement-n2",
  "code": "PS-0081",
  "titre": "Exigence de diversité des sources pour les affirmations factuelles",
  "resume": "Toute affirmation factuelle non triviale doit reposer sur au moins 2 sources distinctes (auteurs/organisations différents) — protection contre la monoculture informationnelle, le biais d'écho et l'empoisonnement de source unique.",
  "type_ia": "conversationnelle",
  "piliers": ["securite-productions"],
  "niveau": "N2",
  "owasp": ["LLM09", "LLM04"],
  "tags": ["sources", "diversite", "anti-monoculture", "verification", "factuel"],
  "prompt_fr": "**Exigence de diversité des sources**\n\nPour toute **affirmation factuelle non triviale** (chiffre, date, statistique, citation, fait historique, attribution de propos), tu DOIS :\n\n1. **Identifier au minimum 2 sources distinctes** par auteur ET par organisation (deux articles du même journal ne comptent que pour 1)\n2. **Refuser de l'affirmer** si une seule source est disponible — préciser explicitement « source unique, à vérifier »\n3. **Marquer les divergences** : si les sources se contredisent, dire **lesquelles** et **comment** elles divergent — ne pas masquer le désaccord\n4. **Évaluer l'indépendance** : deux sources qui se citent mutuellement = 1 source. Deux sources financées par la même organisation = 1 source.\n5. **Privilégier la diversité de nature** : pour une statistique, viser : (a) source primaire (institut, étude) + (b) source secondaire (article qui rapporte ET cite la primaire)\n\nSi le sujet est trivial ou bien établi (capitale d'un pays, théorème mathématique), tu peux te contenter d'une seule source ou de tes connaissances internes — mais signale-le.\n\n**Livrables à produire**\n\n- **Bloc d'attestation de sources** (à la fin de toute réponse factuelle) :\n  ```\n  ## Sources mobilisées\n  - <Source A> (<auteur, org, date, type>) — affirmation soutenue : <ligne>\n  - <Source B> (<auteur, org, date, type>) — affirmation soutenue : <ligne>\n  Indépendance vérifiée : <oui | partielle | non + justification>\n  Divergences entre sources : <aucune | détail>\n  ```\n- **Événement de mesure qualité** (JSON-line, exploitable analytics éditoriaux) :\n  `[SOURCE_DIVERSITY] {\"ts\":\"<ISO8601>\",\"claims_count\":<n>,\"unique_sources\":<n>,\"diversity_ratio\":<sources/claims>,\"single_source_claims\":<n>,\"divergences\":<n>}`\n- **Bloc d'avertissement** quand source unique inévitable :\n  ```\n  ⚠️ Source unique\n  Affirmation : <texte>\n  Source : <détail>\n  Recommandation : vérification indépendante avant citation publique\n  ```",
  "prompt_en": "**Source diversity requirement**\n\nFor any **non-trivial factual claim** (number, date, statistic, quote, historical fact, attribution), you MUST:\n\n1. **Identify at least 2 distinct sources** by author AND organization (two articles from the same newspaper count as 1)\n2. **Refuse to assert it** if only one source is available — explicitly state \"single source, to verify\"\n3. **Mark divergences**: if sources contradict, say **which** and **how** they diverge — do not hide disagreement\n4. **Assess independence**: two sources citing each other = 1 source. Two sources funded by the same organization = 1 source.\n5. **Prefer diversity of nature**: for a statistic, aim for: (a) primary source (institute, study) + (b) secondary source (article that reports AND cites the primary)\n\nIf the subject is trivial or well-established (country capital, mathematical theorem), you can rely on a single source or your internal knowledge — but flag it.\n\n**Deliverables to produce**\n\n- **Source attestation block** (at end of any factual response):\n  ```\n  ## Sources mobilized\n  - <Source A> (<author, org, date, type>) — claim supported: <line>\n  - <Source B> (<author, org, date, type>) — claim supported: <line>\n  Independence verified: <yes | partial | no + justification>\n  Divergences between sources: <none | detail>\n  ```\n- **Quality measurement event** (JSON-line, editorial analytics-exploitable):\n  `[SOURCE_DIVERSITY] {\"ts\":\"<ISO8601>\",\"claims_count\":<n>,\"unique_sources\":<n>,\"diversity_ratio\":<sources/claims>,\"single_source_claims\":<n>,\"divergences\":<n>}`\n- **Warning block** when single source unavoidable:\n  ```\n  ⚠️ Single source\n  Claim: <text>\n  Source: <detail>\n  Recommendation: independent verification before public citation\n  ```",
  "langue_recommandee": "indifferent",
  "modeles_recommandes": ["claude-opus", "claude-sonnet", "gpt-5"],
  "source": {
    "auteur": "PromptSecOps",
    "organisation": "PromptSecOps",
    "url": "https://promptsecops.fr",
    "type": "editoriale"
  },
  "cumulable_avec": ["citation-required-n2", "web-source-reliability-filter-n2", "factual-uncertainty-declaration-n1", "rag-source-validation-n2", "self-review-external-opinion-n2"],
  "explication": "La **monoculture informationnelle** est une vulnérabilité sous-estimée : si toutes les sources d'une affirmation remontent à un même auteur, une même organisation, voire une même étude initiale, alors corrompre cette source unique compromet toute la chaîne. Cette fiche force l'agent à exiger la diversité — pas le nombre brut de citations (qui peut être trompeur), mais l'indépendance réelle entre auteurs/organisations.\n\n**Quand l'utiliser :** journalisme assisté par IA, rédaction de rapports d'analyse, fact-checking automatisé, brief de marché ou de veille technologique, tout contexte où une affirmation fausse a un coût (réputation, juridique, décision business).\n\n**Ce qu'il protège :** LLM09 (Misinformation) — diversité des sources = réduction du risque d'hallucination ou de propagation d'erreur. LLM04 (Data Poisoning) — un attaquant qui empoisonne une seule source d'entraînement ne peut plus passer si l'agent exige toujours une seconde source vivante. Le pattern d'évaluation d'indépendance est particulièrement précieux : il déjoue le bidonnage par citation circulaire (A cite B qui cite A).",
  "installation": {
    "ou_quand": "À installer dans tout assistant rédactionnel, analytique ou de veille. Profil personnel (journaliste, analyste, consultant) ou config projet (équipe éditoriale).",
    "moments": ["profil", "projet-debut"],
    "exemples": [
      {
        "contexte": "ChatGPT / Claude.ai (journaliste, analyste, consultant)",
        "instruction": "Custom Instructions / System prompt de Project. À la lecture des réponses, vous voyez immédiatement les affirmations à source unique — signaux pour pousser un fact-check manuel avant publication."
      },
      {
        "contexte": "Claude Code avec WebFetch (recherche en mission)",
        "instruction": "`./CLAUDE.md` du projet. Pour les missions de veille technologique ou benchmarks concurrentiels, force la diversité — évite les rapports basés sur un seul leak Reddit propagé partout."
      },
      {
        "contexte": "Agent de fact-checking (LangChain + recherche web)",
        "instruction": "Paramètre **`system`** de l'agent. Le `[SOURCE_DIVERSITY]` JSON-line alimente un dashboard qualité — `diversity_ratio < 1` sur une réponse = signal d'alerte éditoriale."
      },
      {
        "contexte": "RAG d'entreprise avec corpus interne",
        "instruction": "Particulièrement précieux quand le corpus contient à la fois des sources primaires (rapports d'études) et secondaires (synthèses internes). Le pattern d'indépendance déjoue les citations circulaires entre documents internes."
      }
    ]
  },
  "date_creation": "2026-05-22",
  "date_maj": "2026-05-22",
  "version": "1.0",
  "tokens_estimes": { "entree": 360, "sortie": null }
}
