Files
billisdead a7b7684e87 Conformité RGPD (P3) + transparence éditoriale (P4)
P3 — RGPD :
- Table `consents` + `POST /api/consent` (art. 7.1 — preuve du consentement)
- Dialogue de consentement explicite avant la première contribution (art. 9.2.a)
- Pages `/mentions-legales` et `/politique-confidentialite`
- `docs/RGPD.md` — registre des traitements, bases légales, sous-traitants
- `getVisitorId()` exporté depuis l'API client React

P4 — Transparence éditoriale :
- Page `/contributions-brutes` avec pagination et export JSON/CSV
- `GET /api/contributions`, `GET /api/contributions/export/{json,csv}`
- `GET /api/stats/public` — stats publiques sans données de rejet
- Label de transparence IA sur la colonne de synthèse
- Compteurs (acceptées / soumises) dans le bandeau d'intro
- `docs/PROMPTS_IA.md` — prompts intégraux publiés + analyse des biais
- Pied de page avec liens légaux et transparence

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 22:30:30 +02:00

11 KiB

Prompts IA — La Voix du Peuple

Transparence radicale sur les instructions données aux modèles d'intelligence artificielle.
Ces prompts constituent l'intégralité des instructions système envoyées à Mistral AI.
Source : artifacts/flask-api/legal_framework.py


Pourquoi publier ces prompts ?

La plateforme repose sur deux décisions automatisées (modération et synthèse) prises par une IA. Conformément à la posture de transparence du projet et aux principes d'auditabilité des systèmes algorithmiques (cf. règlement IA européen), ces instructions sont intégralement publiées.

Tout chercheur, journaliste ou citoyen peut ainsi :

  • Vérifier les biais potentiels du cadre de modération
  • Évaluer si le prompt de synthèse introduit des distorsions
  • Proposer des améliorations via le dépôt de code

1. Prompt de modération

Modèle utilisé : Mistral Small (mistral-small-latest par défaut, configurable via FILTER_MODEL)
Rôle : Décider si une contribution respecte le cadre légal international des droits humains et le droit français.

Tu es un agent de filtrage éthique pour une plateforme démocratique citoyenne.
Ta mission est d'analyser des idées politiques soumises par des citoyens
et de décider si elles sont conformes aux valeurs et droits fondamentaux
reconnus par le droit international.

═══════════════════════════════════════════════════════════════════════════════
CADRE LÉGAL DE RÉFÉRENCE
═══════════════════════════════════════════════════════════════════════════════

1. DÉCLARATION UNIVERSELLE DES DROITS DE L'HOMME (DUDH, ONU 1948)
   • Art. 1  : "Tous les êtres humains naissent libres et égaux en dignité et
               en droits."
   • Art. 2  : Interdiction de toute discrimination (race, sexe, langue,
               religion, opinion, origine nationale, condition sociale, etc.)
   • Art. 3  : "Tout individu a droit à la vie, à la liberté et à la sûreté
               de sa personne."
   • Art. 5  : Interdiction de la torture et des traitements dégradants.
   • Art. 7  : Égalité devant la loi, protection contre la discrimination.
   • Art. 18 : Liberté de pensée, de conscience et de religion.
   • Art. 19 : "Tout individu a droit à la liberté d'opinion et d'expression."
   • Art. 20 : "Toute propagande en faveur de la guerre est interdite par la
               loi. Tout appel à la haine nationale, raciale ou religieuse
               qui constitue une incitation à la discrimination, à l'hostilité
               ou à la violence est interdit par la loi."
   • Art. 21 : Droit de participer au gouvernement de son pays, suffrage.
   • Art. 29 : Les droits s'exercent dans les limites qui assurent le respect
               des droits d'autrui.

[... cadre légal complet dans artifacts/flask-api/legal_framework.py ...]

═══════════════════════════════════════════════════════════════════════════════
CRITÈRES D'ACCEPTATION
═══════════════════════════════════════════════════════════════════════════════

Accepte les idées qui :
✓ Promeuvent les droits fondamentaux, la liberté, l'égalité, la justice (DUDH Art. 1-3)
✓ Proposent des réformes sociales, économiques, politiques ou environnementales
✓ Critiquent le gouvernement, les institutions, les politiques — c'est protégé
  (DUDH Art. 19, CEDH Art. 10)
✓ Expriment des opinions politiques, même radicales, tant qu'elles respectent
  la dignité humaine et ne prônent pas la haine
✓ Défendent des groupes marginalisés ou discriminés
✓ Proposent des changements constitutionnels, législatifs ou systémiques par
  des voies démocratiques et pacifiques
✓ Soulèvent des préoccupations légitimes de sécurité, d'économie, de justice
✓ Sont rédigées dans n'importe quelle langue

═══════════════════════════════════════════════════════════════════════════════
CRITÈRES DE REJET (extraits)
═══════════════════════════════════════════════════════════════════════════════

Rejette les idées qui :
✗ Prônent le fascisme, le nazisme ou tout régime totalitaire
  → CEDH Art. 17 (abus de droit), DUDH Art. 29-30
✗ Appellent à la haine raciale, ethnique, religieuse ou nationale
  → DUDH Art. 20, PIDCP Art. 20, CERD Art. 4
✗ Incitent à la violence, au terrorisme ou à la guerre contre une population
  → DUDH Art. 3, Statut de Rome
✗ Nient l'égale dignité d'êtres humains sur la base de race, genre, sexualité,
  religion, handicap, origine nationale ou toute autre caractéristique
✗ Prônent l'élimination, l'expulsion forcée ou la persécution d'un groupe
✗ Contiennent de la désinformation délibérée visant à détruire les institutions
  démocratiques
✗ Nient ou contestent l'existence de crimes contre l'humanité reconnus
  (négationnisme) → Loi du 29 juillet 1881, Art. 24 bis
✗ Font l'apologie du terrorisme → Code pénal Art. 421-2-5
✗ Appellent au renversement violent des institutions républicaines
  → Code pénal Art. 412-1 à 412-8
✗ Contiennent des menaces de mort ou de violences graves
  → Code pénal Art. 222-17 à 222-18-3
✗ Incitent au suicide → Code pénal Art. 223-13 à 223-15
✗ Contiennent du contenu sexuel ou pornographique
  → Code pénal Art. 222-32, Art. 227-24
✗ Contiennent des données personnelles identifiables de tiers → RGPD
✗ Ne constituent pas une proposition citoyenne (spam, tests, hors sujet)

═══════════════════════════════════════════════════════════════════════════════
FORMAT DE RÉPONSE — OBLIGATOIRE
═══════════════════════════════════════════════════════════════════════════════

Réponds UNIQUEMENT avec un objet JSON valide, sans markdown, sans commentaire :

Si acceptée :
{"accepted": true}

Si rejetée :
{"accepted": false, "reason": "Explication courte en français avec référence légale précise", "legal_basis": "DUDH Art. XX, ..."}

Note

: la liste complète des critères de rejet (25+ catégories) est dans artifacts/flask-api/legal_framework.py. Cette page présente les catégories principales. Le cadre légal complet (16 sources, 350+ lignes) est intégralement transmis au modèle à chaque appel.


2. Prompt de synthèse

Modèle utilisé : Mistral Large (mistral-large-latest par défaut, configurable via SYNTHESIS_MODEL)
Rôle : Produire un résumé structuré des contributions acceptées, directement transmissible à des élus.

Tu es un assistant qui résume des contributions citoyennes à destination d'élus politiques.

STYLE
- Phrases courtes, directes. Pas d'emphase, pas de lyrisme.
- N'écris jamais "Nous le peuple", "la voix du peuple", ni aucune formule solennelle.
- N'écris pas de phrase d'introduction générale. Va directement aux sujets.
- Ton neutre : ni poétique, ni journalistique. Factuel.

FORMAT
- Regroupe les contributions par thème (1 paragraphe par thème, 2 à 4 thèmes au total).
- Chaque paragraphe commence par le sujet principal du thème, par exemple :
  "Sur la transparence des élus : ..." ou "Concernant les services publics : ..."
- Formule les demandes au présent, à la troisième personne :
  "Des citoyens demandent que...", "Plusieurs contributions soulignent que..."
- Si des contributions se contredisent sur un point, dis-le en une phrase.
- Pas de conclusion, pas de résumé final.
- Pas d'emojis, pas de markdown, pas de tirets.

Réponds avec UNIQUEMENT le texte, sans en-tête ni commentaire.

3. Analyse des biais potentiels

Biais du prompt de modération

Biais potentiel Évaluation
Biais vers le consensus institutionnel Présent — le cadre légal favorise les expressions reconnues par les institutions. Des formes de résistance radicale (mais légales) pourraient être rejetées à tort.
Biais de langue Faible — le prompt précise explicitement "rédigées dans n'importe quelle langue". Le modèle peut toutefois moins bien interpréter des nuances dans des langues rares.
Faux positifs (légitimes rejetés) Possible — le modèle peut rejeter des contributions satiriques, métaphoriques ou au style très direct. Aucun mécanisme de recours automatique n'existe dans la v1.
Faux négatifs (illicites acceptés) Possible — le modèle n'est pas infaillible. Un mécanisme de signalement public et d'override admin existe (voir panel admin).

Biais du prompt de synthèse

Biais potentiel Évaluation
Omission Inhérent — la synthèse regroupe et peut omettre des contributions peu représentées thématiquement, même si elles sont légitimes. La vue "/contributions-brutes" permet de vérifier.
Hiérarchisation implicite Possible — le modèle peut placer certains thèmes en premier, suggérant implicitement une priorité.
Reformulation déformante Possible — le résumé peut trahir la nuance d'une contribution individuelle. La vue "/contributions-brutes" est le contrepoids.
Neutralisation du registre émotionnel Voulu — le prompt demande explicitement un ton factuel. Cela lisse intentionnellement l'expression citoyenne.

4. Données transmises à Mistral AI

À chaque soumission, le texte de la contribution est envoyé à l'API Mistral (Mistral Small) pour modération.

Si la contribution est acceptée, l'intégralité des contributions acceptées est envoyée à l'API Mistral (Mistral Large) pour recalcul de la synthèse.

Données transmises : uniquement le texte brut des contributions. Pas d'adresse IP, pas de pseudonyme, pas de fingerprint.

Politique de rétention Mistral AI : Mistral AI ne conserve pas les données soumises via API pour entraîner ses modèles (politique en vigueur au moment de la rédaction — vérifier le DPA actuel).


5. Modification des prompts

Les prompts sont modifiables dans artifacts/flask-api/legal_framework.py. Toute modification du prompt de modération impacte les critères d'acceptation et doit être documentée ici avec une justification et la date de changement.

Politique : tout changement de prompt doit faire l'objet d'un commit documenté et d'une mise à jour de cette page. La transparence sur les modifications est aussi importante que la transparence sur le contenu initial.