Aller au contenu

Analyser un article avec l'IA (Claude)

Vous êtes administrateur·ice d'une instance Kirexo et vous voulez obtenir, sur un article publié, une analyse générée par l'IA depuis le panneau « Analyse de conformité » : un résumé, les thèmes principaux et une grille de conformité à la loi française. Ce guide explique comment la déclencher et lire le rapport. Pour le parcours d'accès aux écrans admin (dashboard cockpit → détail), voir Consulter et analyser la conformité d'un article publié.

Prérequis

  • Un compte porteur de ROLE_ADMIN, connecté·e à l'espace d'administration (/admin/login). Si ce n'est pas le cas, commencez par vous connecter.
  • Une clé API Claude configurée. Sans elle, l'analyse est désactivée. La procédure complète (génération de la clé de chiffrement puis saisie de la clé) est décrite dans Configurer la clé API Claude pour l'analyse IA.
  • En développement uniquement : un worker Messenger qui consomme le transport async (voir Déclencher l'analyse ci-dessous).

Seuls les articles publiés sont analysables

L'espace admin liste et détaille uniquement les articles publiés, sans aucune capacité de rédaction ni de publication. L'analyse ne porte donc que sur le contenu public d'un article. Cette restriction est portée par le ArticleVoter (« Admin ≠ publication »). Voir Espaces utilisateur et admin.

Déclencher l'analyse

  1. Ouvrez la page de détail d'un article publié : /admin/articles/{id} (route app_admin_article_show). Vous y accédez depuis la liste des articles publiés intégrée au dashboard admin — voir Consulter et analyser la conformité d'un article publié.
  2. Dans le panneau « Analyse de conformité », cliquez sur le bouton « Analyser la conformité ».

Bouton désactivé tant qu'aucune clé n'est configurée

Le bouton « Analyser la conformité » est désactivé tant qu'aucune clé API Claude n'est configurée, avec le message :

Configurez la clé API Claude dans les Réglages pour activer l'analyse.

Suivez alors Configurer la clé API Claude pour l'analyse IA. Une fois la clé enregistrée, le bouton devient actif.

Après le clic, la page se recharge (motif Post/Redirect/Get) avec le message :

Analyse lancée — le rapport apparaîtra dans quelques instants.

L'analyse est asynchrone

L'appel à Claude est lent (requête réseau vers l'API Anthropic) : il n'a pas lieu pendant votre requête HTTP. Le clic dispatche un message App\Message\AnalyzeArticle sur le bus Messenger, routé vers le transport async qui pointe sur RabbitMQ (config/packages/messenger.yaml). Le rapport n'apparaît donc pas immédiatement : il faut qu'un worker consomme la file, puis recharger la page.

En développement, lancez un worker

En dev, aucun worker n'est lancé automatiquement : tant que rien ne consomme la file async, le message reste en attente dans RabbitMQ et aucune analyse n'est produite. Laissez un worker tourner dans un terminal dédié :

castor messenger:consume

La mécanique (transport async, diagnostic d'une file en attente, gotcha du worker long) est la même que pour les e-mails : voir Recevoir les e-mails en développement. En test, le transport est sync:// : l'analyse s'exécute en ligne, sans worker.

Une fois le message consommé, rechargez /admin/articles/{id} : le rapport s'affiche.

Lire le rapport

Le rapport apparaît sous le bouton et comporte :

  • Résumé — une synthèse de l'article en quelques phrases.
  • Thèmes — la liste des sujets principaux détectés.
  • Grille de conformité à la loi française — un tableau d'exactement 5 lignes, une par catégorie de risque juridique :

    Catégorie Ce qu'elle couvre
    Diffamation Propos portant atteinte à l'honneur ou à la considération d'une personne.
    Incitation à la haine Propos appelant à la haine ou à la discrimination.
    Contrefaçon / droit d'auteur Reproduction d'une œuvre protégée sans autorisation.
    Données personnelles Exposition de données personnelles identifiantes.
    Contenus illicites Autres contenus prohibés par la loi.

Chaque ligne porte :

  • un niveau parmi Aucun, Faible, À vérifier ou Élevé ;
  • un extrait verbatim court du passage concerné (vide si non applicable) ;
  • une justification du niveau attribué.

L'analyse est indicative — ce n'est pas un avis juridique

La grille de conformité est générée par une IA à titre indicatif. Elle ne constitue pas un avis juridique et ne remplace pas l'appréciation d'un·e professionnel·le du droit. Un niveau « Aucun » ne garantit pas la conformité, et un niveau « Élevé » n'établit pas une infraction : ce sont des signaux à vérifier, pas des verdicts.

Modèle utilisé

L'analyse est confiée à Claude Opus (claude-opus-4-8) d'Anthropic, via le composant symfony/ai.

Ré-analyser un article

Pour rafraîchir le rapport (par exemple après avoir modifié votre prompt système ou simplement pour relancer l'analyse), cliquez de nouveau sur le bouton — intitulé « Relancer l'analyse » dès qu'un rapport existe. La nouvelle analyse remplace la précédente : il n'y a jamais deux rapports pour un même article, pas de doublon.

En cas de problème

  • Le rapport n'apparaît pas après plusieurs minutes (dev). Aucun worker ne consomme probablement la file. Vérifiez avec castor console "messenger:stats async" : un Count supérieur à 0 sur la ligne async signale des messages en attente. Lancez un worker (castor messenger:consume). Voir Recevoir les e-mails en développement.
  • Le bouton reste grisé après avoir saisi la clé. Vérifiez que la clé de chiffrement a bien été générée dans le bon environnement. Voir la section dédiée de Configurer la clé API Claude pour l'analyse IA.
  • Erreur 403/404 sur la page d'un article. L'accès admin est réservé à ROLE_ADMIN, et seuls les articles publiés y sont visibles. Voir Architecture des firewalls.

Voir aussi