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 - skippedFehlerzustä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
- Muster für Trigger-Action-Agenten
- Agenten mit Webhooks verbinden
- Zeitplanung und Cron-basierte Agenten
- Eine Multi-App-Automatisierungspipeline erstellen