조건부 태스크
crewAI의 조건부 작업(Conditional Tasks)은 이전 작업의 결과에 따라 동적으로 워크플로우를 조정할 수 있도록 합니다.
이 강력한 기능을 통해 crew는 선택적으로 결정을 내리고 작업을 수행할 수 있어, AI 기반 프로세스의 유연성과 효율성이 향상됩니다.
예제 사용법
섹션 제목: “예제 사용법”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)