순차 프로세스
순차 프로세스 (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
순차 프로세스를 쓰려면 크루를 구성하고 태스크를 실행하고 싶은 순서대로 정의하면 됩니다.
참고: 순차 프로세스의 각 태스크는 반드시 에이전트가 배정되어야 합니다. 모든
Task에agent파라미터가 포함되도록 하세요.
실제 동작 흐름
- 초기 태스크 (Initial Task): 첫 번째 에이전트가 태스크를 완료하고 완료 신호를 보냅니다.
- 후속 태스크 (Subsequent Tasks): 에이전트는 프로세스 유형에 따라 태스크를 이어받으며, 이전 태스크의 결과물이나 지시에 따라 실행됩니다.
- 완료 (Completion): 마지막 태스크가 실행되면 프로세스가 종료되고 프로젝트가 완료됩니다.
고급 기능
태스크 위임 (Task Delegation)
순차 프로세스에서 에이전트의 allow_delegation이 True로 설정되면 크루의 다른 에이전트에게 태스크를 위임할 수 있습니다. 이 기능은 크루에 에이전트가 여러 명 있으면 자동으로 켜집니다.
비동기 실행 (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): 이전 태스크의 컨텍스트를 활용해 이후 태스크에 정보를 제공하세요.
더 알아보기
- 계층형 프로세스 (Hierarchical Process) — 매니저 에이전트가 태스크를 조율하는 방식
- 커스텀 매니저 에이전트 (Custom Manager Agent)
- CrewAI 공식 개념: Processes