Streamline your AI workflows with CrewAI Flows! This powerful framework provides structured patterns for orchestrating interactions between AI agents, enabling developers to seamlessly integrate coding tasks and Crews for robust AI automation. CrewAI's Agentic Flows offer event-driven workflows, simplifying task coordination, state management, and execution control within your AI applications.
Table of Contents
- What are Crews?
- Understanding Flows
- Workflow Control and Sequencing
- Efficient State Management
- Flexible Input Handling
- Event-Driven Architecture and Dynamic Adjustment
- Task Routing and Conditional Execution
- Flows in Practice: A Movie Recommendation Example
- Setup and Installation
- Handling Warnings
- Loading Environment Variables
- Importing Necessary Modules
- Defining the Agent
- Defining Tasks
- Creating Crews for Each Genre
- Defining Genres and GenreState
- Building the
MovieRecommendationFlow
- Visualizing the Flow
- Initiating the Flow
- Conclusion
- Frequently Asked Questions
What are Crews?
CrewAI's Crews facilitate the orchestration of AI agents for automated task completion. They enable smooth collaboration between agents to solve complex problems. But why "Flows"? Because CrewAI Flows provide structured patterns for managing these agent interactions, defining how agents communicate and work together to achieve specific goals. Flows are essentially sequences of tasks, where the output of one task can trigger the next. The system offers flexible mechanisms for managing state and conditional execution.
Understanding Flows
Flows operate on an event-driven model, reacting to specific triggers and conditions. This allows for dynamic workflow adjustments based on task execution results, streamlining complex AI processes.
Workflow Control and Sequencing
CrewAI Flows allow developers to structure task sequences and control information flow between tasks. Tasks can be chained together, creating a logical order of operations. Conditional execution of tasks based on prior task outputs is also supported.
Efficient State Management
Structured state management, often using Pydantic's BaseModel
, ensures data consistency and structure between tasks. This provides type safety, validation, and easier management of complex data states.
Flexible Input Handling
Flows accept inputs to initialize or update their state at any point during execution. Inputs can be provided at the start, during, or after execution, depending on workflow needs.
Event-Driven Architecture and Dynamic Adjustment
CrewAI Flows dynamically adjust based on task results. Tasks can listen for outputs from preceding steps, creating a reactive system where new tasks are triggered based on previous outputs. The @listen()
and @router()
decorators provide this flexibility, enabling conditional and dynamic task linking. The @start()
decorator marks the flow's starting point.
Decorators and Conditional Logic | Description |
@listen() |
Creates listener methods triggered by specific events or task outputs. |
@router() |
Enables conditional routing, allowing different execution paths based on prior step outputs. Useful for managing success/failure outcomes. |
and_` | Triggers a listener only when all specified methods emit outputs. |
Task Routing and Conditional Execution
Flows utilize routing to control execution based on conditions. The @router()
decorator allows methods to select execution paths based on prior task results. For example, a method might check a previous task's output and choose a path based on whether specific conditions are met.
Flows in Practice: A Movie Recommendation Example
Let's create an agentic system using CrewAI Flows to recommend movies based on genre.
Setup and Installation
<code>!pip install crewai -U !pip install crewai-tools</code>
Handling Warnings
<code>import warnings warnings.filterwarnings('ignore')</code>
Loading Environment Variables (Replace placeholders with your actual keys)
<code>import os os.environ["OPENAI_API_KEY"] = 'YOUR_OPENAI_API_KEY' os.environ['OPENAI_MODEL_NAME'] = 'gpt-4o-mini-2024-07-18' os.environ["SERPER_API_KEY"]='YOUR_SERPER_API_KEY'</code>
Importing Necessary Modules
<code>from crewai import Agent, Task, Crew from crewai.flow.flow import listen, start, and_, or_, router from crewai_tools import SerperDevTool from crewai import Flow from pydantic import BaseModel</code>
Defining the Agent
A single agent will be used for all tasks. This agent uses a Google search tool.
<code>movie_agent = Agent( role="Recommend popular movie specific to the genre", goal="Provide a list of movies based on user preferences", backstory="You are a cinephile, " "you recommend good movies to your friends, " "the movies should be of the same genre", tools=[SerperDevTool()], verbose=True )</code>
Defining Tasks
<code>action_task = Task(name="ActionTask", description="Recommends a popular action movie", expected_output="A list of 10 popular movies", agent=movie_agent) comedy_task = Task(name="ComedyTask", description="Recommends a popular comedy movie", expected_output="A list of 10 popular movies", agent=movie_agent) drama_task = Task(name="DramaTask", description="Recommends a popular drama movie", expected_output="A list of 10 popular movies", agent=movie_agent) sci_fi_task = Task(name="SciFiTask", description="Recommends a sci-fi movie", expected_output="A list of 10 popular movies", agent=movie_agent)</code>
Creating Crews for Each Genre
<code>action_crew = Crew(agents=[movie_agent], tasks=[action_task], verbose=True) comedy_crew = Crew(agents=[movie_agent], tasks=[comedy_task], verbose=True) drama_crew = Crew(agents=[movie_agent], tasks=[drama_task], verbose=True) sci_fi_crew = Crew(agents=[movie_agent], tasks=[sci_fi_task], verbose=True)</code>
Defining Genres and GenreState
<code>GENRES = ["action", "comedy", "drama", "sci-fi"] class GenreState(BaseModel): genre: str = ""</code>
Building the MovieRecommendationFlow
This class inherits from the Flow
class and uses state functionality.
<code>class MovieRecommendationFlow(Flow[GenreState]): @start() def input_genre(self): genre = input("Enter a genre: ") print(f"Genre input received: {genre}") self.state.genre = genre return genre @router(input_genre) def route_to_crew(self): genre = self.state.genre if genre not in GENRES: raise ValueError(f"Invalid genre: {genre}") if genre == "action": return "action" elif genre == "comedy": return "comedy" elif genre == "drama": return "drama" elif genre == "sci-fi": return "sci-fi" @listen("action") def action_movies(self, genre): recommendations = action_crew.kickoff() return recommendations @listen("comedy") def comedy_movies(self, genre): recommendations = comedy_crew.kickoff() return recommendations @listen("drama") def drama_movies(self, genre): recommendations = drama_crew.kickoff() return recommendations @listen("sci-fi") def sci_fi_movies(self, genre): recommendations = sci_fi_crew.kickoff() return recommendations @listen(or_("action_movies", "comedy_movies", "drama_movies", "sci_fi_movies")) def finalize_recommendation(self, recommendations): print("Final movie recommendations:") return recommendations</code>
The @listen
, @router
, or_
, and @start
decorators manage the flow's execution.
Visualizing the Flow
<code>flow = MovieRecommendationFlow() flow.plot() #This will generate a file, you'll need to display it separately (e.g., using an image display function in your environment)</code>
Initiating the Flow
<code>recommendations = await flow.kickoff_async()</code>
Conclusion
CrewAI's event-driven workflows simplify AI task orchestration. The flexible and adaptive nature of CrewAI Flows, combined with features like @listen()
, @router()
, and state management, makes them powerful tools for building efficient and dynamic AI applications.
Frequently Asked Questions
Q1. How do I pass inputs to a Flow? Use flow.kickoff(inputs={"counter": 10})
.
Q2. What's the difference between @start()
and @listen()
? @start()
marks flow starting points; @listen()
marks methods triggered by task completion.
Q3. How do I visualize my flow? Use flow.plot()
.
Q4. Can I incorporate human feedback? Yes, CrewAI Flows support human-in-the-loop feedback.
The above is the detailed content of What are Agentic Flows in CrewAI? - Analytics Vidhya. For more information, please follow other related articles on the PHP Chinese website!
![Can't use ChatGPT! Explaining the causes and solutions that can be tested immediately [Latest 2025]](https://img.php.cn/upload/article/001/242/473/174717025174979.jpg?x-oss-process=image/resize,p_40)
ChatGPT is not accessible? This article provides a variety of practical solutions! Many users may encounter problems such as inaccessibility or slow response when using ChatGPT on a daily basis. This article will guide you to solve these problems step by step based on different situations. Causes of ChatGPT's inaccessibility and preliminary troubleshooting First, we need to determine whether the problem lies in the OpenAI server side, or the user's own network or device problems. Please follow the steps below to troubleshoot: Step 1: Check the official status of OpenAI Visit the OpenAI Status page (status.openai.com) to see if the ChatGPT service is running normally. If a red or yellow alarm is displayed, it means Open

On 10 May 2025, MIT physicist Max Tegmark told The Guardian that AI labs should emulate Oppenheimer’s Trinity-test calculus before releasing Artificial Super-Intelligence. “My assessment is that the 'Compton constant', the probability that a race to

AI music creation technology is changing with each passing day. This article will use AI models such as ChatGPT as an example to explain in detail how to use AI to assist music creation, and explain it with actual cases. We will introduce how to create music through SunoAI, AI jukebox on Hugging Face, and Python's Music21 library. Through these technologies, everyone can easily create original music. However, it should be noted that the copyright issue of AI-generated content cannot be ignored, and you must be cautious when using it. Let’s explore the infinite possibilities of AI in the music field together! OpenAI's latest AI agent "OpenAI Deep Research" introduces: [ChatGPT]Ope

The emergence of ChatGPT-4 has greatly expanded the possibility of AI applications. Compared with GPT-3.5, ChatGPT-4 has significantly improved. It has powerful context comprehension capabilities and can also recognize and generate images. It is a universal AI assistant. It has shown great potential in many fields such as improving business efficiency and assisting creation. However, at the same time, we must also pay attention to the precautions in its use. This article will explain the characteristics of ChatGPT-4 in detail and introduce effective usage methods for different scenarios. The article contains skills to make full use of the latest AI technologies, please refer to it. OpenAI's latest AI agent, please click the link below for details of "OpenAI Deep Research"

ChatGPT App: Unleash your creativity with the AI assistant! Beginner's Guide The ChatGPT app is an innovative AI assistant that handles a wide range of tasks, including writing, translation, and question answering. It is a tool with endless possibilities that is useful for creative activities and information gathering. In this article, we will explain in an easy-to-understand way for beginners, from how to install the ChatGPT smartphone app, to the features unique to apps such as voice input functions and plugins, as well as the points to keep in mind when using the app. We'll also be taking a closer look at plugin restrictions and device-to-device configuration synchronization

ChatGPT Chinese version: Unlock new experience of Chinese AI dialogue ChatGPT is popular all over the world, did you know it also offers a Chinese version? This powerful AI tool not only supports daily conversations, but also handles professional content and is compatible with Simplified and Traditional Chinese. Whether it is a user in China or a friend who is learning Chinese, you can benefit from it. This article will introduce in detail how to use ChatGPT Chinese version, including account settings, Chinese prompt word input, filter use, and selection of different packages, and analyze potential risks and response strategies. In addition, we will also compare ChatGPT Chinese version with other Chinese AI tools to help you better understand its advantages and application scenarios. OpenAI's latest AI intelligence

These can be thought of as the next leap forward in the field of generative AI, which gave us ChatGPT and other large-language-model chatbots. Rather than simply answering questions or generating information, they can take action on our behalf, inter

Efficient multiple account management techniques using ChatGPT | A thorough explanation of how to use business and private life! ChatGPT is used in a variety of situations, but some people may be worried about managing multiple accounts. This article will explain in detail how to create multiple accounts for ChatGPT, what to do when using it, and how to operate it safely and efficiently. We also cover important points such as the difference in business and private use, and complying with OpenAI's terms of use, and provide a guide to help you safely utilize multiple accounts. OpenAI


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Zend Studio 13.0.1
Powerful PHP integrated development environment

Notepad++7.3.1
Easy-to-use and free code editor
