Sequential Workflow

Use named steps for sequential execution with clear tracking.

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.

Pattern: Sequential Named Steps

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.

1from kern.agent import Agent
2from kern.db.sqlite import SqliteDb
3from kern.models.openai import OpenAIResponses
4from kern.team import Team
5from kern.tools.hackernews import HackerNewsTools
6from kern.tools.yfinance import YFinanceTools
7from kern.workflow.step import Step
8from kern.workflow.workflow import Workflow
9
10# Define agents
11hackernews_agent = Agent(
12 name="Hackernews Agent",
13 model=OpenAIResponses(id="gpt-5.2"),
14 tools=[HackerNewsTools()],
15 role="Extract key insights and content from Hackernews posts",
16)
17finance_agent = Agent(
18 name="Finance Agent",
19 model=OpenAIResponses(id="gpt-5.2"),
20 tools=[YFinanceTools()],
21 role="Get stock prices and financial data",
22)
23
24# Define research team for complex analysis
25research_team = Team(
26 name="Research Team",
27 members=[hackernews_agent, finance_agent],
28 instructions="Research tech topics and related stocks",
29)
30
31content_planner = Agent(
32 name="Content Planner",
33 model=OpenAIResponses(id="gpt-5.2"),
34 instructions=[
35 "Plan a content schedule over 4 weeks for the provided topic and research content",
36 "Ensure that I have posts for 3 posts per week",
37 ],
38)
39
40# Define steps
41research_step = Step(
42 name="Research Step",
43 team=research_team,
44)
45
46content_planning_step = Step(
47 name="Content Planning Step",
48 agent=content_planner,
49)
50
51content_creation_workflow = Workflow(
52 name="Content Creation Workflow",
53 description="Automated content creation from blog posts to social media",
54 db=SqliteDb(
55 session_table="workflow_session",
56 db_file="tmp/workflow.db",
57 ),
58 steps=[research_step, content_planning_step],
59)
60
61# Create and use workflow
62if __name__ == "__main__":
63 content_creation_workflow.print_response(
64 input="AI trends in 2024",
65 markdown=True,
66 )