0Pricing
AI Agents · Lektion

Tool-Fehler erkennen und beheben

Wenn ein Tool den Fehler 500 zurückgibt, senden Sie den Fehler an das Modell, damit es einen anderen Ansatz versucht, statt abzustürzen.

Tool-Fehler erkennen und beheben ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Tools schlagen fehl – planen Sie dafür

Jedes echte Tool schlägt gelegentlich fehl:

  • Netzwerk-Timeouts
  • Rate-Limits
  • Falsche Argumente vom Modell
  • Ausfall externer Dienste
  • Ungültige Authentifizierung

Produktionsagenten müssen sich davon ordnungsgemäß erholen.

Immer zurückgeben, nie Exceptions auslösen

Fangen Sie innerhalb der Agentenschleife alle Tool-Fehler ab und geben Sie sie als Inhalt zurück. Lassen Sie niemals zu, dass eine Exception die Schleife beendet:

def safe_dispatch(tool_call):
    try:
        args = json.loads(tool_call.function.arguments)
        return TOOLS[tool_call.function.name](**args)
    except json.JSONDecodeError:
        return {'error': 'Arguments are not valid JSON.'}
    except KeyError:
        return {'error': f'Unknown tool: {tool_call.function.name}'}
    except Exception as e:
        return {'error': f'{type(e).__name__}: {e}'}

Strukturiertes Fehlerformat

Verwenden Sie eine einheitliche Struktur, damit das Modell Fehler erkennt:

error = {'ok': False, 'error_type': 'TimeoutError', 'error_message': 'Tavily timed out after 10s', 'retryable': True}
print(error)

Wiederholbare und dauerhafte Fehler unterscheiden

Manche Fehler rechtfertigen einen erneuten Versuch (Timeout), andere nicht (404). Teilen Sie dem Modell Folgendes mit:

if isinstance(e, requests.Timeout):
    return {'ok': False, 'retryable': True, 'error': str(e)}
if isinstance(e, ValueError):
    return {'ok': False, 'retryable': False, 'error': str(e)}

Vorübergehende Fehler automatisch erneut versuchen

Bei Netzwerkaufrufen sollten Sie Wiederholungsversuche mit exponentiellem Backoff durchführen:

from tenacity import retry, wait_exponential, stop_after_attempt, retry_if_exception_type

@retry(
    wait=wait_exponential(multiplier=1, max=10),
    stop=stop_after_attempt(3),
    retry=retry_if_exception_type((requests.Timeout, requests.ConnectionError))
)
def web_search(query):
    return requests.get('https://api.tavily.com/search', ...).json()

Argumente validieren

Validieren Sie die Argumente vor dem Tool-Aufruf mit einem Pydantic-Modell:

from pydantic import BaseModel, ValidationError

class SearchArgs(BaseModel):
    query: str
    k: int = 5

try:
    args = SearchArgs.model_validate_json(tool_call.function.arguments)
except ValidationError as e:
    return {'error': f'Bad arguments: {e}'}

Zeigen Sie dem Modell den Fehler

Fügen Sie den Fehler als Tool-Ergebnis an und rufen Sie das Modell erneut auf. Das Modell korrigiert sich häufig selbst:

messages.append({
    'role': 'tool',
    'tool_call_id': tc.id,
    'content': json.dumps({'error': 'Argument k must be an integer'})
})
# Next model call: 'Sorry, let me retry with k=5...'

Endlose Fehlerschleifen vermeiden

Manche Modelle wiederholen denselben fehlerhaften Aufruf, wenn man ihnen einen Fehler zeigt. Begrenzen Sie die Schleife und erkennen Sie Wiederholungen:

recent_calls = []
for tc in msg.tool_calls:
    key = (tc.function.name, tc.function.arguments)
    if recent_calls.count(key) >= 3:
        return 'Agent stuck in retry loop, aborting.'
    recent_calls.append(key)

Tool-spezifische Fehlerbehebung

Bei bekanntermaßen fehleranfälligen Tools sollten Sie die Wiederholungslogik IN DAS TOOL und nicht in die Schleife integrieren:

def search_with_fallback(query):
    try:
        return tavily_search(query)
    except Exception:
        return bing_search(query)   # secondary provider

Für jeden Aufruf ein Timeout

Jeder externe Aufruf benötigt ein Timeout. Andernfalls friert ein langsamer Dienst Ihren gesamten Agenten ein:

import requests
response = requests.get(url, timeout=10)  # 10s

# For LLM calls:
from openai import OpenAI
client = OpenAI(timeout=30.0)

Circuit Breaker

Wenn ein Tool wiederholt fehlschlägt, „öffnen“ Sie den Circuit und überspringen Sie das Tool für eine gewisse Zeit:

import time

class CircuitOpen(Exception):
    pass

def circuit(failure_threshold=5, recovery_timeout=60):
    def decorator(func):
        state = {'failures': 0, 'open_until': 0}
        def wrapper(*args, **kwargs):
            if time.time() < state['open_until']:
                raise CircuitOpen('circuit is open')
            try:
                result = func(*args, **kwargs)
                state['failures'] = 0
                return result
            except Exception:
                state['failures'] += 1
                if state['failures'] >= failure_threshold:
                    state['open_until'] = time.time() + recovery_timeout
                raise
        return wrapper
    return decorator

@circuit(failure_threshold=3, recovery_timeout=1)
def fragile_tool(x):
    if x < 0:
        raise ValueError('bad input')
    return x * 2

for x in [1, -1, -1, -1, -1]:
    try:
        print('ok', fragile_tool(x))
    except CircuitOpen as e:
        print('blocked:', e)
    except ValueError as e:
        print('failed:', e)

Fehler mit Kontext protokollieren

Protokollieren Sie genügend Informationen, um den Fehler nachträglich zu analysieren: Toolname, Argumente, Fehlertyp, Stacktrace, Request-ID, Benutzer-ID und Trace-ID. Senden Sie diese an Ihr Observability-Tool.

Graceful Degradation

Wenn ein kritisches Tool nicht verfügbar ist, teilen Sie dem Benutzer dies ehrlich mit, anstatt so zu tun, als hätte der Agent die Aufgabe erfolgreich ausgeführt:

if all_search_tools_failed:
    return 'I was unable to search the web right now. Please try again in a few minutes.'

Muster für Tool-Fehler

Wie lassen sich Tool-Ausnahmen innerhalb der Agentenschleife am sichersten behandeln?

Zusammenfassung

Tools können fehlschlagen. Fangen Sie Fehler ab, klassifizieren Sie sie, strukturieren Sie sie als Inhalt und ermöglichen Sie dem Agenten die Wiederherstellung. Fügen Sie für zuverlässigen Produktivbetrieb Timeouts, Wiederholungen und Circuit Breaker hinzu.

Häufig gestellte Fragen

Ist die Lektion „Tool-Fehler erkennen und beheben“ kostenlos?

Ja — der vollständige Text von „Tool-Fehler erkennen und beheben“ 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 „Tool-Fehler erkennen und beheben“?

Wenn ein Tool den Fehler 500 zurückgibt, senden Sie den Fehler an das Modell, damit es einen anderen Ansatz versucht, statt abzustürzen. 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 4 von 4.

Wie lange dauert die Lektion „Tool-Fehler erkennen und beheben“?

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. ReAct: Muster aus Schlussfolgern und Handeln
  2. ReAct von Grund auf implementieren
  3. Gängige Tool-Sets (Web, Taschenrechner, RAG)
  4. Tool-Fehler erkennen und beheben
← Zurück zu AI Agents