커스터마이징 가능한 속성

효율적인 CrewAI 팀을 구성하려면 각 프로젝트의 특수한 요구사항에 맞게 AI 에이전트를 동적으로 조정할 수 있어야 한다. 이 섹션에서는 커스터마이징할 수 있는 기본 속성에 대해 설명한다.

커스터마이징을 위한 주요 속성

속성설명
역할’분석가’나 ‘고객 서비스 담당자’와 같이 에이전트가 팀 내에서 수행하는 직무를 지정한다.
목표에이전트의 목표를 정의하며, 역할과 팀의 전체적인 미션에 맞춰 설정한다.
배경에이전트의 성격에 깊이를 더해 동기와 팀 내 상호작용을 강화한다.
도구 (선택사항)간단한 기능부터 복잡한 통합까지, 에이전트가 작업을 수행하는 데 사용하는 능력이나 방법을 나타낸다.
캐시 (선택사항)도구 사용 시 캐시를 사용할지 여부를 결정한다.
최대 RPM외부 서비스에 대한 최대 요청 수를 분당(max_rpm)으로 설정한다. 무제한 요청을 위해 None으로 설정할 수 있다.
상세 로깅 (선택사항)실행 과정에 대한 통찰력을 제공하며, 디버깅과 최적화를 위해 상세한 로깅을 활성화한다.
위임 허용 (선택사항)다른 에이전트에게 작업을 위임할지 여부를 제어한다. 기본값은 False이다.
최대 반복 횟수 (선택사항)무한 루프를 방지하기 위해 작업의 최대 반복 횟수(max_iter)를 제한한다. 기본값은 25이다.
최대 실행 시간 (선택사항)에이전트가 작업을 완료하기 위해 허용되는 최대 시간을 설정한다.
시스템 템플릿 (선택사항)에이전트의 시스템 형식을 정의한다.
프롬프트 템플릿 (선택사항)에이전트의 프롬프트 형식을 정의한다.
응답 템플릿 (선택사항)에이전트의 응답 형식을 정의한다.
시스템 프롬프트 사용 (선택사항)작업 실행 중 시스템 프롬프트를 사용할지 여부를 제어한다.
컨텍스트 윈도우 존중기본적으로 슬라이딩 컨텍스트 윈도우를 활성화해 컨텍스트 크기를 유지한다.
최대 재시도 횟수오류 발생 시 에이전트가 재시도할 수 있는 최대 횟수(max_retry_limit)를 설정한다.

고급 커스텀 옵션

기본 속성 외에도, CrewAI는 에이전트의 동작과 기능을 크게 향상시키는 더 깊은 수준의 커스텀을 지원한다.

언어 모델 커스터마이제이션

에이전트는 특정 언어 모델(llm)과 함수 호출 언어 모델(function_calling_llm)을 사용해 커스터마이즈할 수 있다. 이를 통해 처리 및 의사결정 능력을 세밀하게 조절할 수 있다. function_calling_llm을 설정하면 기본 크루 함수 호출 언어 모델을 재정의할 수 있어 더 높은 수준의 커스터마이제이션이 가능하다.

성능 및 디버깅 설정

에이전트의 성능을 조정하고 작업을 모니터링하는 것은 효율적인 작업 실행에 매우 중요하다.

상세 모드와 RPM 제한

  • 상세 모드: 에이전트의 동작을 상세히 기록하는 디버깅 및 최적화에 유용한 기능이다. 에이전트 실행 과정에 대한 깊은 이해를 제공해 성능 최적화에 도움을 준다.
  • RPM 제한: 분당 최대 요청 수(max_rpm)를 설정한다. 이 속성은 선택 사항이며, None으로 설정하면 제한 없이 외부 서비스에 무제한 쿼리를 보낼 수 있다.

작업 실행을 위한 최대 반복 횟수

max_iter 속성은 작업 하나를 위해 에이전트가 수행할 수 있는 최대 반복 횟수를 정의한다. 이를 통해 무한 루프나 지나치게 긴 실행을 방지할 수 있다. 기본값은 25로 설정되어 있으며, 이는 철저함과 효율성 사이의 균형을 제공한다. 에이전트가 이 횟수에 가까워지면 최선의 답변을 제공하려고 노력한다.

에이전트와 도구 커스터마이징

에이전트는 초기화 과정에서 속성과 도구를 정의해 커스터마이징한다. 도구는 에이전트가 특정 작업을 수행할 수 있게 하는 핵심 요소다. tools 속성은 에이전트가 사용할 수 있는 도구 배열로, 기본적으로 빈 리스트로 초기화된다. 새로운 요구 사항에 맞게 에이전트 초기화 후 도구를 추가하거나 수정할 수 있다.

pip install 'crewai[tools]'

예제: 에이전트에게 도구 할당하기

import os
from crewai import Agent
from crewai_tools import SerperDevTool

# 도구 초기화를 위한 API 키 설정
os.environ["OPENAI_API_KEY"] = "Your Key"
os.environ["SERPER_API_KEY"] = "Your Key"

# 검색 도구 초기화
search_tool = SerperDevTool()

# 고급 옵션으로 에이전트 초기화
agent = Agent(
  role='리서치 애널리스트',
  goal='최신 시장 분석 제공',
  backstory='시장 동향에 대해 예리한 통찰력을 가진 전문 애널리스트.',
  tools=[search_tool],
  memory=True, # 메모리 활성화
  verbose=True,
  max_rpm=None, # 분당 요청 수 제한 없음
  max_iter=25, # 최대 반복 횟수 기본값
)

위임과 자율성

CrewAI 프레임워크 내에서 에이전트의 위임 능력이나 질문 기능을 제어하는 것은 자율성과 협업 역학을 조정하는 데 중요하다. 기본적으로 allow_delegation 속성은 False로 설정되어 있어, 에이전트가 필요에 따라 도움을 요청하거나 작업을 위임할 수 없다. 이 기본 동작은 CrewAI 생태계 내에서 협업 문제 해결과 효율성을 촉진하기 위해 변경할 수 있다. 필요에 따라 특정 운영 요구 사항에 맞게 위임 기능을 활성화할 수 있다.

예제: 에이전트의 위임 기능 비활성화

agent = Agent(
  role='콘텐츠 작가',
  goal='시장 동향에 관한 매력적인 콘텐츠 작성',
  backstory='시장 분석 전문 지식을 갖춘 경험 많은 작가',
  allow_delegation=True # 위임 기능 활성화
)

결론

CrewAI에서 에이전트를 커스터마이징할 때 역할, 목표, 배경 스토리, 도구를 설정하고, 언어 모델 커스터마이징, 메모리, 성능 설정, 위임 설정과 같은 고급 옵션을 추가하면 복잡한 문제를 해결할 수 있는 세밀하고 유능한 AI 팀을 구성할 수 있다.