Idempotente Tools und Seiteneffekte
Ein Agent kann Wiederholungen ausführen – entwerfen Sie Tools so, dass zweimaliges Aufrufen nicht doppelt abbucht oder doppelte E-Mails versendet.
Idempotente Tools und Seiteneffekte 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.
Warum Idempotenz wichtig ist
Eine Agentenschleife kann einen Aufruf wiederholen. Wenn ein Tool eine E-Mail sendet oder eine Kreditkarte belastet, führt eine Wiederholung die Aktion doppelt aus. Idempotenz sorgt dafür, dass „X erneut ausführen“ keine Wirkung hat, wenn X bereits ausgeführt wurde.
Was ist Idempotenz?
Eine Operation ist idempotent, wenn N Aufrufe dieselbe Wirkung haben wie ein einzelner Aufruf. Beispiele:
- „Benutzerstatus auf aktiv setzen“ — idempotent (erneutes Setzen auf aktiv hat keine Wirkung)
- „Zähler um 1 erhöhen“ — NICHT idempotent (jeder Aufruf addiert 1)
Idempotenzschlüssel
Verwenden Sie für nicht idempotente Operationen (Zahlungen, E-Mails) Idempotenzschlüssel:
import uuid
def create_payment(amount, idempotency_key):
# Stripe accepts this header — returns the existing payment if key was used
return stripe.Charge.create(
amount=amount,
currency='usd',
source=token,
idempotency_key=idempotency_key
)Schlüssel aus der Absicht erzeugen
Verwenden Sie einen Hash aus (tool_name, arguments, run_id), damit identische Wiederholungen denselben Schlüssel verwenden:
import hashlib, json
def intent_key(tool_name, args, run_id):
payload = json.dumps([tool_name, args, run_id], sort_keys=True)
return hashlib.sha256(payload.encode()).hexdigest()
print(intent_key('transfer_money', {'to': 'acc2', 'amount': 100}, 'run-1'))
Inventar der Seiteneffekte
Listen Sie auf, welche Tools Seiteneffekte haben:
- SEND E-Mail / SMS
- CHARGE / Rückerstattung
- CREATE / DELETE von Datenbankzeilen
- POST an externe APIs, die den Zustand verändern
Schreibgeschützte Tools sind von Natur aus idempotent. Konzentrieren Sie sich auf die Schreibvorgänge.
Tools mit Seiteneffekten kapseln
Fügen Sie eine Idempotenzschicht in die Tool-Implementierung ein:
def send_email(to, subject, body, run_id):
key = intent_key('send_email', {'to': to, 'subject': subject, 'body': body}, run_id)
if redis.set(f'sent:{key}', 1, nx=True, ex=86400):
smtp.send(to, subject, body)
return {'sent': True}
return {'sent': False, 'reason': 'already-sent'}Vor der Ausführung bestätigen
Fügen Sie für Aktionen mit hohem Risiko einen Bestätigungsschritt hinzu:
def transfer_money(from_acc, to_acc, amount, confirmed=False):
if not confirmed:
return {'pending': True, 'msg': 'Call again with confirmed=True to proceed.'}
return {'pending': False, 'msg': f'Transferred {amount} from {from_acc} to {to_acc}.'}
print(transfer_money('acc1', 'acc2', 100))
print(transfer_money('acc1', 'acc2', 100, confirmed=True))
Tools mit zwei Phasen
Teilen Sie Tools in die Phasen „draft“ und „commit“ auf:
def draft_email(to, subject, body):
draft_id = save_draft(to, subject, body)
return {'draft_id': draft_id, 'preview': body[:200]}
def send_draft(draft_id):
return smtp.send(load_draft(draft_id))Kompensationsaktionen
Wenn sich ein Seiteneffekt nicht vermeiden lässt, definieren Sie ein „undo“-Tool:
def refund_payment(payment_id):
return stripe.Refund.create(payment=payment_id)
# Now an erroneous create_payment can be undone.Audit-Logs
Jedes Tool mit Seiteneffekten MUSS protokollieren: wer es ausgelöst hat, welche Argumente verwendet wurden, wann es ausgeführt wurde und welches Ergebnis es hatte. Verwenden Sie strukturierte Logs, die Sie später durchsuchen können.
Budget für Seiteneffekte pro Ausführung
Begrenzen Sie Seiteneffekte pro Ausführung als zusätzliche Sicherheitsmaßnahme:
if state.side_effect_count >= 5:
return {'error': 'Side-effect budget exhausted for this run.'}Dry-Run-Modus
Während der Entwicklung besonders nützlich: Tools protokollieren, was sie ausführen WÜRDEN, führen es aber nicht tatsächlich aus:
import os
os.environ['DRY_RUN'] = '1'
DRY_RUN = os.getenv('DRY_RUN') == '1'
def send_email(to, subject, body):
if DRY_RUN:
print(f'would send email to {to}')
return {'sent': False, 'dry_run': True}
print(f'sending email to {to}')
return {'sent': True, 'dry_run': False}
result = send_email('user@example.com', 'Hi', 'Hello there')
print(result)
Definition
Was bedeutet „idempotent“ bei einem Tool?
Zusammenfassung
Identifizieren Sie Seiteneffekte. Verwenden Sie Idempotenzschlüssel. Entwickeln Sie Tools mit zwei Phasen und Kompensationsaktionen. Protokollieren Sie alles. Verwenden Sie im Entwicklungsbetrieb den Dry-Run-Modus.
Häufig gestellte Fragen
Ist die Lektion „Idempotente Tools und Seiteneffekte“ kostenlos?
Ja — der vollständige Text von „Idempotente Tools und Seiteneffekte“ 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 „Idempotente Tools und Seiteneffekte“?
Ein Agent kann Wiederholungen ausführen – entwerfen Sie Tools so, dass zweimaliges Aufrufen nicht doppelt abbucht oder doppelte E-Mails versendet. 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 „Idempotente Tools und Seiteneffekte“?
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
- Idempotente Tools und Seiteneffekte
- Wiederholungen mit exponentiellem Backoff
- Timeouts und Circuit Breaker
- Tool-Ausgaben validieren (Pydantic)