Agents de sondage dans les assistants IA : 11 modèles de mise en œuvre

Des modèles de sondage fiables pour les agents IA.

Sommaire

Les agents de sondage (polling agents) font partie des aspects les moins glamour de l’architecture des assistants IA, mais ils sont aussi parmi les plus utiles.

Un assistant de chat classique attend que l’utilisateur pose une question. Un agent de sondage reste vigilant. Il vérifie une source, détecte les changements, décide s’il y a quelque chose d’important, puis agit. Cette action peut être une notification, un résumé, un brouillon, un appel d’outil ou un workflow complet.

C’est ainsi qu’un assistant passe de « réponds à ma question » à « surveille cela pour moi ». Au lieu d’être réactif, il devient un processus en arrière-plan qui remarque les choses au nom de l’utilisateur et agit lorsque les conditions sont remplies.

Agent IA surveillant des flux de données à une console de contrôle futuriste

Le point de conception important est simple : ne pas rendre le modèle de langage responsable du temps, de l’état, des tentatives ou du verrouillage. Utilisez l’infrastructure backend normale pour cela. Utilisez le modèle là où il apporte de la valeur : interpréter un contexte complexe, prendre des jugements sémantiques et produire un langage utile.

Qu’est-ce qu’un agent de sondage ?

Un agent de sondage est un processus en arrière-plan qui vérifie régulièrement une source et déclenche une action de l’assistant lorsqu’une condition est remplie. Dans la pile plus large des Systèmes IA — où l’assistant combine un LLM, la mémoire, les outils, le routage et l’observabilité — la couche de sondage est ce qui rend l’assistant proactif plutôt que purement réactif. Pour une vue complète de ces cinq couches, consultez Architecture des assistants IA : LLM, Mémoire, Outils, Routage, Observabilité.

Exemples :

  • Vérifier une boîte de réception chaque matin et résumer les messages importants.
  • Surveiller une liste de tâches Notion et exécuter la prochaine tâche à faire.
  • Surveiller un problème GitHub jusqu’à ce qu’il change de statut.
  • Sonder un travail IA de longue durée jusqu’à ce que le résultat soit prêt.
  • Vérifier un créneau de réservation jusqu’à ce qu’un créneau soit disponible.
  • Surveiller un portail fournisseur jusqu’à ce qu’un document apparaisse.
  • Scanner de nouveaux articles de recherche chaque semaine et résumer ceux qui sont pertinents.

Un agent de sondage pratique a cinq responsabilités :

  1. Se réveiller au bon moment.
  2. Lire depuis la source.
  3. Se souvenir de ce qu’il a déjà vu.
  4. Décider si le nouvel état est important.
  5. Agir une fois, en toute sécurité, sans se répéter.

Un flux de production typique ressemble à ceci :

planificateur
  -> travailleur de sondage
  -> système source
  -> magasin d'état
  -> filtres déterministes
  -> évaluation LLM optionnelle
  -> action de l'assistant

Cette structure est ennuyeuse de la meilleure manière possible. Les systèmes ennuyeux sont plus faciles à déboguer à 2 heures du matin.

L’état dont chaque agent de sondage a besoin

Les agents de sondage ont besoin d’un état durable. L’historique de la conversation ne suffit pas. L’assistant peut se souvenir de la conversation, mais le système a besoin d’un registre opérationnel fiable.

Un bon enregistrement d’état de sondage contient généralement :

{
  "poll_id": "poll_123",
  "user_id": "user_456",
  "source_type": "notion",
  "source_ref": "database_tasks",
  "condition": "prendre une tâche en état Todo et l'exécuter",
  "interval_seconds": 600,
  "last_run_at": "2026-06-19T01:00:00Z",
  "next_run_at": "2026-06-19T01:10:00Z",
  "last_seen_cursor": "curseur_ou_timestamp",
  "last_result_hash": "b64e8a...",
  "failure_count": 0,
  "status": "actif"
}

Le schéma exact dépend de la source, mais la plupart des systèmes ont besoin de ces concepts.

Définition du sondage

Cela décrit ce que l’agent surveille et pourquoi.

poll_id
user_id
workspace_id
source_type
source_ref
condition_text
priorité
statut

Par exemple :

source_type: notion
source_ref: base de données Tâches
condition_text: Trouver une tâche Todo, la prendre en charge, l'exécuter, la marquer comme Terminée.

Planification

Cela décrit quand l’agent doit s’exécuter.

interval_seconds
expression_cron
fuseau_horaire
last_run_at
next_run_at
jitter

Pour un agent Hermes qui vérifie Notion toutes les 10 minutes :

interval_seconds: 600
fuseau_horaire: Australia/Melbourne

Curseur ou instantané

Cela aide l’agent à éviter de retraiter les mêmes données.

Selon la source, cela peut être :

last_seen_id
last_seen_timestamp
api_cursor
etag
version
content_hash

Pour une file d’attente de tâches Notion, le curseur peut être moins important que le statut de la tâche et les champs de prise en charge. Pour Gmail, GitHub ou une API de synchronisation, le curseur est généralement critique.

Réclamation ou bail

Cela empêche deux travailleurs de prendre le même travail.

claimed_by
claimed_at
claim_expires_at
run_id

Par exemple, une tâche Notion peut être modifiée de :

Statut: Todo

à :

Statut: InProgress
ClaimedBy: hermes
ClaimedAt: 2026-06-19T01:00:00Z
ClaimExpiresAt: 2026-06-19T01:30:00Z
RunId: run_789

C’est la différence entre « j’espère qu’un seul travailleur le prend » et « le système a un protocole de réclamation ».

Enregistrement d’exécution

Cela enregistre ce qui s’est passé pendant une exécution.

run_id
poll_id
source_object_id
started_at
finished_at
statut
items_checked
items_changed
decision_summary
error

L’enregistrement d’exécution doit vivre dans le backend de l’assistant, pas seulement dans Notion ou un autre outil externe. Notion est excellent pour la visibilité humaine. Ce n’est pas idéal comme seul journal d’exécution.

Enregistrement de déduplication

Cela empêche les notifications en double ou les actions répétées.

dedupe_key
poll_id
source_object_id
condition_version
action_type
delivered_at

Par exemple :

user_456:poll_123:notion_page_999:execute:v1

Si la même action est tentée à nouveau, le système peut la supprimer.

Méthode 1 : Travailleur de sondage planifié

C’est le modèle le plus simple et le plus fiable.

Un planificateur se réveille à intervalles fixes et appelle un travailleur. Le travailleur lit la source, met à jour l’état et déclenche une action de l’assistant si nécessaire.

planificateur
  -> travailleur
  -> API source
  -> base de données
  -> action de l'assistant

Comment il s’exécute

Le planificateur est responsable du temps. Cela peut être cron, un planificateur cloud, un CronJob Kubernetes ou un petit planificateur interne.

À chaque intervalle, il démarre une exécution de travailleur. Le travailleur charge sa configuration, interroge la source cible, compare le résultat avec l’état stocké et agit si nécessaire.

Pour un assistant simple, cela suffit souvent. Un seul planificateur et un processus de travailleur léger peuvent gérer des dizaines de vérifications quotidiennes sans nécessiter de files d’attente, de baux ou de coordination distribuée.

Modèle d’état

Le planificateur stocke très peu. En général, il ne sait que quand déclencher un travail.

La base de données de l’application stocke l’état important :

définition du sondage
planification
curseur ou instantané
dernière heure d'exécution
compteur d'échecs
statut

Le travailleur doit être sans état. Il peut contenir des données temporaires pendant l’exécution, mais la vérité durable appartient à la base de données.

Flux d’exemple

Toutes les 10 minutes :
  déclencher le travailleur de sondage Hermes

Travailleur :
  charger la configuration du sondage actif
  interroger la source
  comparer avec l'état précédent
  exécuter les vérifications déterministes
  appeler le LLM seulement si nécessaire
  mettre à jour l'état
  émettre un événement de l'assistant

Meilleur usage

Utilisez les travailleurs de sondage planifiés pour :

  • Résumés quotidiens.
  • Vérifications horaires.
  • Petites automatisations internes.
  • Tâches simples de type « surveiller ceci ».
  • Travaux d’assistant à faible ou moyenne volumétrie.

Faiblesses

Le sondage planifié est facile à comprendre, mais il peut devenir fragile à grande échelle. Si de nombreux sondages s’exécutent simultanément, vous pouvez surcharger vos travailleurs ou atteindre les limites de taux du fournisseur. Les tentatives peuvent également devenir désordonnées si le planificateur démarre directement le travail.

Méthode 2 : Travailleurs de sondage basés sur une file d’attente

Le sondage basé sur une file d’attente est généralement le meilleur choix par défaut pour les assistants IA de production.

Le planificateur n’exécute pas le sondage directement. Il met un travail dans une file d’attente. Les processus travailleurs consomment les travaux de la file d’attente.

planificateur
  -> file d'attente
  -> pool de travailleurs
  -> API source
  -> magasin d'état
  -> action de l'assistant

Comment il s’exécute

Un planificateur scanne les sondages échéants et met en file d’attente les travaux. Les travailleurs tirent les travaux lorsqu’ils ont de la capacité.

Cela vous donne une contre-pression. Si le système est occupé, les travaux attendent dans la file d’attente au lieu de submerger l’API source ou le fournisseur LLM.

Modèle d’état

La base de données stocke l’état du sondage :

poll_id
user_id
source_ref
condition_text
next_run_at
curseur
statut
failure_count

Le message de la file d’attente doit rester petit :

{
  "poll_id": "poll_123",
  "scheduled_for": "2026-06-19T01:10:00Z",
  "attempt": 1
}

Le travailleur charge l’état complet depuis la base de données lorsqu’il démarre.

Flux d’exemple

Toutes les minutes :
  le planificateur trouve les sondages où next_run_at <= maintenant
  le planificateur met les travaux en file d'attente

Travailleurs :
  tirer les travaux de la file d'attente
  verrouiller ou louer le sondage
  interroger la source
  mettre à jour l'état
  émettre une action de l'assistant si nécessaire
  définir next_run_at

Meilleur usage

Utilisez le sondage basé sur une file d’attente pour :

  • Assistants IA multi-utilisateurs.
  • De nombreux sondages simultanés.
  • Intégrations avec des limites de taux.
  • Travaux en arrière-plan réessayables.
  • Travaux qui peuvent prendre des durées différentes.
  • Produits SaaS où la fiabilité est importante.

Faiblesses

Les files d’attente ajoutent de l’infrastructure. Vous avez besoin de gestion des lettres mortes, d’idempotence, de délais de visibilité et de politiques de réessai. Cela vaut la peine pour les systèmes de production, mais probablement excessif pour un petit prototype.

Méthode 3 : Outil externe comme file d’attente de tâches

C’est le modèle de l’exemple Notion plus Hermes.

L’outil externe n’est pas seulement une source de données. Il devient la file d’attente de tâches visible par l’humain. L’agent vérifie périodiquement l’outil, prend une tâche, l’exécute et met à jour le statut de la tâche.

planificateur
  -> travailleur Hermes
  -> base de données Notion
  -> prendre une tâche
  -> exécuter la tâche
  -> mettre à jour le statut Notion

Comment il s’exécute

Toutes les 10 minutes, Hermes interroge la base de données Notion pour une tâche en état Todo. Il choisit la prochaine tâche, généralement par priorité et heure de création. Ensuite, il prend la tâche en charge en la passant à InProgress.

Après cela, Hermes exécute la tâche. Si l’exécution réussit, il marque la tâche comme Complete. Si l’exécution échoue, il marque la tâche comme Failed ou la retourne à Todo avec un compteur de réessai.

Modèle d’état

Notion stocke l’état de la tâche visible par l’humain :

Titre
Description
Statut: Todo | InProgress | Complete | Failed
Priorité
CreatedAt
ClaimedBy
ClaimedAt
ClaimExpiresAt
RunId
RetryCount
LastError
CompletedAt

Le backend Hermes stocke l’état d’exécution opérationnel :

run_id
notion_page_id
started_at
finished_at
execution_status
tool_calls
trace LLM
détails de l'erreur
idempotency_key

Cette séparation est importante. Notion est excellent pour la visibilité et l’édition manuelle. Le backend Hermes est meilleur pour les journaux, les réessais, la déduplication et l’historique d’audit.

Flux d’exemple

Toutes les 10 minutes :
  Hermes se réveille

Hermes :
  interroger Notion pour une tâche où Statut = Todo
  trier par Priorité, CreatedAt
  mettre à jour la tâche sélectionnée à InProgress
  définir ClaimedBy, ClaimedAt, ClaimExpiresAt, RunId
  exécuter la tâche
  écrire le journal d'exécution
  définir la tâche à Complete ou Failed

Meilleur usage

Utilisez ce modèle lorsque :

  • Les humains gèrent déjà le travail dans Notion, Jira, Linear, Trello ou un autre outil.
  • Vous voulez que l’assistant traite des tâches visibles.
  • Le tableau de tâches est l’interface utilisateur.
  • Vous avez besoin d’un modèle d’automatisation simple avec intervention humaine.

Faiblesses

Les outils externes sont rarement des files d’attente parfaites. Les réclamations atomiques peuvent être limitées. La cohérence des requêtes peut être en retard. Des limites de taux peuvent s’appliquer. Si l’agent peut s’exécuter sur plusieurs instances, vous avez besoin d’une stratégie de réclamation ou de bail soigneuse.

La recommandation pratique est d’utiliser Notion comme boîte de réception de tâches visible par l’humain tout en conservant tous les journaux d’exécution, les enregistrements de réessai, les traces et les clés d’idempotence dans Hermes. Notion donne aux utilisateurs une visibilité ; Hermes maintient le système fiable. Pour le répartiteur et les mécaniques de concurrence qui se trouvent derrière ce modèle dans Hermes, consultez Kanban dans l’agent Hermes pour les workflows LLM auto-hébergés.

Méthode 4 : Boucle de travail longue

Une boucle longue est l’implémentation la plus simple.

while True:
    due_polls = db.find_due_polls()
    for poll in due_polls:
        run_poll(poll)
    sleep(30)

Ce modèle combine la planification et l’exécution dans un seul service, ce qui en fait le point de départ le plus simple possible pour le travail d’agent en arrière-plan.

Comment il s’exécute

Le processus travailleur s’exécute continuellement. Toutes les quelques secondes ou minutes, il vérifie la base de données pour les sondages échéants et les exécute. C’est facile à construire, facile à raisonner et rapide à itérer pendant le développement.

Modèle d’état

La base de données stocke toujours un état durable :

configuration du sondage
next_run_at
curseur
dernier résultat
compteur d'échecs
statut

La mémoire du processus ne doit contenir que des états temporaires :

lot actuel
cache court terme
exécution en cours

Ne stockez jamais un progrès important uniquement en mémoire. Si le processus plante, tout état qui n’a pas été écrit dans le stockage durable est perdu, et l’exécution suivante n’aura aucun moyen de savoir où les choses se sont arrêtées.

Meilleur usage

Utilisez les boucles longues pour :

  • Prototypes.
  • Développement local.
  • Outils internes.
  • Systèmes mono-locataire.
  • Agents à faible volumétrie.

Faiblesses

Ce modèle devient risqué avec plusieurs réplicas. Sans baux, deux travailleurs peuvent exécuter le même sondage. Il manque également les fonctionnalités opérationnelles d’une vraie file d’attente ou d’un moteur de workflow.

Une boucle longue n’est pas fausse comme point de départ, mais ce n’est pas un planificateur distribué et ne doit pas être traité comme tel. Dès que vous avez besoin de plusieurs réplicas ou de garanties de fiabilité plus fortes, vous devrez passer à l’un des modèles plus structurés ci-dessus.

Méthode 5 : Webhook d’abord avec sondage de secours

Si la source prend en charge les webhooks, utilisez-les. Le sondage devrait souvent être le mécanisme de secours, pas le mécanisme principal. La même séparation apparaît dans la conception du protocole d’agent : les notifications push A2A réveillent un gestionnaire client, qui sonde ensuite GetTask pour l’état complet, comme décrit dans Streaming A2A et tâches asynchrones pour les workflows d’agents de longue durée.

système externe
  -> point de terminaison webhook
  -> magasin d'événements
  -> action de l'assistant

sondage de réconciliation
  -> API source
  -> comparer avec le magasin d'événements
  -> réparer les événements manqués

Comment il s’exécute

Le système externe envoie des événements à votre point de terminaison webhook lorsque quelque chose change. Votre système stocke l’événement et le traite de manière asynchrone.

Un sondage de réconciliation plus lent s’exécute toutes les quelques heures ou une fois par jour. Il vérifie si des événements ont été manqués.

Modèle d’état

Le magasin d’événements enregistre les webhooks entrants :

event_id
source_type
source_object_id
event_type
received_at
payload_hash
processed_at
signature_valid

Le sondage de réconciliation stocke :

last_reconciliation_at
last_seen_cursor
last_seen_version

Le tableau d’objets source stocke le dernier état connu :

external_id
current_status
external_updated_at
last_processed_event_id

Meilleur usage

Utilisez l’architecture webhook d’abord pour :

  • Événements GitHub.
  • Événements Stripe.
  • Événements Slack.
  • Mises à jour CRM.
  • Notifications de déploiement.
  • Systèmes de ticketing.

Faiblesses

Les webhooks nécessitent un point de terminaison public, une validation de signature, une protection contre les rejoueurs et une déduplication d’événements. Certains fournisseurs envoient également des événements incomplets, vous devrez donc peut-être toujours récupérer l’objet complet.

Même ainsi, si de bons webhooks existent, sonder chaque minute est généralement gaspillé.

Méthode 6 : Sondage de travail en arrière-plan côté fournisseur

Parfois, la chose sondée est le travail IA lui-même.

L’application démarre un travail fournisseur de longue durée, stocke l’ID du travail et vérifie plus tard s’il est terminé.

application
  -> démarrer un travail IA en arrière-plan
  -> stocker l'ID du travail fournisseur
  -> sonder le statut
  -> récupérer le résultat
  -> notifier l'utilisateur

Comment il s’exécute

L’assistant démarre un travail avec le fournisseur. Le fournisseur retourne un ID. Votre backend stocke cet ID et vérifie son statut jusqu’à ce que le travail réussisse, échoue, expire ou dépasse le délai.

Modèle d’état

Votre backend stocke :

assistant_task_id
provider_job_id
user_id
statut
created_at
last_checked_at
expires_at
result_ref

Le fournisseur stocke l’état temporaire du travail et la sortie.

Si la sortie est importante, copiez-la dans votre propre stockage durable dès que le travail est terminé. Le stockage des résultats côté fournisseur a des fenêtres de rétention courtes et ne remplace pas une archive appropriée dans votre propre système.

Meilleur usage

Utilisez le sondage de travail en arrière-plan côté fournisseur pour :

  • Tâches de recherche IA de longue durée.
  • Traitement de gros documents.
  • Analyse de base de code.
  • Génération de rapports.
  • Travaux d’extraction de données.
  • Tâches qui dépassent les délais de requête HTTP normaux.

Faiblesses

Ce modèle résout un problème : attendre un travail fournisseur long. Il ne remplace pas votre moteur de workflow, planificateur, file d’attente ou magasin d’état métier.

Méthode 7 : Moteur de workflow durable

Un moteur de workflow durable gère l’exécution de longue durée, les minuteries, les réessais et la récupération. Temporal est le choix le plus courant pour les backends d’assistants basés sur Go et Python ; pour un guide d’implémentation complet, consultez Implémentation d’applications de workflow avec Temporal en Go.

Au lieu de câbler manuellement chaque attente et réessai, vous modélisez le processus comme un workflow.

moteur de workflow
  -> activité : vérifier la source
  -> minuterie : attendre
  -> activité : évaluer le résultat
  -> activité : notifier l'utilisateur

Comment il s’exécute

Le workflow démarre une fois et contrôle ensuite son propre temps d’attente. Il peut dormir pendant des minutes, des jours ou des semaines. Si le processus travailleur plante, le moteur de workflow peut reprendre à partir de l’état enregistré.

Modèle d’état

Le moteur de workflow stocke :

workflow_id
historique d'exécution
état de la minuterie
tentatives d'activité
politique de réessai
état actuel du workflow

Votre base de données d’application stocke :

définition de sondage visible par l'utilisateur
références d'autorisation
enregistrements métier
enregistrements de notification

Le moteur de workflow possède l’état du processus — historique d’exécution, minuteries, réessais et tentatives d’activité. Votre base de données possède l’état métier — configurations utilisateur, enregistrements d’autorisation, notifications et journaux d’audit. Garder ces éléments séparés empêche chaque couche de devenir un hybride confus des deux.

Meilleur usage

Utilisez des workflows durables pour :

  • Processus métier en plusieurs étapes.
  • Automatisations de longue durée.
  • Flux d’approbation humaine.
  • Réessais fiables.
  • Travaux en arrière-plan auditable.
  • Processus qui doivent reprendre après une défaillance.

Faiblesses

Les moteurs de workflow ajoutent des concepts et de l’infrastructure. Ils sont excellents lorsque le processus est important, mais lourds pour des vérifications horaires simples.

Méthode 8 : Runtime d’agent persistant

Certains frameworks d’agent peuvent persister l’état de l’agent, faire un point de contrôle de l’exécution et reprendre plus tard.

Cela est utile lorsque l’agent lui-même a un processus de raisonnement en plusieurs étapes.

planificateur ou workflow
  -> runtime de l'agent
  -> charger le point de contrôle
  -> appeler les outils
  -> sauvegarder le point de contrôle
  -> reprendre plus tard

Comment il s’exécute

Un planificateur externe ou un workflow démarre l’agent. Le runtime de l’agent charge l’état précédent, exécute l’étape suivante, appelle les outils si nécessaire et écrit un point de contrôle.

Le runtime de l’agent ne doit pas être votre seul planificateur. Il est mieux traité comme la couche de raisonnement à l’intérieur d’une architecture backend plus large.

Modèle d’état

Le stockage des points de contrôle de l’agent contient :

nœud actuel
messages
sorties d'outil
état de raisonnement intermédiaire
action en attente

La mémoire à long terme contient :

préférences utilisateur stables
faits
contexte du projet
références de source

L’état opérationnel appartient toujours ailleurs :

planification du sondage
curseur
statut
compteur de réessai
enregistrements de déduplication

Une règle utile : la mémoire n’est pas un curseur, et un point de contrôle n’est pas une file d’attente. La mémoire de l’agent stocke ce que le modèle sait ; l’état opérationnel suit où se trouve le processus et ce qu’il a fait. Confondre les deux conduit à des bugs subtils qui n’apparaissent qu’en cas de concurrence ou après un redémarrage. L’espace de conception complet pour la mémoire de travail, l’état durable et les couches de récupération est couvert dans Systèmes de mémoire dans les assistants IA.

Meilleur usage

Utilisez un runtime d’agent persistant pour :

  • Recherche en plusieurs étapes.
  • Agents qui se mettent en pause et reprennent.
  • Travail avec intervention humaine.
  • Raisonnement intensif en outils.
  • Tâches où le contexte s’accumule avec le temps.

Faiblesses

La persistance de l’agent n’est pas la même que la fiabilité opérationnelle. Vous avez toujours besoin de planification, de verrouillage, de réessais, de limites de taux et de journaux d’audit.

Méthode 9 : Synchronisation de base de données plus évaluation des changements

Dans ce modèle, le sondage est utilisé pour synchroniser des données externes dans votre propre base de données. L’assistant réagit ensuite aux changements de la base de données locale plutôt qu’à interroger directement les API externes à chaque cycle d’évaluation.

poller de synchronisation
  -> API externe
  -> base de données locale
  -> évaluateur de changement
  -> action de l'assistant

Cela sépare la synchronisation des données de l’intelligence de l’assistant. Le travailleur de synchronisation est responsable du maintien des enregistrements locaux à jour ; l’évaluateur est responsable de la décision sur ce qu’il faut faire face aux changements. Chaque couche peut être testée, surveillée et mise à l’échelle indépendamment.

Comment il s’exécute

Le travailleur de synchronisation récupère périodiquement les changements externes et écrit des enregistrements normalisés dans votre base de données. Un deuxième travailleur ou un flux de changements détecte les lignes mises à jour et décide si l’assistant doit agir.

Modèle d’état

Le tableau de synchronisation stocke :

external_id
source_type
raw_payload
normalized_fields
external_updated_at
synced_at
version
content_hash

L’état de synchronisation stocke :

source_cursor
last_sync_at
rate_limit_status
failure_count

Le tableau d’évaluation de l’assistant stocke :

object_id
evaluation_status
last_evaluated_hash
decision
notification_id

Meilleur usage

Utilisez ce modèle pour :

  • Synchronisation CRM.
  • Systèmes de ticketing.
  • Documents comptables.
  • Inventaire de produits.
  • Revue de conformité.
  • Indexation de recherche.
  • Tableaux de bord internes.

Faiblesses

Synchroniser tout peut être coûteux et inutile. Cela peut également créer des obligations de confidentialité et de rétention. Utilisez ce modèle lorsque les données locales ont une valeur au-delà d’une seule action de l’assistant.

Méthode 10 : Sondage adaptatif

Le sondage adaptatif change de fréquence en fonction de l’état, de l’urgence ou de l’activité récente.

objet actif : sonder toutes les 1 minute
objet en attente : sonder toutes les 1 heure
objet périmé : sonder une fois par jour
objet terminé : arrêter le sondage

Comment il s’exécute

Après chaque exécution, le travailleur décide quand la prochaine exécution doit avoir lieu.

Si l’objet a changé récemment, sondez plus tôt. Si rien n’a changé depuis longtemps, ralentissez. Si la tâche est terminée, arrêtez.

Modèle d’état

L’état du sondage inclut :

current_interval
minimum_interval
maximum_interval
backoff_policy
last_activity_at
priorité
stop_condition

L’instantané de la source inclut :

statut
updated_at
activity_level
expected_next_change

Meilleur usage

Utilisez le sondage adaptatif pour :

  • Statut de déploiement.
  • Suivi de livraison.
  • Disponibilité des créneaux calendaires.
  • Surveillance des prix.
  • Travaux de build.
  • Tâches de fournisseur de longue durée.
  • Toute source avec des mises à jour bursty.

Faiblesses

Le sondage adaptatif peut être plus difficile à raisonner. Si une tâche doit s’exécuter à une heure stricte, gardez-la stricte. Ne rendez pas les tâches de conformité intelligentes.

Méthode 11 : Sondage sémantique avec un évaluateur LLM

Le sondage sémantique est utilisé lorsque la condition est floue.

Le code peut répondre à :

Le statut est-il égal à Terminé ?
Le prix est-il inférieur à 100 ?
Y a-t-il un nouveau message ?

Un LLM peut aider à répondre à :

Cet e-mail semble-t-il urgent ?
Ce client est-il susceptible d'être mécontent ?
Cet article de recherche est-il pertinent ?
Ce changement nécessite-t-il mon attention ?

Comment il s’exécute

Le travailleur applique d’abord des filtres déterministes peu coûteux. Seuls les éléments candidats vont au LLM.

nouvel élément ?
correspond aux filtres de source ?
pas déjà traité ?
pas manifestement non pertinent ?

Ensuite, le LLM évalue l’ensemble candidat plus petit et retourne une sortie structurée.

{
  "should_notify": true,
  "urgency": "high",
  "reason": "Le client signale une panne de production."
}

Modèle d’état

La définition du sondage stocke :

semantic_condition
examples
negative_examples
user_preference_summary
model_config

Le journal d’évaluation stocke :

input_reference
model
prompt_version
structured_output
confidence
cost
latency

L’état du sondage stocke :

last_seen_ids
last_evaluated_hashes
last_decision
last_decision_reason

Meilleur usage

Utilisez le sondage sémantique pour :

  • Détection d’e-mails importants.
  • Surveillance du sentiment client.
  • Alertes de recherche.
  • Détection d’opportunités de vente.
  • Triage de sécurité.
  • Briefings exécutifs.

Faiblesses

Les appels LLM coûtent de l’argent et ajoutent de la latence. Ils peuvent également être incohérents si les invites et les schémas sont lâches. Utilisez d’abord des filtres déterministes. Demandez au modèle uniquement lorsque le jugement est vraiment nécessaire.

Tableau de décision : Choisir une méthode d’agent de sondage

Méthode Meilleure Application Avantages Inconvénients
Travailleur de sondage planifié Tâches récurrentes simples de l’assistant Facile à construire, facile à déboguer, infrastructure minimale Mise à l’échelle limitée, réessais basiques, peut surcharger les travailleurs si de nombreux sondages se déclenchent ensemble
Travailleurs de sondage basés sur une file d’attente Assistants SaaS de production avec de nombreux utilisateurs Évolutif, résilient, prend en charge les réessais et la contre-pression Nécessite une infrastructure de file d’attente, l’idempotence, la gestion des lettres mortes
Outil externe comme file d’attente Exécution de tâches basée sur Notion, Jira, Linear, Trello conviviale pour l’humain, facile à inspecter, fonctionne avec les workflows existants Les outils externes ne sont pas des files d’attente parfaites, la réclamation atomique peut être difficile
Boucle de travail longue Prototypes et outils internes Très simple, rapide à implémenter, peu de pièces mobiles Fiabilité faible, comportement médiocre avec plusieurs réplicas, contrôle opérationnel limité
Webhook d’abord avec sondage de secours Intégrations pilotées par événements Réaction rapide, moins d’appels API, la réconciliation attrape les événements manqués Nécessite un point de terminaison public, validation d’événements, déduplication, support des webhooks du fournisseur
Sondage de travail en arrière-plan côté fournisseur Travaux IA de fournisseur de longue durée Gère les tâches IA lentes, modèle de statut simple, bon pour l’UX asynchrone Ne gère que le statut du travail du fournisseur, pas le workflow métier complet
Moteur de workflow durable Processus de longue durée en plusieurs étapes Réessais robustes, minuteries, historique d’audit, récupération après plantages Plus d’infrastructure et de concepts, lourd pour un sondage simple
Runtime d’agent persistant Agents de raisonnement en plusieurs étapes Préserve le contexte de l’agent, prend en charge la pause et la reprise, bon pour les tâches intensives en outils N’est pas un remplacement de planificateur ou de file d’attente, nécessite toujours un backend opérationnel
Synchronisation de base de données plus évaluation des changements Systèmes où les données externes ont une valeur locale Séparation propre, rapports locaux, moins d’appels externes répétés Plus de stockage, plus de complexité de synchronisation, préoccupations possibles de confidentialité et de rétention
Sondage adaptatif Sources bursty ou tâches d’urgence variable Réduit les coûts, respecte les limites de taux, réagit plus vite lorsque l’activité est élevée Plus difficile à raisonner, pas idéal pour les horaires stricts
Sondage sémantique avec évaluateur LLM Conditions floues nécessitant un jugement Gère l’intention en langage naturel, résumés utiles, décisions flexibles Coût, latence, risque de qualité des invites, ne devrait pas remplacer les vérifications de code simples

Architecture par défaut recommandée

Pour la plupart des assistants IA de production, commencez par ceci :

tableau des sondages
  -> planificateur
  -> file d'attente
  -> travailleurs sans état
  -> filtres déterministes
  -> évaluateur LLM optionnel
  -> notification ou action de l'assistant

Un schéma minimal :

CREATE TABLE polls (
    id TEXT PRIMARY KEY,
    user_id TEXT NOT NULL,
    source_type TEXT NOT NULL,
    source_ref TEXT NOT NULL,
    condition_text TEXT NOT NULL,
    schedule_type TEXT NOT NULL,
    interval_seconds INTEGER,
    timezone TEXT,
    next_run_at TIMESTAMP NOT NULL,
    last_run_at TIMESTAMP,
    cursor_value TEXT,
    last_hash TEXT,
    status TEXT NOT NULL,
    failure_count INTEGER NOT NULL DEFAULT 0,
    last_error TEXT,
    created_at TIMESTAMP NOT NULL,
    updated_at TIMESTAMP NOT NULL
);

CREATE TABLE poll_runs (
    id TEXT PRIMARY KEY,
    poll_id TEXT NOT NULL,
    started_at TIMESTAMP NOT NULL,
    finished_at TIMESTAMP,
    status TEXT NOT NULL,
    items_checked INTEGER,
    items_matched INTEGER,
    decision_summary TEXT,
    error TEXT
);

CREATE TABLE notifications (
    id TEXT PRIMARY KEY,
    poll_id TEXT NOT NULL,
    user_id TEXT NOT NULL,
    dedupe_key TEXT NOT NULL,
    title TEXT NOT NULL,
    body TEXT NOT NULL,
    delivered_at TIMESTAMP,
    UNIQUE (dedupe_key)
);

Cela vous donne une séparation propre :

le planificateur possède le temps
la file d'attente possède le tampon
le travailleur possède l'exécution
la base de données possède l'état
le LLM possède le jugement sémantique
l'assistant possède l'interaction utilisateur

Cette séparation est le cœur d’un agent de sondage fiable.

Exemple : Agent Hermes traitant des tâches Notion

Appliquons maintenant l’architecture à un cas concret.

Supposons qu’une base de données Notion contient des tâches. Hermes devrait s’exécuter toutes les 10 minutes, prendre une tâche en état Todo, la passer à InProgress, l’exécuter, puis la marquer Complete.

Cela est mieux décrit comme :

outil externe comme file d'attente de tâches
+
travailleur de sondage planifié
+
exécution basée sur la réclamation ou le bail

Pour une version de production, cela devient :

sondage basé sur une file d'attente avec Notion comme boîte de réception de tâches visible par l'humain

Propriétés des tâches Notion

La base de données Notion devrait contenir des champs comme :

Nom
Statut: Todo | InProgress | Complete | Failed
Priorité
CreatedAt
ClaimedBy
ClaimedAt
ClaimExpiresAt
RunId
RetryCount
LastError
CompletedAt

Les champs importants sont ClaimedAt, ClaimExpiresAt et RunId. Ils rendent la réclamation de la tâche visible et récupérable.

État d’exécution Hermes

Hermes devrait également conserver son propre enregistrement d’exécution :

run_id
notion_page_id
started_at
finished_at
statut
input_snapshot
tool_calls
result_summary
error
idempotency_key

Cela vous protège si Notion est modifié manuellement, si un appel API échoue, ou si vous devez auditer ce qu’Hermes a réellement fait.

Flux d’exécution

Toutes les 10 minutes :
  le planificateur Hermes crée une exécution

Travailleur Hermes :
  trouve une tâche Notion où Statut = Todo
  trie par Priorité et CreatedAt
  prend la tâche en charge en définissant Statut = InProgress
  écrit ClaimedBy, ClaimedAt, ClaimExpiresAt et RunId
  exécute la tâche
  écrit les journaux d'exécution dans le backend Hermes
  définit Statut Notion = Complete en cas de succès
  définit Statut Notion = Failed en cas d'échec

Si Hermes plante après avoir pris une tâche en charge, le bail peut expirer :

Statut = InProgress
ClaimExpiresAt < maintenant

Une exécution future peut alors récupérer la tâche ou la marquer comme échouée.

Gestion des erreurs

En cas de succès :

Statut = Complete
CompletedAt = maintenant
LastError = vide

En cas d’échec récupérable :

Statut = Todo
RetryCount = RetryCount + 1
LastError = court message d'erreur

En cas d’échec non récupérable :

Statut = Failed
LastError = explication claire

Pour plus de sécurité, Hermes devrait également utiliser une clé d’idempotence :

notion_page_id + task_version + action_type

Cela empêche la même tâche d’être exécutée deux fois si un réessai se produit au mauvais moment.

Pourquoi ce n’est pas juste du sondage

La partie sondage n’est que le mécanisme de réveil. La vraie architecture est la réclamation de tâches et l’exécution fiable.

Une implémentation naïve dit :

Toutes les 10 minutes, trouver une tâche Todo et la faire.

Une implémentation fiable dit :

Toutes les 10 minutes, réclamer exactement une tâche éligible, enregistrer l'exécution, exécuter de manière idempotente et déplacer la tâche vers un état terminal.

C’est la différence entre une démo et un agent en qui vous pouvez avoir confiance.

Erreurs courantes des agents de sondage

Erreur 1 : Aucun protocole de réclamation

Si deux travailleurs peuvent voir la même tâche, ils peuvent tous les deux l’exécuter.

Utilisez :

ClaimedBy
ClaimedAt
ClaimExpiresAt
RunId

Même si vous exécutez actuellement un seul travailleur, concevez comme si un deuxième travailleur pouvait apparaître plus tard.

Erreur 2 : Aucune clé de déduplication

Toute action externe doit avoir une clé de déduplication.

user_id + poll_id + source_object_id + action_type + condition_version

Cela empêche les notifications répétées, les e-mails répétés, l’exécution de tâches répétée et les appels d’outil répétés. Les principes plus larges derrière le scope, le stockage et le test de ces clés s’appliquent également ici — voir Idempotence dans les systèmes distribués qui fonctionne vraiment.

Erreur 3 : Appeler le LLM trop tôt

Ne demandez pas au modèle de faire du filtrage de base de données.

Mauvais :

Envoyer toutes les tâches au LLM et demander laquelle est Todo.

Meilleur :

Utiliser le filtre de l'API Notion pour récupérer les tâches Todo.
Ensuite, utiliser le LLM uniquement si l'interprétation de la tâche est nécessaire.

Erreur 4 : Traiter Notion comme le seul backend

Notion est une bonne interface humaine. Ce n’est pas un backend d’exécution complet.

Conservez les journaux d’exécution, les réessais, les traces et les enregistrements d’idempotence dans Hermes.

Erreur 5 : Sondage infini

Chaque sondage doit avoir une condition d’arrêt.

Exemples :

arrêter après le succès
arrêter après la date
arrêter après le nombre maximum de réessais
arrêter lorsque l'utilisateur le désactive
arrêter après une défaillance d'autorisation répétée

Un agent de sondage sans condition d’arrêt est une fuite de coûts silencieuse.

Erreur 6 : Aucune observabilité

Vous devriez pouvoir répondre à :

Que l'agent a-t-il exécuté ?
Pourquoi a-t-il exécuté ?
Qu'a-t-il lu ?
Qu'a-t-il changé ?
Pourquoi a-t-il échoué ?
A-t-il notifié l'utilisateur ?
A-t-il exécuté deux fois ?

Si vous ne pouvez pas répondre à ces questions, le système n’est pas prêt pour un travail important.

Liste de contrôle d’observabilité

Suivez des métriques telles que :

polls_due
polls_started
polls_succeeded
polls_failed
tasks_claimed
tasks_completed
tasks_failed
claim_expired_count
duplicate_suppressed_count
llm_calls
llm_cost
rate_limit_count
average_run_duration

Journalisez des champs tels que :

poll_id
run_id
source_type
source_object_id
claim_id
cursor_before
cursor_after
decision
dedupe_key
error

Construisez une vue administrateur pour :

sondages actifs
tâches bloquées InProgress
échecs récents
tâches avec nombre élevé de réessais
travaux de lettre morte
évaluations LLM coûteuses
intégrations désactivées

Les agents de sondage s’exécutent en arrière-plan, où les défaillances sont silencieuses et les problèmes peuvent s’accumuler avant que quelqu’un ne remarque. Les systèmes en arrière-plan ont besoin de visibilité intégrée dès le début, pas ajoutée a posteriori lorsque quelque chose va mal. Pour la pile d’observabilité complète pour les systèmes IA et LLM — métriques, traces, journaux structurés et SLO — voir Observabilité pour les systèmes LLM : Métriques, Traces, Journaux et Tests en production.

Recommandation finale

Les modèles de sondage gèrent la couche de planification proactive sous un système multi-agent. Une fois que vous avez plusieurs agents qui doivent se coordonner entre eux — et non pas juste sonder indépendamment — la prochaine décision de conception est la manière dont ils se coordonnent : étoile, pipeline, éventail ou essaim. Modèles d’orchestration multi-agents couvre ces topologies de coordination avec des modes de défaillance et un cadre de décision.

Pour un assistant IA sérieux, commencez par des travailleurs de sondage basés sur une file d’attente et un magasin d’état durable. Ajoutez des webhooks là où les fournisseurs les prennent en charge. Utilisez le sondage adaptatif lorsque les limites de taux sont importantes. Utilisez un moteur de workflow durable lorsque le processus est de longue durée et en plusieurs étapes. Utilisez un runtime d’agent persistant lorsque l’agent doit raisonner sur une période donnée.

Pour l’exemple Hermes et Notion, la bonne architecture est :

Notion comme boîte de réception de tâches visible par l'humain
Planificateur Hermes toutes les 10 minutes
Travailleur Hermes avec logique de réclamation ou de bail
Backend Hermes pour les journaux d'exécution et l'idempotence
Mises à jour de statut Notion pour la visibilité

L’intervalle de sondage n’est pas la partie difficile. La partie difficile est de s’assurer que l’agent prend une tâche, l’exécute une fois, enregistre ce qui s’est passé et laisse le système dans un état que les humains peuvent comprendre.

C’est ce qui transforme un script de sondage en un assistant IA fiable — pas l’intervalle, pas le modèle, mais la discipline autour de la réclamation du travail, de son enregistrement et de la leaving du système dans un état que les humains et les exécutions futures peuvent tous comprendre.

S'abonner

Recevez de nouveaux articles sur les systèmes, l'infrastructure et l'ingénierie IA.