From 056a8e734b3527503ff1082f587a0907bd73b369 Mon Sep 17 00:00:00 2001 From: Brandon Hancock Date: Mon, 21 Oct 2024 17:09:59 -0400 Subject: [PATCH] make flow kickoff sync --- src/crewai/cli/templates/flow/main.py | 29 +++++++++++--------- src/crewai/cli/templates/flow/pyproject.toml | 4 +-- src/crewai/flow/flow.py | 5 +++- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/crewai/cli/templates/flow/main.py b/src/crewai/cli/templates/flow/main.py index 2574e9384..73684051a 100644 --- a/src/crewai/cli/templates/flow/main.py +++ b/src/crewai/cli/templates/flow/main.py @@ -1,40 +1,47 @@ #!/usr/bin/env python -import asyncio from random import randint from pydantic import BaseModel + from crewai.flow.flow import Flow, listen, start + from .crews.poem_crew.poem_crew import PoemCrew + class PoemState(BaseModel): sentence_count: int = 1 poem: str = "" + class PoemFlow(Flow[PoemState]): @start() def generate_sentence_count(self): print("Generating sentence count") - # Generate a number between 1 and 5 - self.state.sentence_count = randint(1, 5) + self.state.sentence_count = randint(1, 5) @listen(generate_sentence_count) def generate_poem(self): print("Generating poem") - result = PoemCrew().crew().kickoff(inputs={"sentence_count": self.state.sentence_count}) - + result = ( + PoemCrew() + .crew() + .kickoff(inputs={"sentence_count": self.state.sentence_count}) + ) + print("Poem generated", result.raw) self.state.poem = result.raw - + @listen(generate_poem) def save_poem(self): print("Saving poem") with open("poem.txt", "w") as f: f.write(self.state.poem) -async def kickoff(): + +def kickoff(): poem_flow = PoemFlow() - await poem_flow.kickoff() + poem_flow.kickoff() def plot(): @@ -42,9 +49,5 @@ def plot(): poem_flow.plot() -def main(): - asyncio.run(kickoff()) - - if __name__ == "__main__": - main() + kickoff() diff --git a/src/crewai/cli/templates/flow/pyproject.toml b/src/crewai/cli/templates/flow/pyproject.toml index 4dbb97401..f93390741 100644 --- a/src/crewai/cli/templates/flow/pyproject.toml +++ b/src/crewai/cli/templates/flow/pyproject.toml @@ -6,12 +6,10 @@ authors = [{ name = "Your Name", email = "you@example.com" }] requires-python = ">=3.10,<=3.13" dependencies = [ "crewai[tools]>=0.74.2,<1.0.0", - "asyncio" ] [project.scripts] -{{folder_name}} = "{{folder_name}}.main:main" -kickoff = "{{folder_name}}.main:main" +kickoff = "{{folder_name}}.main:kickoff" plot = "{{folder_name}}.main:plot" [build-system] diff --git a/src/crewai/flow/flow.py b/src/crewai/flow/flow.py index 66fa49659..de9b2eeb2 100644 --- a/src/crewai/flow/flow.py +++ b/src/crewai/flow/flow.py @@ -190,7 +190,10 @@ class Flow(Generic[T], metaclass=FlowMeta): """Returns the list of all outputs from executed methods.""" return self._method_outputs - async def kickoff(self) -> Any: + def kickoff(self) -> Any: + return asyncio.run(self.kickoff_async()) + + async def kickoff_async(self) -> Any: if not self._start_methods: raise ValueError("No start method defined")