소개

CrewAI의 계층적 프로세스는 전통적인 조직 구조를 모방해 효율적인 업무 위임과 실행을 위한 구조화된 접근 방식을 도입한다. 이러한 체계적인 워크플로는 업무가 최적의 효율성과 정확성으로 처리되도록 보장함으로써 프로젝트 결과를 향상시킨다.

계층적 프로세스는 GPT-4와 같은 고급 모델을 활용하도록 설계되어 복잡한 업무를 더 효율적으로 처리하면서 토큰 사용을 최적화한다.

계층적 프로세스 개요

기본적으로 CrewAI는 순차적 프로세스로 작업을 관리한다. 하지만 계층적 접근 방식을 도입하면 작업 관리에 명확한 계층 구조를 적용할 수 있다. 이 방식에서는 ‘매니저’ 에이전트가 워크플로를 조율하고, 작업을 위임하며, 결과를 검증하여 효율적이고 원활한 실행을 보장한다. 이 매니저 에이전트는 CrewAI가 자동으로 생성하거나 사용자가 직접 설정할 수 있다.

주요 기능

  • 작업 위임: 관리자 에이전트가 각 구성원의 역할과 역량에 따라 작업을 배분한다.
  • 결과 검증: 관리자가 결과를 평가해 요구 사항을 충족하는지 확인한다.
  • 효율적인 워크플로: 기업 구조를 모방해 작업 관리를 체계적으로 수행한다.
  • 시스템 프롬프트 처리: 시스템이 미리 정의된 프롬프트를 사용할지 여부를 선택적으로 지정한다.
  • 불용어 제어: 불용어를 사용할지 여부를 선택적으로 지정하며, o1 모델을 포함한 다양한 모델을 지원한다.
  • 컨텍스트 윈도우 존중: 중요한 컨텍스트를 우선시하도록 컨텍스트 윈도우 존중 기능을 활성화한다. 이 기능은 이제 기본 동작이다.
  • 위임 제어: 사용자가 명시적으로 제어할 수 있도록 위임 기능은 기본적으로 비활성화된다.
  • 분당 최대 요청 수: 분당 처리할 최대 요청 수를 설정할 수 있다.
  • 최대 반복 횟수: 최종 답변을 얻기 위한 최대 반복 횟수를 제한한다.

계층적 프로세스 구현

계층적 프로세스를 활용하려면 프로세스 속성을 Process.hierarchical로 명시적으로 설정해야 한다. 기본값은 Process.sequential이기 때문이다. 크루를 정의할 때 관리자를 지정하고 명확한 명령 체계를 수립한다.

작업 위임과 실행을 원활하게 하려면 에이전트 수준에서 도구를 할당한다. 관리자의 지시에 따라 지정된 에이전트가 작업을 수행할 수 있도록 한다. 작업 실행 중 도구 사용을 정밀하게 제어하려면 작업 수준에서 도구를 지정할 수도 있다.

계층적 프로세스에서 manager_llm 매개변수를 설정하는 것은 매우 중요하다. 시스템이 올바르게 작동하려면 관리자 LLM을 설정해야 하며, 이를 통해 맞춤형 의사결정이 가능해진다.

from langchain_openai import ChatOpenAI
from crewai import Crew, Process, Agent

# 에이전트는 배경 이야기, 캐시, 상세 모드 등의 속성으로 정의된다
researcher = Agent(
    role='연구원',
    goal='심층 분석 수행',
    backstory='숨겨진 트렌드를 발견하는 데 능숙한 경험 많은 데이터 분석가',
    cache=True,
    verbose=False,
    # tools=[]  # 선택적으로 지정 가능하며, 기본값은 빈 리스트다
    use_system_prompt=True,  # 이 에이전트에 대해 시스템 프롬프트를 활성화 또는 비활성화한다
    max_rpm=30,  # 분당 요청 수 제한
    max_iter=5  # 최종 답변을 위한 최대 반복 횟수
)
writer = Agent(
    role='작가',
    goal='매력적인 콘텐츠 작성',
    backstory='기술 분야에서 스토리텔링에 열정적인 창의적인 작가',
    cache=True,
    verbose=False,
    # tools=[]  # 선택적으로 도구를 지정할 수 있으며, 기본값은 빈 리스트다
    use_system_prompt=True,  # 이 에이전트에 대해 시스템 프롬프트를 활성화 또는 비활성화한다
    max_rpm=30,  # 분당 요청 수 제한
    max_iter=5  # 최종 답변을 위한 최대 반복 횟수
)

# 계층적 프로세스와 추가 설정으로 크루를 구성한다
project_crew = Crew(
    tasks=[...],  # 관리자의 감독 하에 위임되고 실행될 작업들
    agents=[researcher, writer],
    manager_llm=ChatOpenAI(temperature=0, model="gpt-4"),  # manager_agent가 설정되지 않은 경우 필수
    process=Process.hierarchical,  # 계층적 관리 방식을 지정한다
    respect_context_window=True,  # 작업에 대한 컨텍스트 윈도우를 준수한다
    memory=True,  # 작업 실행을 개선하기 위해 메모리 사용을 활성화한다
    manager_agent=None,  # 선택 사항: manager_llm 대신 특정 에이전트를 관리자로 명시적으로 설정한다
    planning=True,  # 실행 전 전략을 위한 계획 기능을 활성화한다
)

워크플로우 실행 과정

  1. 업무 배정: 매니저는 각 에이전트의 역량과 사용 가능한 도구를 고려해 전략적으로 업무를 할당한다.

  2. 실행 및 검토: 에이전트는 비동기 실행 옵션과 콜백 함수를 활용해 업무를 완료하며, 이를 통해 워크플로우를 효율적으로 관리한다.

  3. 순차적 업무 진행: 계층적 프로세스임에도 불구하고, 매니저의 감독 하에 업무가 논리적인 순서로 원활하게 진행된다.

결론

CrewAI의 계층적 프로세스를 도입하고, 시스템의 기능을 정확히 이해하며 적절하게 구성하면 프로젝트 관리를 체계적이고 효율적으로 수행할 수 있다. 고급 기능과 커스텀 설정을 활용해 워크플로를 특정 요구사항에 맞게 조정하면, 최적의 작업 실행과 프로젝트 성공을 보장할 수 있다.