This example demonstrates how to use named steps in a workflow.
This example demonstrates Workflows using named Step objects for better tracking
and organization. This pattern provides clear step identification and enhanced logging
while maintaining simple sequential execution.
When to use: Linear processes where you want clear step identification, better logging,
and future platform support. Ideal when you have distinct phases that benefit from naming.
sequence_of_steps.py
Copy
Ask AI
from agno.agent import Agentfrom agno.db.sqlite import SqliteDbfrom agno.models.openai import OpenAIChatfrom agno.team import Teamfrom agno.tools.googlesearch import GoogleSearchToolsfrom agno.tools.hackernews import HackerNewsToolsfrom agno.workflow.step import Stepfrom agno.workflow.workflow import Workflow# Define agentshackernews_agent = Agent( name="Hackernews Agent", model=OpenAIChat(id="gpt-5-mini"), tools=[HackerNewsTools()], role="Extract key insights and content from Hackernews posts",)web_agent = Agent( name="Web Agent", model=OpenAIChat(id="gpt-5-mini"), tools=[GoogleSearchTools()], role="Search the web for the latest news and trends",)# Define research team for complex analysisresearch_team = Team( name="Research Team", members=[hackernews_agent, web_agent], instructions="Research tech topics from Hackernews and the web",)content_planner = Agent( name="Content Planner", model=OpenAIChat(id="gpt-5-mini"), instructions=[ "Plan a content schedule over 4 weeks for the provided topic and research content", "Ensure that I have posts for 3 posts per week", ],)# Define stepsresearch_step = Step( name="Research Step", team=research_team,)content_planning_step = Step( name="Content Planning Step", agent=content_planner,)content_creation_workflow = Workflow( name="Content Creation Workflow", description="Automated content creation from blog posts to social media", db=SqliteDb( session_table="workflow_session", db_file="tmp/workflow.db", ), steps=[research_step, content_planning_step],)# Create and use workflowif __name__ == "__main__": content_creation_workflow.print_response( input="AI trends in 2024", markdown=True, )
This was a synchronous non-streaming example of this pattern. To checkout async and streaming versions, see the cookbooks-