Lección 1 — Le cas d'usage et l'architecture

La veille avec un agent : signaux, sources, architecture

5 min de lectura

Este contenido aún no está traducido. Se muestra la versión original.

La veille avec un agent : signaux, sources, architecture

Du bruit aux signaux

Une recherche « OVHcloud actualités » renvoie des dizaines de pages. La veille ne retient que des signaux : des faits datés qui peuvent changer une décision.

CatégorieExemple de signalPourquoi il compte
prixnouvelle grille tarifaire, hausse d'une optionvotre offre devient plus ou moins compétitive
lancementnouveau produit, nouvelle régionun concurrent entre sur votre marché
recrutementcampagne d'embauches sur un métier précisindice d'un investissement à venir
partenariataccord avec un fournisseur ou un client majeurchangement de rapport de force
autreincident, résultat financier, événementcontexte utile, à trier

Chaque signal enregistré par l'agent a la même structure : concurrent, categorie, resume (une phrase), date, sources (identifiants de pages web).

Une synthèse sans source ne vaut rien

Un modèle de langage peut écrire une phrase plausible et fausse : une hallucination. En veille, c'est grave : une fausse baisse de prix d'un concurrent peut déclencher une mauvaise décision. D'où trois règles de conception :

  1. La recherche passe par Google Search et le modèle répond ancré (grounded) : l'API renvoie, en plus du texte, la liste des pages utilisées (grounding_chunks) et quels passages du texte s'appuient sur quelles pages (grounding_supports).
  2. Les URL du rapport viennent de ces métadonnées, jamais du texte écrit par le modèle.
  3. Un signal sans source valide est refusé par l'outil enregistrer_signal.

Le modèle écrit dans sa réponse « source : https://exemple.com/annonce ». Pourquoi le rapport n'utilise-t-il pas cette URL ?

L'architecture à deux agents

L'outil google_search d'ADK est un outil intégré au modèle (la recherche est exécutée côté Google, pas par votre code). Le code source d'ADK 2.10 le rappelle : les outils intégrés ne peuvent pas être utilisés en même temps que d'autres outils dans le même agent. Or le veilleur a besoin de la recherche et de enregistrer_signal. La solution : un sous-agent dédié, appelé comme un outil grâce à AgentTool.

sequenceDiagram
  participant V as veilleur
  participant T as AgentTool(chercheur_web)
  participant C as chercheur_web
  participant G as Google Search
  participant CB as after_tool_callback
  V->>T: chercheur_web(request="Scaleway actualités ...")
  T->>C: nouvelle exécution du sous-agent
  C->>G: recherche (côté Gemini)
  G-->>C: texte + grounding_metadata
  C-->>T: texte, et métadonnées dans temp:_adk_grounding_metadata
  T-->>CB: résultat texte
  CB-->>V: faits_sources + sources numérotées
  V->>V: enregistrer_signal(..., source_ids=[4, 5])
ComposantRôleOutils
chercheur_webune recherche, des faits datésgoogle_search uniquement
veilleurorchestrer les recherches, choisir les signauxAgentTool(chercheur_web), enregistrer_signal
ajouter_sources (callback)transformer les métadonnées en sources numérotéesaucun, c'est du code
rediger_rapportmettre en forme le Markdownaucun, c'est du code

Pourquoi ne pas mettre google_search et enregistrer_signal dans le même agent ?

Exercice : adapter la veille à votre secteur

Rédigez le concurrents.json d'une veille sur trois éditeurs de logiciels de paie, et proposez une sixième catégorie de signal pertinente pour ce secteur.

Voir la solution
{
  "secteur": "logiciels de paie pour PME",
  "concurrents": ["Éditeur A", "Éditeur B", "Éditeur C"],
  "jours": 7
}

Remplacez les noms par les vrais concurrents que vous suivez. Catégorie supplémentaire pertinente : réglementaire (mise à jour liée à une nouvelle loi, certification obtenue). Il faut l'ajouter à la fois dans le Literal du paramètre categorie de enregistrer_signal et dans CATEGORIES (ordre des sections du rapport).

Résultat obtenu

Début de la trace réelle du 2026-10-15 : le veilleur lance une recherche par concurrent, puis enregistre les signaux en citant des sources précises.

   [outil] chercheur_web {"request": "OVHcloud actualités octobre 2026 08-15 octobre 2026"}
   [outil] chercheur_web {"request": "Scaleway actualités octobre 2026 08-15 octobre 2026"}
   [outil] chercheur_web {"request": "Hetzner actualités octobre 2026 08-15 octobre 2026"}
   [outil] chercheur_web {"request": "OVHcloud annonce 8 octobre 2026 15 octobre 2026"}
   [outil] enregistrer_signal {"source_ids": [1, 2, 3], "concurrent": "Scaleway", "categorie": "partenariat", ...
   [outil] enregistrer_signal {"date_signal": "2026-10-13", "source_ids": [4, 5], "concurrent": "Scaleway", ...

Je sais faire

  • Définir les catégories de signaux d'une veille
  • Expliquer pourquoi les sources doivent venir des métadonnées d'ancrage
  • Justifier l'architecture veilleur + sous-agent de recherche
Siguiente