Une interface permettant d'évaluer le bot de l'ANSSI, basé sur Albert Albert, et d'y indexer de nouveaux documents RAG.
flowchart LR
%% === Projet local ===
subgraph Projet["anssi-recommandations-cyber-data"]
DataSrc["donnees/QA-labelisé-Question_par_guide.csv"]
Lecteur[LecteurCSV]
Remplisseur[RemplisseurReponses]
ClientMQC[ClientMQCHTTP]
end
%% === Système externe (mise en évidence) ===
subgraph Externe["anssi-recommendations-cyber (externe)"]
MQC[/Route HTTP POST /pose_question/]
end
%% Flux conforme au code
Lecteur -->| lit | DataSrc
Lecteur -->| utilise pour chaque question| Remplisseur
Remplisseur -->|"remplit 'Réponse Bot'"| Lecteur
Remplisseur -->|pose_question| ClientMQC
ClientMQC -->|POST JSON| MQC
MQC -->|réponse JSON| ClientMQC
ClientMQC -->|renvoie texte| Remplisseur
style Externe fill:#fff3cd,stroke:#f0ad4e,stroke-width:2.5px,color:#333
Il faut installer deux dépendances systèmes, python et uv.
Ensuite, la première fois il faut créer un environnement virtuel avec uv venv.
Dès lors, l'environnement est activable via source .venv/bin/activate.
Les dépendances déclarées sont installables via uv sync.
Dans un environnement virtuel :
- lancer
mypypour vérifier la validité des annotations de types, - et lancer
pytestpour valider le comportement à l'exécution.
Il faut créer à la racine du projet un fichier .env.
A minima, ce fichier devra définir les variables déclarées dans le fichier .env.template.
-
Lancer l’application anssi-recommandations-cyber. Pour cela, nous vous recommandons de démarrer l'application dans le conteneur construit avec les instructions de ce dépôt :
docker container run --rm -it \ --network=host \ --volume $(pwd):/app \ localhost/mqc/api \ bash -c "env \$(cat .env) python src/main.py"
⚠️ Pensez à compléter le fichier.envà partir du modèle.env.template. -
Vérifier que l’application MQC démarre bien en local (endpoint
/pose_questionaccessible).
Exécuter la commande suivante :
uv run --env-file .env python -m /main_remplir_csv.py --csv donnees/jointure-nom-guide.csv --prefixe evaluation --sortie donnees/sortie--csv: chemin vers le fichier CSV contenant les questions à évaluer.--prefixe: préfixe utilisé dans le nom du fichier de sortie.--sortie: dossier où sera écrit le CSV enrichi.
Un fichier nommé evaluation_YYYY-MM-DD_H_M_S.csv sera alors généré dans donnees/sortie/ avec une colonne Réponse Bot remplie automatiquement.
- Avoir défini dans votre fichier
.envla variableALBERT_CLE_APIavec une clé API valide Albert. - Placer les documents PDF à indexer dans le dossier
donnees/guides_de_lANSSI/.
Exécuter la commande suivante :
uv run --env-file .env python src/guides/indexe_documents_rag.py --nom LE_NOM_DE_LA_COLLECTION --description "Contient l'ensemble des guides de l'ANSSI disponibles publiquement"--nom: nom de la collection à créer dans Albert--description: description de la collection
La commande va :
- Créer une nouvelle collection privée dans Albert
- Indexer tous les fichiers PDF présents dans
donnees/guides_de_lANSSI/ - Associer chaque document à son URL publique sur
https://demo.messervices.cyber.gouv.fr/documents-guides/via les metadonnees