mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 00:28:31 +00:00
* Almost working! * It fully works but not clean enought * Working but not clean engouth * Everything is workign * WIP. Working on adding and & or to flows. In the middle of setting up template for flow as well * template working * Everything is working * More changes and todos * Add more support for @start * Router working now * minor tweak to * minor tweak to conditions and event handling * Update logs * Too trigger happy with cleanup * Added in Thiago fix * Flow passing results again * Working on docs. * made more progress updates on docs * Finished talking about controlling flows * add flow output * fixed flow output section * add crews to flows section is looking good now * more flow doc changes * Update docs and add more examples * drop visualizer * save visualizer * pyvis is beginning to work * pyvis working * it is working * regular methods and triggers working. Need to work on router next. * properly identifying router and router children nodes. Need to fix color * children router working. Need to support loops * curving cycles but need to add curve conditionals * everythin is showing up properly need to fix curves * all working. needs to be cleaned up * adjust padding * drop lib * clean up prior to PR * incorporate joao feedback * final tweaks for joao * Refactor to make crews easier to understand * update CLI and templates * Fix crewai version in flows * Fix merge conflict
66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
#!/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)
|
|
|
|
@listen(generate_sentence_count)
|
|
def generate_poem(self):
|
|
print("Generating poem")
|
|
print(f"State before poem: {self.state}")
|
|
result = PoemCrew().crew().kickoff(inputs={"sentence_count": self.state.sentence_count})
|
|
|
|
print("Poem generated", result.raw)
|
|
self.state.poem = result.raw
|
|
|
|
print(f"State after generate_poem: {self.state}")
|
|
|
|
@listen(generate_poem)
|
|
def save_poem(self):
|
|
print("Saving poem")
|
|
print(f"State before save_poem: {self.state}")
|
|
with open("poem.txt", "w") as f:
|
|
f.write(self.state.poem)
|
|
print(f"State after save_poem: {self.state}")
|
|
|
|
async def run_flow():
|
|
"""
|
|
Run the flow.
|
|
"""
|
|
poem_flow = PoemFlow()
|
|
await poem_flow.kickoff()
|
|
|
|
async def plot_flow():
|
|
"""
|
|
Plot the flow.
|
|
"""
|
|
poem_flow = PoemFlow()
|
|
poem_flow.plot()
|
|
|
|
|
|
def main():
|
|
asyncio.run(run_flow())
|
|
|
|
|
|
def plot():
|
|
asyncio.run(plot_flow())
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|