Skip to main content

첫 번째 CrewAI 에이전트 만들기

주제나 주제에 대해 연구하고 보고서를 작성하는 간단한 크루를 만들어보자. 이를 통해 최신 AI 개발 동향을 파악할 수 있다. 시작하기 전에 crewaicrewai-tools가 설치되어 있는지 확인한다. 아직 설치하지 않았다면 설치 가이드를 참고해 설치한다. 아래 단계를 따라 크루를 만들어보자! 🚣‍♂️
1

크루 생성

터미널에서 다음 커맨드를 실행해 새로운 크루 프로젝트를 생성한다. 이 명령어는 latest-ai-development라는 디렉토리를 만들고 기본 구조를 구성한다.
2

`agents.yaml` 파일 수정

필요에 따라 에이전트를 수정하거나 그대로 프로젝트에 복사해 사용할 수 있다. agents.yamltasks.yaml 파일에서 {topic}과 같은 변수는 main.py 파일의 값으로 대체된다.
agents.yaml
3

`tasks.yaml` 파일 수정

tasks.yaml
4

`crew.py` 파일 수정

crew.py
5

[선택 사항] 크루 실행 전후 함수 추가

crew.py
6

크루에 커스텀 입력 전달

예를 들어 topic 입력을 전달해 연구와 보고서를 커스터마이즈할 수 있다.
main.py
7

환경 변수 설정

크루를 실행하기 전에 .env 파일에 다음 키를 환경 변수로 설정한다:
8

의존성 잠금 및 설치

프로젝트 디렉토리로 이동한 후 CLI 커맨드를 사용해 의존성을 잠그고 설치한다:
9

크루 실행

프로젝트 루트에서 다음 커맨드를 실행해 크루를 실행한다:
10

최종 보고서 확인

콘솔에서 출력을 확인하고 프로젝트 루트에 report.md 파일이 생성된다. 이 파일에 최종 보고서가 저장된다.보고서 예시는 다음과 같다:

이름의 일관성에 대한 주의 사항

YAML 파일(agents.yamltasks.yaml)에서 사용하는 이름은 Python 코드의 메서드 이름과 일치해야 한다. 예를 들어, tasks.yaml 파일에서 특정 작업에 대한 에이전트를 참조할 수 있다. 이렇게 이름을 일관되게 유지하면 CrewAI가 자동으로 설정과 코드를 연결할 수 있다. 그렇지 않으면 작업이 참조를 제대로 인식하지 못할 수 있다.

예제 참조

agents.yaml 파일의 에이전트 이름(email_summarizer)과 crew.py 파일의 메서드 이름(email_summarizer)이 동일하게 사용된 점을 확인하자.
agents.yaml
tasks.yaml 파일의 태스크 이름(email_summarizer_task)과 crew.py 파일의 메서드 이름(email_summarizer_task)이 동일하게 사용된 점을 확인하자.
tasks.yaml
crew.py 파일에서 에이전트와 태스크를 올바르게 참조하려면 주석을 활용한다.

주석 사용법

다음은 CrewAI 프로젝트에서 각 주석을 어떻게 사용하는지, 그리고 언제 사용해야 하는지에 대한 예시이다:

@agent

특정 역할을 가진 전문 AI 에이전트를 정의할 때 사용한다. 다음 상황에서 활용할 수 있다:
  • 특정 역할을 가진 전문 AI 에이전트를 생성해야 할 때
  • 에이전트를 자동으로 수집하고 관리하고자 할 때
  • 여러 작업에서 동일한 에이전트 설정을 재사용해야 할 때

@task

에이전트가 실행할 수 있는 작업을 정의할 때 사용한다. 다음 상황에서 활용한다:
  • 에이전트에게 특정 작업을 정의할 필요가 있을 때
  • 작업을 자동으로 순서화하고 관리하려고 할 때
  • 서로 다른 작업 간의 의존성을 설정해야 할 때

@crew

크루 구성을 정의할 때 사용한다. 다음 상황에서 활용한다:
  • 모든 @agent와 @task 정의를 자동으로 수집하고자 할 때
  • 작업을 순차적으로 처리할지 계층적으로 처리할지 지정해야 할 때
  • 크루 전체 설정을 구성하고자 할 때

@tool

에이전트에게 특정 기능을 제공하기 위해 커스텀 도구를 생성할 때 사용한다. 다음과 같은 경우에 활용할 수 있다:
  • 에이전트에게 웹 검색이나 데이터 분석 같은 특정 기능이 필요할 때
  • 외부 API 호출이나 복잡한 작업을 캡슐화하고 싶을 때
  • 여러 에이전트 간에 기능을 공유해야 할 때

@before_kickoff

크루가 시작하기 전에 로직을 실행할 때 사용한다. 다음과 같은 경우에 활용한다:
  • 입력 데이터를 검증하거나 전처리해야 할 때
  • 실행 전에 리소스나 설정을 준비해야 할 때
  • 초기화 로직을 수행해야 할 때

@after_kickoff

크루 작업이 완료된 후 결과를 처리할 때 사용한다. 다음 상황에서 활용한다:
  • 최종 출력을 형식화하거나 변환해야 할 때
  • 정리 작업을 수행해야 할 때
  • 특정 방식으로 결과를 저장하거나 로깅해야 할 때

@callback

이벤트를 처리하기 위해 사용한다. 다음 상황에서 활용할 수 있다:
  • 작업 진행 상황을 모니터링해야 할 때
  • 중간 결과를 기록하고 싶을 때
  • 커스텀 진행 상황 추적이나 메트릭을 구현해야 할 때

@cache_handler

테스크 결과에 대한 커스텀 캐싱을 구현할 때 사용한다. 다음 상황에서 활용할 수 있다:
  • 비용이 많이 드는 작업을 반복하지 않으려 할 때
  • 커스텀 캐시 저장소 또는 만료 로직을 구현해야 할 때
  • 실행 간에 결과를 유지하고 싶을 때
이 데코레이터는 CrewAI 프레임워크의 일부로, 에이전트와 테스크를 자동으로 수집하고 다양한 라이프사이클 이벤트를 처리함으로써 크루 구조를 조직화하는 데 도움을 준다. @CrewBase로 데코레이트된 클래스 내에서 사용해야 한다.

최신 크루 킥오프 작업 재실행

CrewAI는 이제 마지막 실행에서 작업 목록을 확인하고 특정 작업부터 재실행할 수 있는 기능을 제공한다. 이 기능을 사용하려면 다음 명령어를 실행한다.
<task_id> 부분에 재실행하려는 작업의 ID를 입력한다.

크루 메모리 초기화

다시 실행하기 전에 크루의 메모리를 초기화해야 한다면, 메모리 초기화 기능을 호출하면 된다:
이 명령어를 실행하면 크루의 메모리가 초기화되어 새로운 시작을 할 수 있다.

프로젝트 배포하기

여러분의 프로젝트를 가장 간단하게 배포하는 방법은 CrewAI Enterprise를 이용하는 것이다. CrewAI Enterprise에서는 클릭 몇 번으로 프로젝트를 배포할 수 있다.

Enterprise에서 배포하기

CrewAI Enterprise를 시작하고, 클릭 몇 번만으로 프로덕션 환경에 프로젝트를 배포한다.

커뮤니티 참여하기

오픈소스 커뮤니티에 참여해 아이디어를 나누고, 프로젝트를 공유하며, 다른 CrewAI 개발자들과 소통한다.