from agno.workflow import Workflow
from agno.workflow.loop import Loop
from agno.workflow.step import Step
from agno.workflow.types import StepInput, StepOutput
from agno.db.sqlite import SqliteDb
def refine_analysis(step_input: StepInput) -> StepOutput:
return StepOutput(content="Iteration complete: Quality improved")
workflow = Workflow(
name="refinement_workflow",
db=SqliteDb(db_file="workflow.db"),
steps=[
Step(name="prepare", executor=prepare_data),
Loop(
name="refinement_loop",
steps=[Step(name="refine", executor=refine_analysis)],
max_iterations=5,
requires_confirmation=True,
confirmation_message="Start refinement loop? (up to 5 iterations)",
),
Step(name="finalize", executor=finalize_results),
],
)
run_output = workflow.run("Process data")
if run_output.is_paused:
for req in run_output.steps_requiring_confirmation:
print(f"Loop: {req.step_name}")
print(f"Message: {req.confirmation_message}")
if input("Start loop? (y/n): ").lower() == "y":
req.confirm()
print("Starting loop")
else:
req.reject()
print("Skipping loop")
run_output = workflow.continue_run(run_output)
print(run_output.content)