a7b7684e87
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>
187 lines
11 KiB
Markdown
187 lines
11 KiB
Markdown
# 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.
|