0Pricing
AI Agents · Lektion

Muster für Trigger-Action-Agenten

Ereigniserkennung → Entscheidung → Aktion: die zentrale Automatisierungsschleife.

Muster für Trigger-Action-Agenten ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein Trigger-Action-Agent?

Ein Trigger-Action-Agent überwacht Ereignisse und reagiert mit Aktionen. Die aus drei Teilen bestehende Schleife lautet: Ereignis erkennen → LLM entscheidet über die Aktion → Aktion ausführen.

Beispiele: E-Mail empfangen → zusammenfassen und beantworten; Datei hochgeladen → validieren und verarbeiten; täglich um 9 Uhr → Tagesbericht erstellen.

Arten von Triggern

Trigger lassen sich in drei Kategorien einteilen:

  • Ereignisbasiert: Ein Webhook wird ausgelöst, wenn eine E-Mail eintrifft oder eine Datei hochgeladen wird
  • Zeitbasiert: Ein Cron-Zeitplan führt den Agenten in festen Intervallen aus
  • Polling-basiert: Der Agent fragt wiederholt eine API auf neue Daten ab

Die Wahl des passenden Triggertyps bestimmt die Latenz und den Ressourcenverbrauch Ihres Agenten.

Die Erkennungsphase

Erkennung bedeutet, ein Ereignis zu empfangen oder zu erkennen. Bei Webhooks empfängt Ihr Server eine POST-Anfrage. Beim Polling fragt Ihr Agent eine API ab und vergleicht die Ergebnisse mit dem zuletzt bekannten Zustand.

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])

Die Entscheidungsphase

Nach der Erkennung eines Ereignisses sendet der Agent Kontext an ein LLM und fragt, welche Aktion ausgeführt werden soll. Das LLM wählt entweder ein Tool aus oder gibt eine direkte Antwort zurück.

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)

Die Ausführungsphase

Bei der Ausführung wird die ausgewählte Aktion gestartet. Dabei kann eine API aufgerufen, eine Datei geschrieben, eine Nachricht gesendet oder ein weiterer Workflow ausgelöst werden. Behandeln Sie Fehler stets ordnungsgemäß und protokollieren Sie die Ergebnisse.

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)

Zustandsautomat-Modell

Ein Zustandsautomat ist ein leistungsfähiges Modell für Automatisierungsagenten. Mögliche Zustände sind: IDLE, DETECTING, DECIDING, EXECUTING, ERROR. Übergänge erfolgen aufgrund von Ereignissen oder Bedingungen.

Zustandsautomaten machen das Verhalten von Agenten vorhersehbarer und erleichtern die Fehlersuche.

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'})

Trigger-Muster für empfangene E-Mails

Push-Benachrichtigungen von Gmail verwenden Pub/Sub. Wenn eine neue E-Mail eintrifft, veröffentlicht Google eine Nachricht in Ihrem Topic. Ihr Agent empfängt einen Webhook, ruft die E-Mail ab und verarbeitet sie.

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'}

Trigger-Muster für Datei-Uploads

S3-Ereignisbenachrichtigungen oder lokale Dateisystem-Überwachungen können Agenten auslösen, sobald Dateien erscheinen. Die Bibliothek watchdog überwacht Verzeichnisse auf neue Dateien.

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()

Zeitbasiertes Trigger-Muster

Zeitbasierte Trigger führen Agenten nach einem Zeitplan aus. Verwenden Sie APScheduler für die Zeitplanung innerhalb des Prozesses oder einen System-Cronjob für die Zeitplanung auf Prozessebene.

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()

Idempotente Aktionsausführung

Automatisierungsagenten müssen idempotent sein: Die zweimalige Ausführung derselben Aktion darf keine doppelten Auswirkungen verursachen. Verwenden Sie Idempotenzschlüssel und Muster nach dem Prinzip „erst prüfen, dann handeln“.

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

Fehlerzustände und Wiederherstellung

Robuste Agenten behandeln Fehler auf kontrollierte Weise. Wenn die Ausführung fehlschlägt, kann der Agent es mit exponentiellem Backoff erneut versuchen, einen Menschen benachrichtigen oder das Ereignis zur manuellen Prüfung in eine Dead-Letter-Queue verschieben.

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)

Wissensüberprüfung: Trigger-Action-Muster

Testen Sie Ihr Verständnis der Muster für Trigger-Action-Agenten.

Alles zusammenführen

Ein vollständiger Trigger-Action-Agent kombiniert alle Bausteine: eine Triggerquelle (E-Mail, Datei, Timer), eine Erkennungsschicht, LLM-basierte Entscheidungsfindung, idempotente Ausführung, Wiederholungslogik und Zustandsverfolgung.

Beginnen Sie einfach: ein Triggertyp, eine Aktion. Fügen Sie schrittweise Komplexität hinzu, sobald Sie mehr Vertrauen in das Verhalten des Agenten gewinnen.

Häufig gestellte Fragen

Ist die Lektion „Muster für Trigger-Action-Agenten“ kostenlos?

Ja — der vollständige Text von „Muster für Trigger-Action-Agenten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Muster für Trigger-Action-Agenten“?

Ereigniserkennung → Entscheidung → Aktion: die zentrale Automatisierungsschleife. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Agents zu starten?

Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Muster für Trigger-Action-Agenten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?

Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Muster für Trigger-Action-Agenten
  2. Agenten mit Webhooks verbinden
  3. Zeitplanung und Cron-basierte Agenten
  4. Eine Multi-App-Automatisierungspipeline erstellen
← Zurück zu AI Agents