Salut la famille Clawgo, Jake Morrison ici, vous apportant une autre exploration approfondie du monde des agents d’IA. Aujourd’hui, je veux parler de quelque chose qui fait beaucoup de bruit dans mon propre laboratoire à domicile depuis quelques semaines : comment faire en sorte qu’un agent d’IA fasse quelque chose d’utile, pas seulement théoriquement intéressant. Plus précisément, nous allons explorer comment faire en sorte qu’un agent surveille et signale de manière proactive les changements sur un site web. Oubliez le discours sophistiqué sur la « redéfinition de l’industrie » un moment ; mettons-nous au travail sur un problème pratique.
Le Problème : Détection des Changements de Site Web (La Dure Voie)
Voici le scénario : je suis toujours à la recherche de nouveaux composants pour mes divers projets d’automatisation à domicile. 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 chaque heure est fastidieux et, franchement, je suis trop paresseux pour ça. J’ai essayé ces services de notification de changement 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 du pied de page.
Ce dont j’avais vraiment besoin, c’était de quelque chose de plus intelligent. Quelque chose qui comprenaît l’*intention* de ce que je cherchais. C’est là qu’intervient un agent d’IA. Au lieu de simplement « différer » le HTML, je voulais un agent qui puisse lire la page, comprendre l’état de disponibilité du produit et me dire spécifiquement quand cet état passait à « disponible ».
Mon Premier Essai : Script Python Simple (La Voie de Force)
Ma première tentative, comme c’est souvent le cas, a impliqué 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 "Disponible"
def check_stock():
try:
response = requests.get(URL)
response.raise_for_status() # Lever une exception pour les erreurs HTTP
soup = BeautifulSoup(response.text, 'html.parser')
# Voici la partie délicate : trouver l'élément spécifique
# Disons que l'état du 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()}] État du produit changé ! Actuel : {status_div.text.strip()}")
return True # Changement de stock !
else:
print(f"[{time.ctime()}] Impossible de trouver la div d'état.")
return False
except requests.exceptions.RequestException as e:
print(f"[{time.ctime()}] Erreur de récupération de l'URL : {e}")
return False
# Boucle de base (cela tournerait indéfiniment ou jusqu'à ce qu'elle soit arrêtée)
# while True:
# if check_stock():
# print("ENVOYER UNE ALERTE : Produit est de nouveau disponible !")
# # Ajoutez la logique de notification ici (email, SMS, etc.)
# break # Arrêtez de vérifier une fois trouvé
# time.sleep(3600) # Vérifiez toutes les heures
Ça a fonctionné, dans une certaine mesure. Le problème ? Si le site web mettait à jour sa structure HTML, même légèrement, ma ligne spécifique 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 un entretien constant, ce qui contredisait l’objectif d’automatisation.
Entrée de l’Agent d’IA : Une Approche Plus Intelligente
C’est là que j’ai commencé à penser à un véritable agent d’IA. Pas juste un script qui suit des instructions exactes, mais quelque chose qui peut *interpréter* la page. Mon objectif était un agent qui pouvait :
- Visiter une URL.
- Comprendre à quoi ressemble un « état de disponibilité du produit ».
- Identifier si le produit est en stock ou non en fonction du *sens* du texte, pas seulement des mots-clés exacts.
- Signaler uniquement lorsque l’état qui m’intéresse (par exemple, « en stock ») est détecté.
Configuration de l’Agent : Utiliser un LLM de Base pour l’Interprétation
Pour cette expérience, j’ai décidé de garder les choses relativement simples. J’utilise un LLM local (plus précisément, 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.
Outils de l’Agent
- Web Scraper : Une fonction pour récupérer le contenu HTML d’une URL (similaire à mon script Python initial, mais maintenant juste pour fournir 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-mail (ou même juste un affichage pour l’instant).
Le Flux de Travail de l’Agent (Simplifié)
Voici comment j’ai conçu la boucle centrale de l’agent :
- Récupérer la Page : Utilisez l’outil de web scraping pour obtenir le HTML brut de la page produit cible.
- Analyser avec LLM : Envoyez le HTML au LLM avec une invite spécifique.
- Interpréter et Décider : Le LLM analyse le HTML et décide si le produit est en stock.
- Signaler le Changement : Si l’état a changé en « en stock » (et était précédemment en rupture), déclenchez une notification.
- Répéter : Attendez un intervalle défini et répétez 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 l'état 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 'en rupture de stock'.
Ne recherchez 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érez cela comme hors stock pour un achat immédiat)
- Toute variation des messages d'état de stock.
Retournez UNIQUEMENT un des mots suivants : 'EN_STOCK' ou 'EN_RUPTURE_DE_STOCK'.
Ne fournissez aucun autre texte, explications ou formatage.
Contenu HTML :
" + html_content
La consigne « 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.
Assembler le Tout (Code Conceptuel)
Bien que la mise en œuvre complète implique plus de gestion des erreurs et d’état, voici l’idée principale en Python :
import requests
import time
# Supposons que vous ayez 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érifiez 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 de 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 l'état 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 'en rupture de stock'.
Ne recherchez 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érez cela comme hors stock pour un achat immédiat)
- Toute variation des messages d'état de stock.
Retournez UNIQUEMENT un des mots suivants : 'EN_STOCK' ou 'EN_RUPTURE_DE_STOCK'.
Ne fournissez aucun autre texte, explications ou formatage.
Contenu HTML :
{html_content}
"""
# C'est ici que vous appelleriez votre LLM
# À titre de démonstration, simulons une réponse
# real_llm_response = query_llm(prompt)
# Simuler une 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 = "EN_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 l'état 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 denotification
last_known_status = "EN_STOCK"
elif current_status == "EN_RUPTURE_DE_STOCK" and last_known_status != "EN_RUPTURE_DE_STOCK":
print("Le produit est EN RUPTURE DE STOCK.")
last_known_status = "EN_RUPTURE_DE_STOCK"
else:
print(f"L'état du produit est {current_status}. Aucune changement détecté.")
time.sleep(CHECK_INTERVAL_SECONDS)
Cette configuration permet à l’agent d’être beaucoup plus résilient aux changements dans la mise en page ou le wording du site web. Le LLM, avec sa compréhension du langage naturel, peut interpréter les variations de « rupture de stock » sans que j’aie besoin de 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 ancien script BeautifulSoup. J’ai vu des pages de produits changer leur message “hors stock”, déplacer des éléments, et même passer de boutons à des liens textuels pour l’achat. Mon agent IA, s’appuyant sur la puissance interprétative du LLM, m’a constamment fourni des mises à jour précises sur l’état des stocks.
Une fois, un magasin a changé son bouton “Ajouter au panier” en “Prévenez-moi quand disponible.” Mon ancien script aurait vu “Ajouter au panier” disparaître et serait devenu confus. Le LLM, cependant, a correctement interprété “Prévenez-moi quand disponible” comme un statut “HORS_STOCK”, car il comprend le *sens* derrière ces phrases.
Cela ne concerne pas la construction d’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 d’intelligence artificielle pour le résoudre de manière plus solide que ce que permettent les scripts traditionnels. C’est une IA pratique, et c’est ce que j’aime dans ce domaine.
Conclusions Actionnables
Si vous cherchez à commencer à utiliser des agents IA pour l’automatisation pratique, voici mes meilleurs conseils :
- Commencez Petit, Résolvez un Vrai Problème : Ne cherchez pas à construire Skynet dès le départ. Choisissez une tâche spécifique que vous effectuez manuellement et trouvez ennuyeuse. La surveillance de mon site web en est un parfait exemple.
- Utilisez des LLM Locaux : Des outils comme Ollama rendent incroyablement facile le fonctionnement de puissants LLM sur votre propre matériel. Cela permet de réduire les coûts et de préserver la confidentialité des données, ce qui est excellent pour des projets personnels.
- Concentrez-vous sur des Prompts Clairs : L’“intelligence” de l’agent dépend souvent de la clarté de vos instructions au LLM. Soyez explicite sur ce que vous voulez qu’il fasse et dans quel format vous attendez la sortie.
- Donnez à Votre Agent des “Outils” : Un LLM est puissant, mais il doit interagir avec le monde réel. Fournissez-lui des fonctionnalités pour récupérer des données, envoyer des messages ou manipuler des fichiers.
- Itérez et Affinez : Votre premier agent ne sera pas parfait. Testez-le, voyez où il échoue et ajustez vos instructions ou ses outils.
Le monde des agents AI est encore à ses débuts, mais le potentiel pour une automatisation pratique et quotidienne est énorme. Ne attendez pas un produit “révolutionnaire”; commencez à construire vos propres petits agents utiles dès maintenant. Vous serez surpris de ce que vous pouvez automatiser sur 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: