시작하기

CrewAI는 순차적 및 계층적 프로세스를 모두 지원하며, 작업을 구조적으로 실행할 수 있는 유연한 프레임워크를 제공한다. 이 가이드에서는 효율적인 작업 실행과 프로젝트 완수를 위해 이러한 프로세스를 효과적으로 구현하는 방법을 설명한다.

순차적 프로세스 개요

순차적 프로세스는 작업이 선형적으로 진행되며 한 번에 하나씩 순서대로 실행된다. 이 방식은 특정 순서대로 작업을 완료해야 하는 프로젝트에 적합하다.

주요 기능

  • 선형 작업 흐름: 미리 정해진 순서대로 작업을 처리해 체계적인 진행을 보장한다.
  • 단순성: 단계별로 명확한 작업이 있는 프로젝트에 가장 적합하다.
  • 쉬운 모니터링: 작업 완료와 프로젝트 진행 상황을 손쉽게 추적할 수 있다.

순차적 프로세스 구현

순차적 프로세스를 사용하려면, 팀원을 구성하고 실행 순서에 따라 작업을 정의한다.

from crewai import Crew, Process, Agent, Task, TaskOutput, CrewOutput

# 에이전트 정의
researcher = Agent(
  role='Researcher',
  goal='기초 연구 수행',
  backstory='통찰력을 발굴하는 데 열정을 가진 경험 많은 연구원'
)
analyst = Agent(
  role='Data Analyst',
  goal='연구 결과 분석',
  backstory='패턴을 발견하는 데 능숙한 꼼꼼한 분석가'
)
writer = Agent(
  role='Writer',
  goal='최종 보고서 작성',
  backstory='매력적인 이야기를 만드는 데 재능 있는 숙련된 작가'
)

# 작업 정의
research_task = Task(
  description='관련 데이터 수집...', 
  agent=researcher, 
  expected_output='원시 데이터'
)
analysis_task = Task(
  description='데이터 분석...', 
  agent=analyst, 
  expected_output='데이터 통찰'
)
writing_task = Task(
  description='보고서 작성...', 
  agent=writer, 
  expected_output='최종 보고서'
)

# 순차적 프로세스로 크루 구성
report_crew = Crew(
  agents=[researcher, analyst, writer],
  tasks=[research_task, analysis_task, writing_task],
  process=Process.sequential
)

# 크루 실행
result = report_crew.kickoff()

# 타입 안전한 출력 접근
task_output: TaskOutput = result.tasks[0].output
crew_output: CrewOutput = result.output

참고 사항:

순차적 프로세스의 각 작업에는 반드시 에이전트를 할당해야 한다. 모든 Taskagent 매개변수를 포함시켜야 한다.

워크플로우 실행 과정

  1. 초기 작업: 순차적인 프로세스에서 첫 번째 에이전트가 자신의 작업을 완료하고 완료 신호를 보낸다.
  2. 후속 작업: 에이전트는 프로세스 타입에 따라 작업을 선택한다. 이때 앞선 작업의 결과나 지침에 따라 작업을 실행한다.
  3. 완료: 마지막 작업이 실행되면 프로세스가 종료되고 프로젝트가 완료된다.

고급 기능

작업 위임

순차적 프로세스에서 에이전트의 allow_delegationTrue로 설정되어 있다면, 해당 에이전트는 크루 내 다른 에이전트에게 작업을 위임할 수 있다. 크루에 여러 에이전트가 존재할 때 이 기능은 자동으로 설정된다.

비동기 실행

작업을 비동기적으로 실행하면 적절한 경우 병렬 처리가 가능하다. 비동기 작업을 생성하려면 작업을 정의할 때 async_execution=True로 설정한다.

메모리와 캐싱

CrewAI는 메모리와 캐싱 기능을 모두 지원한다:

  • 메모리: Crew를 생성할 때 memory=True로 설정하면 활성화된다. 이를 통해 에이전트가 여러 작업 간에 정보를 유지할 수 있다.
  • 캐싱: 기본적으로 캐싱이 활성화되어 있다. cache=False로 설정하면 비활성화할 수 있다.

콜백

콜백은 작업(task)과 단계(step) 두 수준에서 설정할 수 있다:

  • task_callback: 각 작업 완료 후 실행된다.
  • step_callback: 에이전트 실행 과정에서 각 단계가 끝난 후 실행된다.

사용량 메트릭

CrewAI는 모든 작업과 에이전트에 걸쳐 토큰 사용량을 추적한다. 실행 후에 이 메트릭에 접근할 수 있다.

순차적 프로세스를 위한 모범 사례

  1. 순서의 중요성: 각 작업이 이전 작업을 기반으로 진행되도록 논리적인 순서로 작업을 배열한다.
  2. 명확한 작업 설명: 각 작업에 대한 상세한 설명을 제공해 에이전트가 효과적으로 작업을 수행할 수 있도록 안내한다.
  3. 적절한 에이전트 선택: 각 작업의 요구 사항에 맞게 에이전트의 기술과 역할을 매칭한다.
  4. 컨텍스트 활용: 이전 작업의 컨텍스트를 활용해 후속 작업에 필요한 정보를 제공한다.

이 업데이트된 문서는 코드베이스의 최신 변경 사항을 정확히 반영하고, 새로운 기능과 설정을 어떻게 활용할 수 있는지 명확히 설명한다. 내용을 간결하고 직관적으로 유지해 쉽게 이해할 수 있도록 구성했다.