메인 콘텐츠로 건너뛰기

개요

crewAI에서 crew는 일련의 작업을 달성하기 위해 함께 협력하는 에이전트들의 그룹을 나타냅니다. 각 crew는 작업 실행, 에이전트 간 협업, 그리고 전체 워크플로우에 대한 전략을 정의합니다.

Crew 속성

Crew Max RPM: max_rpm 속성은 crew가 분당 처리할 수 있는 최대 요청 수를 설정하며, 개별 agent의 max_rpm 설정을 crew 단위로 지정할 경우 오버라이드합니다.

크루 생성하기

CrewAI에서 크루를 생성하는 주요 방법은 **JSONC 구성(새 crew 권장)**을 사용하는 방법과 클래식 프로젝트나 고급 사용 사례에서 코드로 직접 정의하는 방법입니다.

JSONC 구성 (권장)

crewai create crew <name>으로 만든 새 프로젝트는 crew 수준 설정과 태스크를 crew.jsonc에 두고, 각 에이전트를 agents/의 별도 파일에 둡니다. crewai runcrew.jsonc 또는 crew.json을 감지해 에이전트를 로드하고, 빠진 placeholder 값을 물은 뒤 crew를 시작합니다.
crew.jsonc
agents의 각 문자열은 먼저 agents/<name>.jsonc, 그 다음 agents/<name>.json으로 해석됩니다. 계층형 crew는 "process": "hierarchical"manager_llm 또는 manager_agent를 사용하세요.
신뢰하는 출처의 JSON crew 프로젝트만 실행하세요. custom:<name> 도구와 {"python": "module.attribute"} 참조는 crew 로드 시 로컬 Python 코드를 실행합니다.

클래식 YAML 구성

crewai create crew <name> --classic으로 만든 클래식 프로젝트는 crew.py, config/agents.yaml, config/tasks.yaml, @CrewBase, @agent, @task, @crew 데코레이터를 사용합니다. 이 방식은 기존 Python/YAML 프로젝트와 Python 데코레이터 제어가 필요한 팀을 위해 계속 지원됩니다. 클래식 프로젝트를 만든 후, CrewBase를 상속받는 클래스에서 데코레이터를 이용해 agent, task, 그리고 crew 자체를 정의할 수 있습니다.

데코레이터가 적용된 예시 Crew 클래스

code
위 코드를 실행하는 방법:
code
태스크들은 정의된 순서대로 실행됩니다.
CrewBase 클래스와 이 데코레이터들은 에이전트와 태스크의 수집을 자동화하여 수동으로 관리할 필요를 줄여줍니다.

annotations.py의 데코레이터 개요

CrewAI는 annotations.py 파일에서 크루 클래스 내의 메서드를 특별히 처리하기 위해 사용하는 여러 데코레이터를 제공합니다:
  • @CrewBase: 클래스를 크루 기본 클래스로 표시합니다.
  • @agent: Agent 객체를 반환하는 메서드임을 나타냅니다.
  • @task: Task 객체를 반환하는 메서드임을 나타냅니다.
  • @crew: Crew 객체를 반환하는 메서드임을 나타냅니다.
  • @before_kickoff: (옵션) 크루가 시작되기 전에 실행될 메서드를 표시합니다.
  • @after_kickoff: (옵션) 크루가 종료된 후에 실행될 메서드를 표시합니다.
이러한 데코레이터들은 크루의 구조를 구성하는 데 도움이 되며, 에이전트와 태스크를 수동으로 나열하지 않아도 자동으로 수집할 수 있도록 해줍니다.

직접 코드 정의 (대안)

또는 YAML 구성 파일을 사용하지 않고 코드에서 직접 crew를 정의할 수 있습니다.
code
위 코드를 실행하는 방법:
code
이 예시에서:
  • 에이전트와 태스크는 데코레이터 없이 클래스 내에서 직접 정의됩니다.
  • 에이전트와 태스크 목록을 수동으로 생성하고 관리합니다.
  • 이 방식은 더 많은 제어를 제공하지만, 대규모 프로젝트의 경우 유지보수가 어려울 수 있습니다.

Crew Output

CrewAI 프레임워크에서 crew의 출력은 CrewOutput 클래스 내에 캡슐화되어 있습니다.
이 클래스는 crew 실행 결과를 구조화된 방식으로 접근할 수 있도록 하며, 원시 문자열, JSON, Pydantic 모델과 같은 다양한 형식을 포함합니다.
CrewOutput에는 최종 task 출력 결과, 토큰 사용량, 그리고 개별 task 출력 결과가 포함됩니다.

Crew 출력 속성

Crew 출력 메서드 및 속성

Crew 출력 접근하기

crew가 실행된 후에는 Crew 객체의 output 속성을 통해 출력값에 접근할 수 있습니다. CrewOutput 클래스는 이 출력값을 다루고 표시하는 다양한 방법을 제공합니다.

예시

Code

크루 로그 접근하기

output_log_fileTrue(Boolean) 또는 file_name(str)로 설정하면 크루 실행의 실시간 로그를 볼 수 있습니다. 이벤트 로그는 file_name.txtfile_name.json 두 가지 형식 모두를 지원합니다. True(Boolean)로 설정할 경우에는 logs.txt로 저장됩니다. output_log_fileFalse(Boolean) 또는 None으로 설정된 경우에는 로그가 저장되지 않습니다.
Code

메모리 활용

crew는 메모리(단기, 장기 및 엔티티 메모리)를 활용하여 시간이 지남에 따라 실행 및 학습을 향상시킬 수 있습니다. 이 기능을 통해 crew는 실행 메모리를 저장하고 회상할 수 있어, 의사결정 및 작업 실행 전략에 도움이 됩니다.

캐시 활용

캐시는 도구 실행 결과를 저장하는 데 사용될 수 있으며, 동일한 작업을 반복 실행할 필요를 줄여 프로세스의 효율성을 높입니다.

Crew 사용 메트릭

crew 실행 후, usage_metrics 속성에 접근하여 crew가 실행한 모든 작업에 대한 언어 모델(LLM) 사용 메트릭을 확인할 수 있습니다. 이를 통해 운영 효율성과 개선이 필요한 영역에 대한 인사이트를 얻을 수 있습니다.
Code

Crew 실행 프로세스

  • 순차적 프로세스: 작업이 하나씩 차례로 실행되어 linear flow의 작업 흐름을 제공합니다.
  • 계층적 프로세스: 매니저 agent가 crew를 조정하여 작업을 위임하고 결과를 검증한 후 다음 단계로 이동합니다. 참고: 이 프로세스에는 manager_llm 또는 manager_agent가 필요하며, 프로세스 flow 검증을 위해 필수적입니다.

크루 시작하기

크루가 구성되면, kickoff() 메서드를 사용하여 워크플로를 시작하세요. 이렇게 하면 정의된 프로세스 플로우에 따라 실행 과정이 시작됩니다.
Code

Crew를 시작하는 다양한 방법

crew가 구성되면, 적절한 시작 방법으로 workflow를 시작하세요. CrewAI는 kickoff 프로세스를 더 잘 제어할 수 있도록 여러 방법을 제공합니다.

동기 메서드

  • kickoff(): 정의된 process flow에 따라 실행 프로세스를 시작합니다.
  • kickoff_for_each(): 입력 이벤트나 컬렉션 내 각 항목에 대해 순차적으로 task를 실행합니다.

비동기 메서드

CrewAI는 비동기 실행을 위해 두 가지 접근 방식을 제공합니다:
고동시성 워크로드의 경우 akickoff()akickoff_for_each()가 권장됩니다. 이들은 작업 실행, 메모리 작업, 지식 검색에 네이티브 async를 사용합니다.
Code
이러한 메서드는 crew 내에서 task를 관리하고 실행하는 데 유연성을 제공하며, 동기 및 비동기 workflow 모두 필요에 맞게 사용할 수 있도록 지원합니다. 자세한 비동기 예제는 Crew 비동기 시작 가이드를 참조하세요.

스트리밍 Crew 실행

crew 실행을 실시간으로 확인하려면 스트리밍을 활성화하여 출력이 생성되는 대로 받을 수 있습니다:
Code
스트리밍에 대한 자세한 내용은 스트리밍 Crew 실행 가이드를 참조하세요.

특정 Task에서 다시 실행하기

이제 CLI 명령어 replay를 사용하여 특정 task에서 다시 실행할 수 있습니다. CrewAI의 replay 기능을 사용하면 커맨드라인 인터페이스(CLI)를 통해 특정 task에서 다시 실행할 수 있습니다. crewai replay -t <task_id> 명령어를 실행하면 replay 과정에서 사용할 task_id를 지정할 수 있습니다. Kickoff은 이제 최신 kickoff에서 반환된 task output을 로컬에 저장하므로, 해당 지점부터 다시 실행할 수 있습니다.

CLI를 사용하여 특정 작업에서 다시 실행하기

replay 기능을 사용하려면 다음 단계를 따라주세요:
  1. 터미널 또는 명령 프롬프트를 엽니다.
  2. CrewAI 프로젝트가 위치한 디렉터리로 이동합니다.
  3. 아래 명령어를 실행합니다:
최신 kickoff 작업 ID를 확인하려면 다음을 사용하세요:
그런 다음, 특정 작업에서 다시 실행하려면 다음을 사용하세요:
이 명령어들을 사용하면 이전에 실행된 작업의 컨텍스트를 유지하면서 최신 kickoff 작업부터 다시 실행할 수 있습니다.