계층형 프로세스
계층형 프로세스 (Hierarchical Process)
계층형 프로세스는 전통적인 조직의 위계를 흉내 내서 태스크 위임과 실행을 효율적으로 다루는 구조적 접근입니다. 매니저(manager) 에이전트가 워크플로우를 조율하고 태스크를 분배하며 결과를 검증해 줍니다. GPT-4 같은 고급 모델을 활용해 토큰 사용을 최적화하면서 복잡한 태스크를 더 효율적으로 처리하도록 설계되었습니다.
출처: 공식문서
개요
기본적으로 CrewAI의 태스크는 순차 프로세스로 관리됩니다. 계층형 접근을 쓰면 태스크 관리에 명확한 위계가 생기는데, 매니저 에이전트가 워크플로우를 조율하고 태스크를 위임하며 결과를 검증합니다. 이 매니저 에이전트는 CrewAI가 자동으로 만들 수도 있고, 사용자가 직접 지정할 수도 있습니다.
핵심 특징
- 태스크 위임 (Task Delegation): 매니저 에이전트가 크루 구성원의 역할과 능력에 따라 태스크를 배분합니다.
- 결과 검증 (Result Validation): 매니저가 결과를 평가해 요구 기준을 충족하는지 확인합니다.
- 효율적 워크플로우 (Efficient Workflow): 기업 구조를 흉내 내 태스크 관리를 체계적으로 진행합니다.
- 시스템 프롬프트 처리 (System Prompt Handling): 미리 정의된 프롬프트를 사용할지 선택할 수 있습니다.
- 중단어 제어 (Stop Words Control): o1 계열 모델을 포함한 다양한 모델을 지원하며 중단어(stop words) 사용 여부를 선택할 수 있습니다.
- 컨텍스트 윈도우 존중 (Context Window Respect): 컨텍스트 윈도우 존중을 켜서 중요한 컨텍스트를 우선시하며, 이제 기본 동작입니다.
- 위임 제어 (Delegation Control): 이제 기본값으로 위임이 비활성화되어 사용자가 명시적으로 제어합니다.
- 분당 최대 요청 수 (Max Requests Per Minute): 분당 최대 요청 수를 설정할 수 있습니다.
- 최대 반복 수 (Max Iterations): 최종 답을 얻기 위한 최대 반복 횟수를 제한합니다.
계층형 프로세스 구현하기
from crewai import Crew, Process, Agent
# Agents are defined with attributes for backstory, cache, and verbose mode
researcher = Agent(
role='Researcher',
goal='Conduct in-depth analysis',
backstory='Experienced data analyst with a knack for uncovering hidden trends.',
)
writer = Agent(
role='Writer',
goal='Create engaging content',
backstory='Creative writer passionate about storytelling in technical domains.',
)
# Establishing the crew with a hierarchical process and additional configurations
project_crew = Crew(
tasks=[...], # Tasks to be delegated and executed under the manager's supervision
agents=[researcher, writer],
manager_llm="gpt-4o", # Specify which LLM the manager should use
process=Process.hierarchical,
planning=True,
)
계층형 프로세스를 쓰려면 기본 동작이 Process.sequential이므로 process 속성을 Process.hierarchical로 명시적으로 설정해야 합니다. 매니저가 지정된 크루를 정의하고 명확한 명령 체계를 세우세요. 태스크 위임과 실행을 위해 에이전트 레벨에서 도구를 배정할 수 있으며, 태스크 실행 중 도구 가용성을 정밀하게 제어하려면 태스크 레벨에서도 도구를 지정할 수 있습니다.
manager_llm 파라미터를 구성하는 것은 계층형 프로세스에서 매우 중요합니다. 시스템은 제대로 동작하기 위해 매니저 LLM이 설정돼 있어야 하며, 이에 맞춘 의사결정을 보장합니다.
커스텀 매니저 에이전트 사용하기
# Define a custom manager agent
manager = Agent(
role="Project Manager",
goal="Efficiently manage the crew and ensure high-quality task completion",
backstory="You're an experienced project manager, skilled in overseeing complex projects and guiding teams to success.",
allow_delegation=True,
)
# Use the custom manager in your crew
project_crew = Crew(
tasks=[...],
agents=[researcher, writer],
manager_agent=manager, # Use your custom manager agent
process=Process.hierarchical,
planning=True,
)
또는 프로젝트의 관리 요구에 맞춰 특정 속성을 가진 커스텀 매니저 에이전트를 만들 수 있습니다. 이렇게 하면 매니저의 동작과 역량을 더 잘 제어할 수 있습니다.
매니저 에이전트를 만들고 커스터마이즈하는 자세한 내용은 Custom Manager Agent 문서를 확인하세요.
실제 동작 흐름
- 태스크 배정 (Task Assignment): 매니저가 각 에이전트의 역량과 가용 도구를 고려해 태스크를 전략적으로 배정합니다.
- 실행과 검토 (Execution and Review): 에이전트가 태스크를 완료하며, 비동기 실행과 콜백 함수를 이용해 워크플로우를 간결하게 만들 수 있습니다.
- 순차적 태스크 진행 (Sequential Task Progression): 계층형 프로세스라도 태스크는 매니저의 감독 아래 논리적 순서를 따라 순조롭게 진행됩니다.
결론
CrewAI에서 올바른 구성과 시스템 역량에 대한 이해를 갖추고 계층형 프로세스를 도입하면, 체계적이고 효율적인 프로젝트 관리가 가능합니다. 고급 기능과 커스터마이즈 기능을 활용해 워크플로우를 자신의 필요에 맞게 조정하고, 최적의 태스크 실행과 프로젝트 성공을 보장하세요.