Schémas d’agents déclencheur-action
Détection d’événement → décision → action : la boucle centrale de l’automatisation.
Schémas d’agents déclencheur-action est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
Qu’est-ce qu’un agent déclencheur-action ?
Un agent déclencheur-action surveille les événements et y répond par des actions. La boucle en trois parties est la suivante : détecter l’événement → le LLM décide de l’action → exécuter l’action.
Exemples : e-mail reçu → le résumer et y répondre ; fichier téléversé → le valider et le traiter ; tous les jours à 9 h → générer le rapport quotidien.
Types de déclencheurs
Les déclencheurs se répartissent en trois catégories :
- Fondés sur des événements : un rappel HTTP est déclenché lorsqu’un e-mail arrive ou qu’un fichier est téléversé
- Fondés sur le temps : une planification cron exécute l’agent à intervalles fixes
- Fondés sur l’interrogation périodique : l’agent vérifie régulièrement une API pour rechercher de nouvelles données
Le choix du type de déclencheur détermine la latence et la consommation de ressources de votre agent.
La phase de détection
La détection consiste à recevoir ou à reconnaître un événement. Pour les rappels HTTP, votre serveur reçoit une requête POST. Pour l’interrogation périodique, votre agent interroge une API et compare les résultats avec l’état observé précédemment.
import json
def detect_new_email(current_emails, last_seen_id):
new_emails = [
e for e in current_emails
if e['id'] > last_seen_id
]
return new_emails
# Simulate detection
current = [{'id': 3, 'subject': 'Meeting'}, {'id': 4, 'subject': 'Invoice'}]
new = detect_new_email(current, last_seen_id=2)
print('New emails:', [e['subject'] for e in new])La phase de décision
Après avoir détecté un événement, l’agent envoie le contexte à un LLM et lui demande quelle action effectuer. Le LLM sélectionne soit un outil, soit renvoie une réponse directe.
import openai
client = openai.OpenAI(api_key='sk-...')
def decide_action(event_description):
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'You are an automation agent. Decide what action to take for the event.'},
{'role': 'user', 'content': f'Event: {event_description}'}
],
tools=[
{'type': 'function', 'function': {'name': 'send_reply', 'description': 'Reply to email', 'parameters': {'type': 'object', 'properties': {'message': {'type': 'string'}}, 'required': ['message']}}}
]
)
return response.choices[0].message
result = decide_action('New email: Invoice for $500 from supplier')
print(result)La phase d’exécution
L’exécution lance l’action choisie. Celle-ci peut appeler une API, écrire un fichier, envoyer un message ou déclencher un autre flux de travail. Gérez toujours les erreurs et consignez les résultats.
import logging
import sys
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
logger = logging.getLogger('agent')
def execute_action(action_name, params):
try:
if action_name == 'send_reply':
# In real code, call Gmail API here
logger.info(f'Sending reply: {params["message"]}')
return {'status': 'success'}
elif action_name == 'create_task':
logger.info(f'Creating task: {params["title"]}')
return {'status': 'success'}
else:
raise ValueError(f'Unknown action: {action_name}')
except Exception as e:
logger.error(f'Action failed: {e}')
return {'status': 'error', 'message': str(e)}
if __name__ == '__main__':
result = execute_action('send_reply', {'message': 'Thanks for reaching out!'})
print('Result:', result)
Modèle de machine à états
Une machine à états constitue un modèle puissant pour les agents d’automatisation. Les états peuvent être : IDLE, DETECTING, DECIDING, EXECUTING, ERROR. Les transitions se produisent en réponse à des événements ou à des conditions.
Les machines à états rendent le comportement de l’agent prévisible et facilitent sa mise au point.
from enum import Enum
class AgentState(Enum):
IDLE = 'idle'
DETECTING = 'detecting'
DECIDING = 'deciding'
EXECUTING = 'executing'
ERROR = 'error'
class AutomationAgent:
def __init__(self):
self.state = AgentState.IDLE
def transition(self, new_state):
print(f'State: {self.state.value} -> {new_state.value}')
self.state = new_state
def run_cycle(self, event=None):
self.transition(AgentState.DETECTING)
if event:
self.transition(AgentState.DECIDING)
self.transition(AgentState.EXECUTING)
self.transition(AgentState.IDLE)
agent = AutomationAgent()
agent.run_cycle(event={'type': 'email', 'subject': 'Test'})Motif de déclenchement à la réception d’un e-mail
Les notifications push de Gmail utilisent Pub/Sub. Lorsqu’un nouvel e-mail arrive, Google publie un message sur votre sujet. Votre agent reçoit un rappel HTTP, récupère l’e-mail et le traite.
from fastapi import FastAPI, Request
import base64, json
app = FastAPI()
@app.post('/gmail-push')
async def gmail_push(request: Request):
body = await request.json()
# Decode Pub/Sub message
message = body.get('message', {})
data = base64.b64decode(message.get('data', '')).decode('utf-8')
notification = json.loads(data)
email_address = notification.get('emailAddress')
history_id = notification.get('historyId')
print(f'New email for {email_address}, historyId: {history_id}')
# Fetch email details and run agent here
return {'status': 'ok'}Motif de déclenchement lors du téléversement d’un fichier
Les notifications d’événements S3 ou les observateurs du système de fichiers local peuvent déclencher des agents lorsque des fichiers apparaissent. La bibliothèque watchdog surveille les répertoires à la recherche de nouveaux fichiers.
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time
class UploadHandler(FileSystemEventHandler):
def on_created(self, event):
if event.is_directory:
return
print(f'New file detected: {event.src_path}')
self.process_file(event.src_path)
def process_file(self, filepath):
# Run agent logic on new file
print(f'Processing: {filepath}')
observer = Observer()
handler = UploadHandler()
observer.schedule(handler, path='/tmp/uploads/', recursive=False)
observer.start()
try:
time.sleep(30) # Watch for 30 seconds
finally:
observer.stop()
observer.join()Motif de déclenchement temporel
Les déclencheurs temporels exécutent les agents selon une planification. Utilisez APScheduler pour la planification au sein du processus ou une tâche cron système pour la planification au niveau du processus.
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
scheduler = BlockingScheduler()
def daily_report_agent():
print(f'Daily report running at {datetime.now()}')
# Fetch data, call LLM, send report
pass
def hourly_check_agent():
print(f'Hourly check at {datetime.now()}')
pass
# Run at 8am every day
scheduler.add_job(daily_report_agent, 'cron', hour=8, minute=0)
# Run every 30 minutes
scheduler.add_job(hourly_check_agent, 'interval', minutes=30)
print('Scheduler started')
scheduler.start()Exécution idempotente des actions
Les agents d’automatisation doivent être idempotents : l’exécution deux fois de la même action ne doit pas produire d’effets en double. Utilisez des clés d’idempotence et des motifs de vérification avant action.
import hashlib
processed_events = set() # In production, use Redis or DB
def compute_event_id(event):
content = f"{event['type']}:{event['source_id']}:{event['timestamp']}"
return hashlib.sha256(content.encode()).hexdigest()[:16]
def handle_event_idempotent(event):
event_id = compute_event_id(event)
if event_id in processed_events:
print(f'Skipping duplicate event: {event_id}')
return {'status': 'duplicate', 'event_id': event_id}
# Process event
print(f'Processing event: {event_id}')
processed_events.add(event_id)
return {'status': 'processed', 'event_id': event_id}
# Simulate duplicate event
event = {'type': 'email', 'source_id': 'abc123', 'timestamp': '2024-01-01T09:00:00'}
print(handle_event_idempotent(event))
print(handle_event_idempotent(event)) # Duplicate - skippedÉtats d’erreur et récupération
Les agents robustes gèrent les échecs avec élégance. Lorsque l’exécution échoue, l’agent peut réessayer avec une temporisation exponentielle, avertir une personne ou déplacer l’élément vers une file d’attente des messages rejetés pour un examen manuel.
import time
def execute_with_retry(action_fn, max_retries=3):
for attempt in range(max_retries):
try:
result = action_fn()
print(f'Success on attempt {attempt + 1}')
return result
except Exception as e:
wait = 2 ** attempt # Exponential backoff: 1s, 2s, 4s
print(f'Attempt {attempt + 1} failed: {e}. Retrying in {wait}s')
if attempt < max_retries - 1:
time.sleep(wait)
else:
print('All retries exhausted. Moving to dead-letter queue.')
raise
# Example usage
call_count = [0]
def flaky_action():
call_count[0] += 1
if call_count[0] < 3:
raise ConnectionError('Service unavailable')
return 'Done'
execute_with_retry(flaky_action)Vérification des connaissances : motifs déclencheur-action
Vérifiez votre compréhension des motifs liés aux agents déclencheur-action.
Mise en pratique
Un agent déclencheur-action complet réunit tous les éléments : une source de déclenchement (e-mail, fichier, minuteur), une couche de détection, une prise de décision fondée sur un LLM, une exécution idempotente, une logique de nouvelle tentative et un suivi de l’état.
Commencez simplement : un type de déclencheur et une action. Ajoutez progressivement de la complexité à mesure que vous gagnez en confiance dans le comportement de l’agent.
Questions Fréquemment Posées
La leçon « Schémas d’agents déclencheur-action » est-elle gratuite ?
Oui — le texte complet de « Schémas d’agents déclencheur-action » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Schémas d’agents déclencheur-action » ?
Détection d’événement → décision → action : la boucle centrale de l’automatisation. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Agents ?
Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Schémas d’agents déclencheur-action » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?
Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Schémas d’agents déclencheur-action
- Connecter des agents à des webhooks
- Agents planifiés et fondés sur Cron
- Construire un pipeline d’automatisation multi-applications