Projet

AGI Newsletter personnelle multi-thématique

Une veille automatisée pilotée par l'IA

  • Capable de collecter automatiquement des actualités provenant de sources hétérogènes,
  • De les analyser et les synthétiser grâce à différents modèles de langage
  • Les distribuer au travers d'une newsletter structurée dans Telegram.

L'objectif est de construire un système de veille technologique extensible, capable de s'adapter à plusieurs thématiques. Cloud, Devops, IA, GitHub, Business, Europe etc.

Ceci me faisant gagner un temps considérable de recherche et m'assurant une routine de veille quotidienne.

Sans devoir réécrire le pipeline à chaque nouvelle thématique. Le système fonctionne aujourd'hui en local et compte plusieurs thématiques fonctionnelles et testées.

Mes choix concernant la version de l'agent IA

J'ai pondéré entre deux versions pour à la fois avoir une qualité optimale sans payer de surcoût inutile pour une version surdimensionnée par rapport à ce projet.
Mon choix s'est orienté vers Claude Haiku 4.5.

Critère Claude Sonnet 5 Claude Haiku 4.5
Prix input $2 / MTok $1 / MTok
Prix output $10 / MTok $5 / MTok
Vitesse Correcte Nettement plus rapide
Qualité de synthèse/raisonnement Meilleure lecture stratégique, nuances, ton éditorial plus fin Bonne pour du factuel structuré, moins de nuance sur l'angle "avis perso"
Qualité de traduction EN→FR Plus fiable sur du vocabulaire technique/nuancé Correcte mais peut lisser certaines subtilités
Rapport qualité/prix pour mon usage environ $0.016 à $0.03 par envoi environ $0.008 à $0.015 par envoi

Mes choix d'architecture

J'ai volontairement séparé le projet en plusieurs briques indépendantes :

Un pipeline centralisé

Pour orchestrer la collecte, l'analyse et la diffusion.

Une configuration par thématique

Afin d'ajouter une nouvelle veille principalement par configuration plutôt que par développement.

Une abstraction multi-LLM

Permettant de choisir Anthropic, OpenAI ou OpenRouter selon la thématique et le besoin.

Un système de stockage et de dédoublonnage

Pour éviter de republier plusieurs fois les mêmes informations.

Un système de monitoring

Permettant de vérifier automatiquement l'état des sources.

Un canal Telegram organisé par Topics

Utilisé comme interface de restitution.

Les points clés du projet

La conception d'une architecture extensible

Le but a été d'isoler les responsabilités principales :

Architecture AGI Newsletter

Le scheduler déclenche les traitements, le pipeline orchestre les différentes étapes, les scrapers récupèrent les données, le LLM les analyse et les structure, puis Telegram assure la diffusion.

Cette séparation permet notamment de faire évoluer une brique sans remettre en cause l'ensemble du système.

Le pipeline de traitement

Le pipeline constitue le cœur du projet.

Pour chaque thématique, il réalise successivement :

  1. CollecteRécupération des nouvelles informations et filtrage des doublons.
  2. Analyse par le LLMConstruction du contexte envoyé au modèle et analyse des différents items.
  3. StructurationLe LLM retourne une structure JSON stricte avec notamment un score, du contexte, des faits et une opinion.
  4. Mise en formeLe pipeline transforme cette structure en digest lisible.
  5. DiffusionLe résultat est envoyé dans le Topic Telegram correspondant puis enregistré dans l'historique.

Mise en place de l'abstraction multi-LLM

Plutôt que de dépendre d'un seul fournisseur, j'ai créé une abstraction commune autour des modèles de langage.

Le système utilise un pattern Adapter avec une interface LLMProvider, implémentée pour Anthropic, OpenAI et OpenRouter.

Le choix du provider, du modèle et de la température se fait directement dans la configuration de chaque thématique.

Cela permet par exemple d'utiliser un modèle plus performant sur une veille prioritaire et un modèle moins coûteux ailleurs, sans modifier le pipeline.

Rendre les thématiques configurables

Une décision structurante du projet a été de déplacer au maximum la logique spécifique dans la configuration.

Chaque thématique possède notamment :

  • config.yaml → sources, filtres, modèle, horaire, limites
  • prompt.md → angle éditorial, ton et structure attendue

Le résultat : ajouter une nouvelle thématique ne nécessite aucune nouvelle ligne de code. Il suffit de créer sa configuration et son prompt, sauf lorsqu'un nouveau type de source doit être pris en charge par le scraper.

Le dédoublonnage et l'historique

Pour éviter qu'une même actualité soit envoyée plusieurs fois, j'ai intégré SQLite au pipeline.

Les éléments envoyés sont enregistrés avec un hash SHA256 basé sur le titre et l'URL, avec une fenêtre de dédoublonnage configurable, 7 jours par défaut.

La base sert également à conserver l'historique des exécutions.

La couche de diffusion Telegram

Telegram sert de couche de restitution.

Chaque thématique possède son propre Topic dans un supergroupe, ce qui permet de séparer les différents flux sans multiplier les bots.

J'ai également géré une contrainte technique importante : Telegram limite la taille des messages. Le système découpe donc automatiquement les messages dépassant 4096 caractères et les route vers le bon Topic.

Ajout d'un système de monitoring

Un système de health check a ensuite été ajouté pour éviter qu'une source défaillante passe inaperçue.

Chaque semaine, le système teste les sources de toutes les thématiques et génère un rapport indiquant les sources fonctionnelles ou en erreur.

Cela permet de distinguer un problème provenant du pipeline d'un problème provenant directement d'une source externe.