FNTP : un agent IA pour passer des fiches de sinistralité à l'article publié

Client
FNTP, Fédération Nationale des Travaux Publics
Période
Juin à septembre 2025
Besoin
Transformer les statistiques d'accidents de la CNAM en articles de prévention, sans compétence technique
Ce qu'on a fait
Une application Shiny avec un agent IA et un éditeur qui publie sur WordPress
Résultat
Livrée en 14 semaines, à la date prévue. Utilisée par la FNTP.
Photo de Brandon Mowinkel sur Unsplash

Le client et le contexte

La FNTP est la Fédération Nationale des Travaux Publics. La sécurité sur les chantiers fait partie de ses sujets de fond, et elle cherche à faire connaître les chiffres d’accidents du travail à ses adhérents pour les sensibiliser.

Ces chiffres sont publiés par la CNAM dans des fiches de sinistralité. On y trouve, pour chaque activité des travaux publics, le nombre d’accidents, de jours de travail perdus et d’incapacités permanentes, avec le détail par âge, par type de lésion ou par circonstance.

Sur ce projet, on a travaillé avec Damien, consultant indépendant (DM Conseil), qui pilotait la mission pour la FNTP et avec qui on avait déjà collaboré.

Le problème

Passer d’une fiche statistique à un article publié demande plusieurs compétences. Il faut extraire les bonnes données, les analyser, rédiger un texte, produire un graphique, puis mettre l’article en page et le publier. Dans une organisation, ces tâches reviennent rarement à la même personne.

La FNTP voulait qu’un chargé de mission puisse faire tout ce chemin seul, sans compétence technique et dans un seul outil. Elle avait aussi fixé le calendrier dès le départ, avec une date de livraison 14 semaines après le démarrage.

Ce qu’on a fait

L’application suit le travail du chargé de mission en deux étapes.

Dans la première, il pose une question à l’agent IA, par exemple sur l’évolution des accidents dans une activité donnée. L’agent lui renvoie un tableau de données, une analyse rédigée avec ses sources et ses tags, et un graphique aux couleurs de la Fédération. Le chargé de mission peut tout modifier, puis il enregistre ce contenu.

Écran de création d’un contenu : la conversation avec l’agent IA à gauche, le tableau de données, l’analyse sourcée et le graphique à droite

Dans la seconde, il assemble ses contenus dans un éditeur de texte intégré, ajoute des images, ajuste la rédaction et publie l’article sur WordPress sans quitter l’application.

Éditeur de publication : un article assemblé avec ses tags, son analyse et son graphique, prêt à être publié sur le site de la FNTP

Deux choix techniques expliquent le résultat.

Des chiffres calculés à partir des fiches. Un modèle de langage peut écrire un chiffre faux avec beaucoup d’assurance, ce qui est inacceptable quand on parle d’accidents du travail. L’agent a donc pour consigne de n’utiliser que les données disponibles. Il écrit le code qui extrait les données, l’application exécute ce code sur le contenu des fiches, et le tableau affiché à l’utilisateur en est le résultat. L’analyse et le graphique partent de ce même tableau, et chaque résultat cité dans le texte est suivi de sa source. Le chargé de mission a ainsi sous les yeux les données qui justifient ce qu’il s’apprête à publier.

Un seul agent. On avait d’abord conçu un agent orchestrateur qui répartissait le travail entre des sous-agents spécialisés, l’un pour les données, un autre pour l’analyse, un autre pour le graphique. Aux tests, chaque sous-agent ne voyait qu’une partie de la conversation, et leurs réponses ne s’accordaient pas entre elles. Au bout d’un mois, on a regroupé l’ensemble dans un agent unique. Ses instructions restaient d’une taille raisonnable, et son comportement est devenu plus fiable et plus simple à régler.

La difficulté : une fonction absente du package

L’agent repose sur ellmer et shinychat, deux packages R sortis quelques mois avant le projet et qu’on utilisait pour la première fois.

C’est l’historique des conversations qui nous a posé le problème le plus net. L’utilisateur devait pouvoir rouvrir une conversation passée avec l’agent pour reprendre un contenu là où il l’avait laissé, et la version 0.2 d’ellmer ne proposait pas cette fonction.

On a trouvé un contournement dans une discussion sur le dépôt GitHub du package, et on l’a mis en place en le sachant provisoire, dans une partie isolée du code et avec sa documentation. Quand la version 0.3 est sortie avec la fonction officielle, l’application est passée dessus dans la semaine.

Avec des packages aussi récents, on suit leurs évolutions de près et on garde chaque solution provisoire à un endroit d’où elle se retire facilement.

Les résultats

L’application a été livrée quatorze semaines après le démarrage, à la date que la FNTP avait fixée au cadrage. Un chargé de mission peut y partir d’une question sur la sinistralité et arriver à un article publié, avec son tableau, son analyse et son graphique, sans solliciter un analyste ni un webmaster, ce qui était la demande de départ.

Neuf mois plus tard, Damien nous confirmait que la Fédération s’en servait toujours.

Vous voulez intégrer un agent IA dans une application métier, ou outiller une chaîne de travail de bout en bout ? Écrivez-nous.

Commentaires

Laisser un commentaire

Les champs obligatoires sont marqués d'un astérisque *

Markdown accepté

Les commentaires sont validés manuellement.
La page va se rafraîchir après envoi.