Auto-Wrap

Pass a `Workflow` directly in the `steps` list without wrapping in `Step()`.

1from kern.agent import Agent
2from kern.models.openai import OpenAIChat
3from kern.workflow.step import Step
4from kern.workflow.types import StepInput, StepOutput
5from kern.workflow.workflow import Workflow
6
7
8def summarize(step_input: StepInput) -> StepOutput:
9 prev = step_input.previous_step_content or ""
10 return StepOutput(content=f"Summary: {prev[:200]}")
11
12
13# Inner workflow
14researcher = Agent(
15 name="Researcher",
16 model=OpenAIChat(id="gpt-4o-mini"),
17 instructions="You are a research assistant. Be concise (2-3 sentences).",
18)
19
20inner_workflow = Workflow(
21 name="Research Workflow",
22 description="Researches a topic and summarizes",
23 steps=[
24 Step(name="research", agent=researcher),
25 Step(name="summarize", executor=summarize),
26 ],
27)
28
29# Outer workflow: pass inner_workflow directly (no Step wrapper)
30writer = Agent(
31 name="Writer",
32 model=OpenAIChat(id="gpt-4o-mini"),
33 instructions="Write a polished paragraph from the research provided.",
34)
35
36outer_workflow = Workflow(
37 name="Auto-Wrap Example",
38 description="Inner workflow passed directly in steps list",
39 steps=[
40 inner_workflow, # Auto-wrapped into Step(name="Research Workflow", workflow=inner_workflow)
41 Step(name="write", agent=writer),
42 ],
43)
44
45
46if __name__ == "__main__":
47 outer_workflow.print_response(
48 input="What are the benefits of open source software?",
49 stream=True,
50 )

Run the Example

1git clone https://github.com/kern-ai/kern.git
2cd kern/cookbook/04_workflows/06_advanced_concepts/workflow_as_a_step
3
4pip install kern-ai openai
5
6python nested_workflow_pass_direct_workflow.py