0Pricing
AI Agents · Leçon

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

  1. Schémas d’agents déclencheur-action
  2. Connecter des agents à des webhooks
  3. Agents planifiés et fondés sur Cron
  4. Construire un pipeline d’automatisation multi-applications
← Retour à AI Agents