52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
import asyncio
|
|
import time
|
|
|
|
from app.agent.manus import Manus
|
|
from app.flow.base import FlowType
|
|
from app.flow.flow_factory import FlowFactory
|
|
from app.logger import logger
|
|
|
|
|
|
async def run_flow():
|
|
agents = {
|
|
"manus": Manus(),
|
|
}
|
|
|
|
while True:
|
|
try:
|
|
prompt = input("Enter your prompt (or 'exit' to quit): ")
|
|
if prompt.lower() == "exit":
|
|
logger.info("Goodbye!")
|
|
break
|
|
|
|
flow = FlowFactory.create_flow(
|
|
flow_type=FlowType.PLANNING,
|
|
agents=agents,
|
|
)
|
|
if prompt.strip().isspace():
|
|
logger.warning("Skipping empty prompt.")
|
|
continue
|
|
logger.warning("Processing your request...")
|
|
|
|
try:
|
|
start_time = time.time()
|
|
result = await asyncio.wait_for(
|
|
flow.execute(prompt),
|
|
timeout=3600 # 60 minute timeout for the entire execution
|
|
)
|
|
elapsed_time = time.time() - start_time
|
|
logger.info(f"Request processed in {elapsed_time:.2f} seconds")
|
|
logger.info(result)
|
|
except asyncio.TimeoutError:
|
|
logger.error("Request processing timed out after 1 hour")
|
|
logger.info("Operation terminated due to timeout. Please try a simpler request.")
|
|
|
|
except KeyboardInterrupt:
|
|
logger.info("Operation cancelled by user.")
|
|
except Exception as e:
|
|
logger.error(f"Error: {str(e)}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(run_flow())
|