import asyncio
from upsonic import Agent, Task
from upsonic.db.database import SqliteDatabase
async def durable_recovery_new_agent():
db = SqliteDatabase(db_file="durable.db", session_id="session_1", user_id="user_1")
agent = Agent("openai/gpt-4o-mini", db=db, retry=1)
task = Task("What is 7 + 7? Reply with just the number.")
run_id = None
try:
result = await agent.do_async(task, return_output=True)
return result
except Exception as e:
print(f"Error caught: {e}")
agent_output = getattr(agent, '_agent_run_output', None)
if agent_output:
run_id = agent_output.run_id
if run_id:
print(f"Creating new agent to recover with run_id: {run_id}")
new_db = SqliteDatabase(db_file="durable.db", session_id="session_1", user_id="user_1")
new_agent = Agent("openai/gpt-4o-mini", db=new_db, retry=1)
result = await new_agent.continue_run_async(run_id=run_id, return_output=True)
return result
raise
asyncio.run(durable_recovery_new_agent())