순차 프로세스

순차 프로세스 (Sequential Process)

CrewAI는 태스크를 구조적으로 실행하는 유연한 프레임워크로, 순차(sequential)와 계층형(hierarchical) 두 프로세스를 지원합니다. 그중 순차 프로세스는 태스크를 정해진 순서대로 하나씩 처리하기 때문에 딱딱 떨어지는 선형 진행이 필요한 프로젝트에 잘 맞습니다. 크루(crew)를 구성하고 태스크의 실행 순서만 지정하면 되니 개념부터 탄탄히 잡아봅시다.

출처: 공식문서

개요

순차 프로세스는 태스크가 차례로 실행되는 선형 진행 방식을 보장합니다. 특정 순서대로 완료해야 하는 프로젝트에 적합합니다.

핵심 특징

  • 선형 태스크 흐름 (Linear Task Flow): 미리 정해진 순서대로 태스크를 처리해 질서 있는 진행을 보장합니다.
  • 단순함 (Simplicity): 단계가 명확한 step-by-step 태스크 프로젝트에 가장 잘 맞습니다.
  • 쉬운 모니터링 (Easy Monitoring): 태스크 완료와 프로젝트 진행 상황을 쉽게 추적하게 해 줍니다.

순차 프로세스 구현하기

from crewai import Crew, Process, Agent, Task, TaskOutput, CrewOutput

# Define your agents
researcher = Agent(
  role='Researcher',
  goal='Conduct foundational research',
  backstory='An experienced researcher with a passion for uncovering insights'
)
analyst = Agent(
  role='Data Analyst',
  goal='Analyze research findings',
  backstory='A meticulous analyst with a knack for uncovering patterns'
)
writer = Agent(
  role='Writer',
  goal='Draft the final report',
  backstory='A skilled writer with a talent for crafting compelling narratives'
)

# Define your tasks
research_task = Task(
  description='Gather relevant data...', 
  agent=researcher, 
  expected_output='Raw Data'
)
analysis_task = Task(
  description='Analyze the data...', 
  agent=analyst, 
  expected_output='Data Insights'
)
writing_task = Task(
  description='Compose the report...', 
  agent=writer, 
  expected_output='Final Report'
)

# Form the crew with a sequential process
report_crew = Crew(
  agents=[researcher, analyst, writer],
  tasks=[research_task, analysis_task, writing_task],
  process=Process.sequential
)

# Execute the crew
result = report_crew.kickoff()

# Accessing the type-safe output
task_output: TaskOutput = result.tasks[0].output
crew_output: CrewOutput = result.output

순차 프로세스를 쓰려면 크루를 구성하고 태스크를 실행하고 싶은 순서대로 정의하면 됩니다.

참고: 순차 프로세스의 각 태스크는 반드시 에이전트가 배정되어야 합니다. 모든 Taskagent 파라미터가 포함되도록 하세요.

실제 동작 흐름

  • 초기 태스크 (Initial Task): 첫 번째 에이전트가 태스크를 완료하고 완료 신호를 보냅니다.
  • 후속 태스크 (Subsequent Tasks): 에이전트는 프로세스 유형에 따라 태스크를 이어받으며, 이전 태스크의 결과물이나 지시에 따라 실행됩니다.
  • 완료 (Completion): 마지막 태스크가 실행되면 프로세스가 종료되고 프로젝트가 완료됩니다.

고급 기능

태스크 위임 (Task Delegation)

순차 프로세스에서 에이전트의 allow_delegationTrue로 설정되면 크루의 다른 에이전트에게 태스크를 위임할 수 있습니다. 이 기능은 크루에 에이전트가 여러 명 있으면 자동으로 켜집니다.

비동기 실행 (Asynchronous Execution)

태스크는 비동기로 실행될 수 있어 적절한 경우 병렬 처리가 가능합니다. 비동기 태스크를 만들려면 태스크를 정의할 때 async_execution=True를 설정하세요.

메모리와 캐싱 (Memory and Caching)

CrewAI는 메모리와 캐싱 기능을 모두 지원합니다:

  • 메모리 (Memory): Crew 생성 시 memory=True를 설정해 켭니다. 에이전트가 태스크 간 정보를 유지할 수 있게 해 줍니다.
  • 캐싱 (Caching): 기본적으로 캐싱이 활성화됩니다. 끄려면 cache=False로 설정하세요.

콜백 (Callbacks)

태스크 단위와 스텝 단위로 콜백을 설정할 수 있습니다:

  • task_callback: 각 태스크 완료 후 실행됩니다.
  • step_callback: 에이전트 실행의 각 단계 후 실행됩니다.

사용량 지표 (Usage Metrics)

CrewAI는 모든 태스크와 에이전트의 토큰 사용량을 추적합니다. 실행 후 이 지표를 확인할 수 있습니다.

순차 프로세스 모범 사례

  • 순서가 중요 (Order Matters): 각 태스크가 이전 태스크를 기반으로 삼도록 논리적인 순서로 배치하세요.
  • 명확한 태스크 설명 (Clear Task Descriptions): 각 태스크에 상세한 설명을 제공해 에이전트를 효과적으로 안내하세요.
  • 적절한 에이전트 선택 (Appropriate Agent Selection): 각 태스크의 요구사항에 맞는 에이전트의 역할과 스킬을 매칭하세요.
  • 컨텍스트 활용 (Use Context): 이전 태스크의 컨텍스트를 활용해 이후 태스크에 정보를 제공하세요.

더 알아보기