\n\n\n\n Mon agent IA surveille désormais les sites web pour moi. - ClawGo \n

Mon agent IA surveille désormais les sites web pour moi.

📖 12 min read2,204 wordsUpdated Mar 26, 2026

Salut la famille Clawgo, Jake Morrison ici, vous apportant une nouvelle exploration approfondie du monde des agents IA. Aujourd’hui, je veux parler de quelque chose qui fait du bruit dans mon propre laboratoire à domicile depuis quelques semaines : comment amener un agent IA à faire quelque chose d’utile, pas seulement d’intéressant sur le plan théorique. Plus précisément, nous allons explorer comment faire en sorte qu’un agent surveille proactivement et rende compte des changements sur un site Web. Oubliez le discours sophistiqué sur la « transformation de l’industrie » pendant une minute ; mettons-nous au travail avec un problème pratique.

Le Problème : Détection des Changements sur les Sites Web (la Méthode Difficile)

Voici le scénario : je suis toujours à la recherche de nouveaux composants pour mes divers projets d’automatisation domestique. Parfois, un capteur spécifique ou un micro-contrôleur est en rupture de stock, et j’ai besoin de savoir la seconde où il est de nouveau disponible. Actualiser une page toutes les heures est fastidieux et, franchement, je suis trop paresseux pour cela. J’ai essayé ces services de notification des changements de site Web génériques, mais ils sont souvent trop larges, trop lents, ou ils se déclenchent pour des changements non pertinents comme une mise à jour de pied de page.

Ce dont j’avais vraiment besoin, c’était de quelque chose de plus intelligent. Quelque chose qui comprenne l’**intention** de ce que je recherchais. C’est là qu’un agent IA entre en jeu. Au lieu de simplement « comparer » le HTML, je voulais un agent capable de lire la page, de comprendre l’état de disponibilité du produit et de me dire spécifiquement quand cet état changeait pour « en stock ».

Ma Première Tentative : Script Python Simple (la Méthode de Force Brute)

Ma première tentative, comme c’est souvent le cas, impliquait un simple script Python. J’ai utilisé requests pour récupérer la page et BeautifulSoup pour l’analyser. Cela ressemblait à quelque chose comme ça (simplifié, bien sûr) :


import requests
from bs4 import BeautifulSoup
import time

URL = "https://example-store.com/product-x-123"
KEYWORD = "Rupture de Stock" # Ou "En Stock"

def check_stock():
 try:
 response = requests.get(URL)
 response.raise_for_status() # Lève une exception pour les erreurs HTTP
 soup = BeautifulSoup(response.text, 'html.parser')
 
 # C'est la partie délicate : trouver l'élément spécifique
 # Disons que le statut de stock est dans une div avec la classe "product-status"
 status_div = soup.find('div', class_='product-status')
 
 if status_div and KEYWORD in status_div.text:
 print(f"[{time.ctime()}] Produit est {KEYWORD}.")
 return False # Toujours en rupture de stock
 elif status_div:
 print(f"[{time.ctime()}] Changement de statut du produit ! Actuel : {status_div.text.strip()}")
 return True # Le stock a changé !
 else:
 print(f"[{time.ctime()}] Impossible de trouver la div de statut.")
 return False

 except requests.exceptions.RequestException as e:
 print(f"[{time.ctime()}] Erreur lors de la récupération de l'URL : {e}")
 return False

# Boucle de base (cela fonctionnerait indéfiniment ou jusqu'à l'arrêt)
# while True:
# if check_stock():
# print("ENVOI D'ALERTE : Produit de nouveau en stock !")
# # Ajouter ici la logique de notification (email, SMS, etc.)
# break # Arrêter de vérifier une fois trouvé
# time.sleep(3600) # Vérifier toutes les heures

Ça a fonctionné, jusqu’à un certain point. Le problème ? Si le site Web mettait à jour sa structure HTML, même légèrement, ma ligne soup.find('div', class_='product-status') se briserait. Ou, si le libellé changeait de « Rupture de Stock » à « Actuellement Indisponible », ma vérification KEYWORD échouerait. Cela nécessitait une maintenance constante, ce qui contredisait l’objectif de l’automatisation.

Entrée de l’Agent IA : Une Approche Plus Intelligente

C’est là que j’ai commencé à réfléchir à un véritable agent IA. Pas juste un script qui suit des instructions exactes, mais quelque chose qui peut **interpréter** la page. Mon objectif était un agent capable de :

  1. Visiter une URL.
  2. Comprendre à quoi ressemble un « statut de disponibilité produit ».
  3. Identifier si le produit est en stock ou non en fonction de la **signification** du texte, pas seulement des mots-clés exacts.
  4. Rapporter seulement lorsque le statut qui m’intéresse (par exemple, « en stock ») est détecté.

Mise en Place de l’Agent : Utiliser un LLM de Base pour l’Interprétation

Pour cette expérience, j’ai décidé de garder cela relativement simple. J’utilise un LLM local (spécifiquement, un modèle Llama 3 affiné fonctionnant sur mon serveur domestique, grâce à Ollama) et un script Python pour orchestrer les actions de l’agent. L’agent lui-même ne « vit » pas dans un environnement séparé ; c’est la combinaison du script, du LLM et des outils qu’il peut utiliser.

Les « Outils » de l’Agent

  • Web Scraper : Une fonction pour récupérer le contenu HTML d’une URL (similaire à mon script Python initial, mais fournissant maintenant juste du HTML brut au LLM).
  • Interface LLM : Une fonction pour envoyer des invites à mon instance locale de Llama 3 et obtenir des réponses.
  • Système de Notification : Un simple expéditeur d’e-mails (ou même juste une déclaration d’impression pour l’instant).

Le Flux de Travail de l’Agent (Simplifié)

Voici comment j’ai conçu la boucle principale de l’agent :

  1. Récupérer la Page : Utiliser l’outil de scraper web pour obtenir le HTML brut de la page produit cible.
  2. Analyser avec le LLM : Envoyer le HTML au LLM avec une invite spécifique.
  3. Interpréter et Décider : Le LLM analyse le HTML et décide si le produit est en stock.
  4. Rapporter le Changement : Si le statut a changé pour « en stock » (et était auparavant en rupture), déclencher une notification.
  5. Répéter : Attendre un intervalle défini et répéter le processus.

Ingénierie des Invites pour la Détection de Stock

C’était la partie cruciale. Mon invite au LLM devait être claire et solide. Voici un exemple de ce que j’ai utilisé :


"Vous êtes un assistant IA conçu pour détecter le statut de stock d'un produit sur une page web.
Je vais vous fournir le contenu HTML d'une page produit.
Votre tâche est d'analyser le HTML et de déterminer si le produit est actuellement 'en stock' ou 'rupture de stock'.
Ne cherchez pas seulement des phrases exactes ; comprenez le contexte. Recherchez des indicateurs communs comme :
- les boutons 'Ajouter au Panier' (indiquent généralement en stock)
- les messages 'Rupture de Stock'
- les messages 'Actuellement Indisponible'
- 'Pré-commande' (considérer cela comme en rupture de stock pour un achat immédiat)
- Toute variation de message de statut de stock.

Retournez UNIQUEMENT un des mots suivants : 'EN_STOCK' ou 'RUPTURE_DE_STOCK'.
Ne fournissez aucun autre texte, explication ou formatage.

Contenu HTML :
" + html_content

La directive « Retournez UNIQUEMENT un des mots suivants » est essentielle pour le traitement programmatique de la sortie du LLM. Cela permet à mon script Python de lire facilement la décision du LLM et d’agir en conséquence.

Mise Tout Ensemble (Code Conceptuel)

Bien que l’implémentation complète implique plus de gestion des erreurs et de gestion des états, voici l’idée principale en Python :


import requests
import time
# Supposons que vous avez une fonction pour interagir avec votre LLM
# e.g., from my_llm_interface import query_llm 
# Et une fonction pour envoyer des notifications
# e.g., from my_notifier import send_alert

PRODUCT_URL = "https://example-store.com/product-x-123"
CHECK_INTERVAL_SECONDS = 3600 # Vérifier toutes les heures

last_known_status = "UNKNOWN" # Pour suivre les changements

def get_html(url):
 try:
 response = requests.get(url, timeout=10)
 response.raise_for_status()
 return response.text
 except requests.exceptions.RequestException as e:
 print(f"Erreur lors de la récupération de l'URL : {e}")
 return None

def determine_stock_status(html_content):
 if not html_content:
 return "ERROR"
 
 prompt = f"""
 Vous êtes un assistant IA conçu pour détecter le statut de stock d'un produit sur une page web.
 Je vais vous fournir le contenu HTML d'une page produit.
 Votre tâche est d'analyser le HTML et de déterminer si le produit est actuellement 'en stock' ou 'rupture de stock'.
 Ne cherchez pas seulement des phrases exactes ; comprenez le contexte. Recherchez des indicateurs communs comme :
 - les boutons 'Ajouter au Panier' (indiquent généralement en stock)
 - les messages 'Rupture de Stock'
 - les messages 'Actuellement Indisponible'
 - 'Pré-commande' (considérer cela comme en rupture de stock pour un achat immédiat)
 - Toute variation de message de statut de stock.

 Retournez UNIQUEMENT un des mots suivants : 'EN_STOCK' ou 'RUPTURE_DE_STOCK'.
 Ne fournissez aucun autre texte, explication ou formatage.

 Contenu HTML :
 {html_content}
 """
 
 # C'est là que vous appelleriez votre LLM
 # Pour la démonstration, simulons une réponse
 # real_llm_response = query_llm(prompt) 
 
 # Simuler la réponse du LLM pour le test
 if "Ajouter au Panier" in html_content: # Heuristique simple pour la démo
 real_llm_response = "EN_STOCK"
 elif "Rupture de Stock" in html_content or "Indisponible" in html_content:
 real_llm_response = "RUPTURE_DE_STOCK"
 else:
 real_llm_response = "UNKNOWN"

 return real_llm_response.strip().upper()

# Boucle principale de l'agent
while True:
 print(f"[{time.ctime()}] Vérification du stock du produit...")
 html = get_html(PRODUCT_URL)
 current_status = determine_stock_status(html)

 if current_status == "ERROR":
 print("Impossible de déterminer le statut en raison d'une erreur de récupération. Nouvelle tentative plus tard.")
 elif current_status == "EN_STOCK" and last_known_status != "EN_STOCK":
 print("ALERTE : Le produit est maintenant EN STOCK !")
 # send_alert(f"Produit {PRODUCT_URL} est de nouveau en stock !") # Votre logique de notification
 last_known_status = "EN_STOCK"
 elif current_status == "RUPTURE_DE_STOCK" and last_known_status != "RUPTURE_DE_STOCK":
 print("Le produit est RUPTURE DE STOCK.")
 last_known_status = "RUPTURE_DE_STOCK"
 else:
 print(f"Le statut du produit est {current_status}. Aucun changement détecté.")

 time.sleep(CHECK_INTERVAL_SECONDS)

Cette configuration permet à l’agent d’être beaucoup plus résilient face aux changements de mise en page ou de libellé du site Web. Le LLM, avec sa compréhension du langage naturel, peut interpréter des variations de « rupture de stock » sans que je doive mettre à jour une liste de mots-clés à chaque fois.

Les Résultats : Un Moniteur Plus Fiable

Après avoir laissé cet agent fonctionner pendant quelques semaines, je peux confirmer qu’il est nettement plus fiable que mon script initial de BeautifulSoup. J’ai vu des pages produits changer leur message “épuisé”, déplacer des éléments et même passer de boutons à des liens textuels pour l’achat. Mon agent IA, s’appuyant sur le pouvoir d’interprétation du LLM, m’a constamment fourni des mises à jour précises sur l’état des stocks.

Une fois, un magasin a changé leur bouton “Ajouter au Panier” en “Me prévenir quand disponible.” Mon ancien script aurait vu “Ajouter au Panier” disparaître et se serait confondu. Le LLM, cependant, a correctement interprété “Me prévenir quand disponible” comme un statut “OUT_OF_STOCK”, car il comprend le *sens* derrière ces phrases.

Il ne s’agit pas de construire une IA générale super-intelligente pour gérer votre vie. Il s’agit de prendre un problème spécifique et ennuyeux et d’appliquer un peu de savoir-faire en IA pour le résoudre d’une manière plus solide que ne le permet le scripting traditionnel. C’est de l’IA pratique, et c’est ce que j’adore dans ces choses.

Conseils Pratiques

Si vous cherchez à commencer à expérimenter avec des agents IA pour l’automatisation pratique, voici mes meilleurs conseils :

  1. Commencez Petit, Résolvez un Vrai Problème : Ne tentez pas de construire Skynet dès votre premier essai. Choisissez une tâche spécifique que vous effectuez manuellement et que vous trouvez ennuyeuse. La surveillance de mon site web en est un parfait exemple.
  2. Utilisez des LLMs Locaux : Des outils comme Ollama rendent incroyablement facile l’exécution de LLMs puissants sur votre propre matériel. Cela réduit les coûts et garde les données privées, ce qui est excellent pour des projets personnels.
  3. Concentrez-vous sur des Instructions Claires : L’“intelligence” de l’agent dépend souvent de la qualité de vos instructions au LLM. Soyez explicite sur ce que vous voulez qu’il fasse et dans quel format vous attendez la sortie.
  4. Donnez à Votre Agent des “Outils” : Un LLM est puissant, mais il doit interagir avec le monde réel. Fournissez-lui des fonctions pour récupérer des données, envoyer des messages ou manipuler des fichiers.
  5. Itérez et Affinez : Votre premier agent ne sera pas parfait. Testez-le, voyez où il échoue et affinez vos instructions ou ses outils.

Le monde des agents IA est encore jeune, mais le potentiel pour une automatisation pratique au quotidien est énorme. N’attendez pas un produit “révolutionnaire”; commencez à créer vos propres petits agents utiles dès maintenant. Vous serez surpris de ce que vous pouvez automatiser de votre liste de tâches.

C’est tout pour celui-ci, équipe Clawgo. Faites-moi savoir quels agents pratiques vous construisez dans les commentaires !

🕒 Published:

🤖
Written by Jake Chen

AI automation specialist with 5+ years building AI agents. Previously at a Y Combinator startup. Runs OpenClaw deployments for 200+ users.

Learn more →
Browse Topics: Advanced Topics | AI Agent Tools | AI Agents | Automation | Comparisons
Scroll to Top