Table of Contents
Workflow Control and Sequencing
Efficient State Management
Flexible Input Handling
Event-Driven Architecture and Dynamic Adjustment
Task Routing and Conditional Execution
Setup and Installation
Handling Warnings
Loading Environment Variables (Replace placeholders with your actual keys)
Importing Necessary Modules
Defining the Agent
Defining Tasks
Creating Crews for Each Genre
Defining Genres and GenreState
Visualizing the Flow
Initiating the Flow
Home Technology peripherals AI What are Agentic Flows in CrewAI? - Analytics Vidhya

What are Agentic Flows in CrewAI? - Analytics Vidhya

Mar 18, 2025 pm 12:05 PM

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.

What are Agentic Flows in CrewAI? - Analytics Vidhya

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

What are Agentic Flows in CrewAI? - Analytics Vidhya

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.

{{TABLE_PLACEHOLDER21}}`or<td>Triggers a listener when any specified method emits an output.</td>
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>
Copy after login

Handling Warnings

<code>import warnings
warnings.filterwarnings('ignore')</code>
Copy after login

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>
Copy after login

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>
Copy after login

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>
Copy after login

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>
Copy after login

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>
Copy after login

Defining Genres and GenreState

<code>GENRES = ["action", "comedy", "drama", "sci-fi"]
class GenreState(BaseModel):
    genre: str = ""</code>
Copy after login

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>
Copy after login

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>
Copy after login

What are Agentic Flows in CrewAI? - Analytics Vidhya

Initiating the Flow

<code>recommendations = await flow.kickoff_async()</code>
Copy after login

What are Agentic Flows in CrewAI? - Analytics Vidhya What are Agentic Flows in CrewAI? - Analytics Vidhya

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1671
14
PHP Tutorial
1276
29
C# Tutorial
1256
24
How to Build MultiModal AI Agents Using Agno Framework? How to Build MultiModal AI Agents Using Agno Framework? Apr 23, 2025 am 11:30 AM

While working on Agentic AI, developers often find themselves navigating the trade-offs between speed, flexibility, and resource efficiency. I have been exploring the Agentic AI framework and came across Agno (earlier it was Phi-

How to Add a Column in SQL? - Analytics Vidhya How to Add a Column in SQL? - Analytics Vidhya Apr 17, 2025 am 11:43 AM

SQL's ALTER TABLE Statement: Dynamically Adding Columns to Your Database In data management, SQL's adaptability is crucial. Need to adjust your database structure on the fly? The ALTER TABLE statement is your solution. This guide details adding colu

OpenAI Shifts Focus With GPT-4.1, Prioritizes Coding And Cost Efficiency OpenAI Shifts Focus With GPT-4.1, Prioritizes Coding And Cost Efficiency Apr 16, 2025 am 11:37 AM

The release includes three distinct models, GPT-4.1, GPT-4.1 mini and GPT-4.1 nano, signaling a move toward task-specific optimizations within the large language model landscape. These models are not immediately replacing user-facing interfaces like

Beyond The Llama Drama: 4 New Benchmarks For Large Language Models Beyond The Llama Drama: 4 New Benchmarks For Large Language Models Apr 14, 2025 am 11:09 AM

Troubled Benchmarks: A Llama Case Study In early April 2025, Meta unveiled its Llama 4 suite of models, boasting impressive performance metrics that positioned them favorably against competitors like GPT-4o and Claude 3.5 Sonnet. Central to the launc

New Short Course on Embedding Models by Andrew Ng New Short Course on Embedding Models by Andrew Ng Apr 15, 2025 am 11:32 AM

Unlock the Power of Embedding Models: A Deep Dive into Andrew Ng's New Course Imagine a future where machines understand and respond to your questions with perfect accuracy. This isn't science fiction; thanks to advancements in AI, it's becoming a r

How ADHD Games, Health Tools & AI Chatbots Are Transforming Global Health How ADHD Games, Health Tools & AI Chatbots Are Transforming Global Health Apr 14, 2025 am 11:27 AM

Can a video game ease anxiety, build focus, or support a child with ADHD? As healthcare challenges surge globally — especially among youth — innovators are turning to an unlikely tool: video games. Now one of the world’s largest entertainment indus

Rocket Launch Simulation and Analysis using RocketPy - Analytics Vidhya Rocket Launch Simulation and Analysis using RocketPy - Analytics Vidhya Apr 19, 2025 am 11:12 AM

Simulate Rocket Launches with RocketPy: A Comprehensive Guide This article guides you through simulating high-power rocket launches using RocketPy, a powerful Python library. We'll cover everything from defining rocket components to analyzing simula

Google Unveils The Most Comprehensive Agent Strategy At Cloud Next 2025 Google Unveils The Most Comprehensive Agent Strategy At Cloud Next 2025 Apr 15, 2025 am 11:14 AM

Gemini as the Foundation of Google’s AI Strategy Gemini is the cornerstone of Google’s AI agent strategy, leveraging its advanced multimodal capabilities to process and generate responses across text, images, audio, video and code. Developed by DeepM

See all articles