Retry and fallback logic helps your AI keep trying when something goes wrong and use a backup plan if needed. This makes your AI more reliable and user-friendly.
Retry and fallback logic in Agentic AI
Start learning this pattern below
Jump into concepts and practice - no test required
def retry_and_fallback(task, retries=3, fallback=None): for attempt in range(retries): try: return task() except Exception as e: print(f"Attempt {attempt + 1} failed: {e}") if fallback: return fallback() raise Exception("All retries failed and no fallback available.")
The task is the main function you want to try.
The fallback is a backup function if all retries fail.
task twice, then uses fallback if both fail.def task(): # Try to get data pass def fallback(): # Return default data pass result = retry_and_fallback(task, retries=2, fallback=fallback)
result = retry_and_fallback(lambda: 1 / 0, retries=3, fallback=lambda: 'default')
This program tries to run unreliable_task up to 5 times. If it keeps failing, it uses fallback_task. It prints each failure and the final result.
def unreliable_task(): import random if random.random() < 0.7: raise ValueError("Random failure") return "Success" def fallback_task(): return "Fallback result" def retry_and_fallback(task, retries=3, fallback=None): for attempt in range(retries): try: return task() except Exception as e: print(f"Attempt {attempt + 1} failed: {e}") if fallback: return fallback() raise Exception("All retries failed and no fallback available.") result = retry_and_fallback(unreliable_task, retries=5, fallback=fallback_task) print(f"Final result: {result}")
Set retries to a reasonable number to avoid long waits.
Fallback should be simple and safe to run.
Print or log errors to understand failures during retries.
Retry logic tries a task multiple times to handle temporary problems.
Fallback logic provides a backup plan if retries fail.
Together, they make AI systems more reliable and user-friendly.
Practice
What is the main purpose of retry logic in an AI system?
Solution
Step 1: Understand retry logic concept
Retry logic means trying the same task again if it fails temporarily, like retrying a phone call if the line is busy.Step 2: Match retry logic to options
Only To try a task multiple times to handle temporary failures describes trying multiple times to handle temporary failures, which fits retry logic.Final Answer:
To try a task multiple times to handle temporary failures -> Option DQuick Check:
Retry logic = multiple attempts [OK]
- Confusing retry with fallback
- Thinking retry stops after one failure
- Assuming retry changes the task
Which of the following is the correct Python syntax to retry a function fetch_data() up to 3 times?
for _ in range(3):
try:
fetch_data()
break
except Exception:
passSolution
Step 1: Check syntax for retry loop
The code uses a for loop to try 3 times, with try-except to catch errors and break if successful.Step 2: Identify correct syntax
for _ in range(3): try: fetch_data() break except Exception: pass matches the correct Python syntax with try-except inside the loop and break on success.Final Answer:
for _ in range(3): try: fetch_data() break except Exception: pass -> Option AQuick Check:
Correct retry loop syntax = for _ in range(3): try: fetch_data() break except Exception: pass [OK]
- Missing try-except block
- Incorrect loop syntax
- Using 'except' without 'try'
Consider this code snippet implementing retry and fallback logic:
def get_data():
for _ in range(2):
try:
return fetch_from_primary()
except Exception:
pass
return fetch_from_backup()If fetch_from_primary() fails both times, what will get_data() return?
Solution
Step 1: Analyze retry attempts
The function tries fetch_from_primary() twice inside the loop, catching exceptions and continuing if it fails.Step 2: Understand fallback behavior
If both retries fail, the function calls and returns fetch_from_backup() as a fallback.Final Answer:
The result of fetch_from_backup() -> Option BQuick Check:
Retries fail -> fallback used = The result of fetch_from_backup() [OK]
- Assuming primary always returns result
- Ignoring fallback call
- Thinking exception propagates
Identify the bug in this retry and fallback code snippet:
def get_info():
for i in range(3):
try:
return fetch_data()
except:
continue
return fallback_data()Solution
Step 1: Review exception handling
The except block catches all exceptions without specifying the exception type, which is bad practice and can hide bugs.Step 2: Identify best practice
It's better to catch specific exceptions to avoid masking unexpected errors.Final Answer:
The except block catches all exceptions without specifying type -> Option AQuick Check:
Catch specific exceptions, not all [OK]
- Using bare except blocks
- Ignoring exception types
- Assuming unused variables cause bugs
You want to design an AI agent that tries to fetch user data from a primary server up to 3 times. If all retries fail, it should fetch from a backup server. Which code snippet correctly implements this retry and fallback logic?
Option A:
for _ in range(3):
try:
data = fetch_primary()
except:
data = fetch_backup()
break
Option B:
for _ in range(3):
try:
data = fetch_primary()
break
except:
pass
else:
data = fetch_backup()
Option C:
try:
data = fetch_primary()
except:
data = fetch_backup()
Option D:
while True:
try:
data = fetch_primary()
break
except:
data = fetch_backup()
breakSolution
Step 1: Understand retry and fallback requirements
The agent must retry fetching from primary 3 times, then fallback only if all retries fail.Step 2: Analyze each option's behavior
Retries primary 3 times, then fallback if all fail uses a for loop with try-except and an else clause that runs fallback only if loop completes without break (all retries failed). This matches requirements.Final Answer:
Retries primary 3 times, then fallback if all fail -> Option CQuick Check:
Retry 3 times + fallback after = Retries primary 3 times, then fallback if all fail [OK]
- Running fallback too early
- Not retrying enough times
- Missing else clause for fallback
