Tarefas Condicionais
Introdução
Seção intitulada “Introdução”As Tarefas Condicionais no crewAI permitem a adaptação dinâmica do fluxo de trabalho com base nos resultados de tarefas anteriores. Esse recurso poderoso possibilita que crews tomem decisões e executem tarefas seletivamente, aumentando a flexibilidade e a eficiência dos seus processos orientados por IA.
Exemplo de Uso
Seção intitulada “Exemplo de Uso”from typing import Listfrom pydantic import BaseModelfrom crewai import Agent, Crewfrom crewai.tasks.conditional_task import ConditionalTaskfrom crewai.tasks.task_output import TaskOutputfrom crewai.task import Taskfrom crewai_tools import SerperDevTool
# Define a condition function for the conditional task# If false, the task will be skipped, if true, then execute the task.def is_data_missing(output: TaskOutput) -> bool: return len(output.pydantic.events) < 10 # this will skip this task
# Define the agentsdata_fetcher_agent = Agent( role="Data Fetcher", goal="Fetch data online using Serper tool", backstory="Backstory 1", verbose=True, tools=[SerperDevTool()])
data_processor_agent = Agent( role="Data Processor", goal="Process fetched data", backstory="Backstory 2", verbose=True)
summary_generator_agent = Agent( role="Summary Generator", goal="Generate summary from fetched data", backstory="Backstory 3", verbose=True)
class EventOutput(BaseModel): events: List[str]
task1 = Task( description="Fetch data about events in San Francisco using Serper tool", expected_output="List of 10 things to do in SF this week", agent=data_fetcher_agent, output_pydantic=EventOutput,)
conditional_task = ConditionalTask( description=""" Check if data is missing. If we have less than 10 events, fetch more events using Serper tool so that we have a total of 10 events in SF this week.. """, expected_output="List of 10 Things to do in SF this week", condition=is_data_missing, agent=data_processor_agent,)
task3 = Task( description="Generate summary of events in San Francisco from fetched data", expected_output="A complete report on the customer and their customers and competitors, including their demographics, preferences, market positioning and audience engagement.", agent=summary_generator_agent,)
# Create a crew with the taskscrew = Crew( agents=[data_fetcher_agent, data_processor_agent, summary_generator_agent], tasks=[task1, conditional_task, task3], verbose=True, planning=True)
# Run the crewresult = crew.kickoff()print("results", result)