> ## Documentation Index
> Fetch the complete documentation index at: https://crewai.burt.pe.kr/llms.txt
> Use this file to discover all available pages before exploring further.

# 계층적 프로세스

> CrewAI 프로젝트 내에서 계층적 프로세스를 이해하고 적용하기 위한 종합 가이드. 최신 코딩 관행과 기능을 반영하여 업데이트됨.

## 소개

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

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

## 계층적 프로세스 개요

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

### 주요 기능

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

## 계층적 프로세스 구현

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

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

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

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