에이전트 커스터마이징

에이전트 커스터마이징 (Customize Agents)

효율적인 CrewAI 팀을 만들려면 AI 에이전트를 프로젝트 요구에 맞게 동적으로 조정할 수 있어야 합니다. 에이전트의 역할(role), 목표(goal), 배경 스토리(backstory), 도구(tools)부터 언어 모델 커스터마이징과 성능·위임 설정까지, 이 가이드가 핵심 속성을 하나씩 짚어 줍니다.

출처: 공식문서

커스터마이징 가능한 속성

어떤 에이전트를 만들든 다음 기초 속성을 조정할 수 있습니다.

속성 설명
Role 크루 내 에이전트의 역할을 지정합니다. 예: Analyst, Customer Service Rep
Goal 역할과 크루의 전반적 사명에 맞춘 에이전트의 목표를 정의합니다.
Backstory 에이전트 페르소나에 깊이를 더해 크루 내 동기와 참여도를 높입니다.
Tools (Optional) 단순 함수부터 복잡한 통합까지, 에이전트가 태스크에 쓰는 역량이나 방법을 나타냅니다.
Cache (Optional) 에이전트가 도구 사용 시 캐시를 쓸지 결정합니다.
Max RPM 분당 최대 요청 수(max_rpm)를 설정합니다. 외부 서비스 무제한 요청을 원하면 None으로 둘 수 있습니다.
Verbose (Optional) 디버깅과 최적화를 위해 상세 로그를 켭니다.
Allow Delegation (Optional) 다른 에이전트로의 태스크 위임을 제어하며 기본값은 False입니다.
Max Iter (Optional) 무한 루프를 막기 위해 태스크당 최대 반복 횟수(max_iter)를 제한합니다. 기본값은 25입니다.
Max Execution Time (Optional) 에이전트가 태스크를 완료할 최대 시간을 설정합니다.
System Template (Optional) 에이전트의 시스템 포맷을 정의합니다.
Prompt Template (Optional) 에이전트의 프롬프트 포맷을 정의합니다.
Response Template (Optional) 에이전트의 응답 포맷을 정의합니다.
Use System Prompt (Optional) 태스크 실행 중 에이전트가 시스템 프롬프트를 사용할지 제어합니다.
Respect Context Window 기본적으로 슬라이딩 컨텍스트 윈도우를 켜서 컨텍스트 크기를 유지합니다.
Max Retry Limit 오류 발생 시 에이전트의 최대 재시도 횟수(max_retry_limit)를 설정합니다.

고급 커스터마이징 옵션

언어 모델 커스터마이징

에이전트는 특정 언어 모델(llm)과 함수 호출용 언어 모델(function_calling_llm)로 커스터마이즈할 수 있습니다. function_calling_llm을 설정하면 크루의 기본 함수 호출 언어 모델을 덮어써서 더 큰 제어권을 얻을 수 있습니다.

성능·디버깅 설정

Verbose 모드와 RPM 제한

  • Verbose 모드: 에이전트 동작을 상세 로깅해 디버깅과 최적화에 유용합니다. 실행 과정에 대한 인사이트를 제공합니다.
  • RPM 제한: 분당 최대 요청 수(max_rpm)를 설정합니다. None으로 두면 무제한이라 필요 시 외부 서비스에 제한 없이 요청할 수 있습니다.

태스크 실행 최대 반복 횟수

max_iter 속성은 에이전트가 단일 태스크에 수행할 최대 반복 횟수를 정의해 무한 루프나 과도한 실행을 막습니다. 기본값은 25이며, 철저함과 효율 사이의 균형을 제공합니다. 에이전트가 이 숫자에 가까워지면 최선의 답을 내놓으려 합니다.

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

pip install 'crewai[tools]'

에이전트는 초기화 시 속성과 도구를 정의해 커스터마이즈합니다. 도구는 에이전트가 특수 태스크를 수행하게 해 주는 핵심 요소입니다. tools 속성은 에이전트가 사용할 도구의 배열이어야 하며, 기본적으로 빈 리스트로 초기화됩니다. 태스크 초기화 후에도 도구를 추가하거나 수정할 수 있습니다.

예제: 에이전트에 도구 배정하기

import os
from crewai import Agent
from crewai_tools import SerperDevTool

# Set API keys for tool initialization
os.environ["OPENAI_API_KEY"] = "Your Key"
os.environ["SERPER_API_KEY"] = "Your Key"

# Initialize a search tool
search_tool = SerperDevTool()

# Initialize the agent with advanced options
agent = Agent(
  role='Research Analyst',
  goal='Provide up-to-date market analysis',
  backstory='An expert analyst with a keen eye for market trends.',
  tools=[search_tool],
  memory=True, # Enable memory
  verbose=True,
  max_rpm=None, # No limit on requests per minute
  max_iter=25, # Default value for maximum iterations
)

위임과 자율성

에이전트가 태스크를 위임하거나 질문할 수 있는 능력을 제어하는 것은 CrewAI 내 자율성과 협업 역학을 조정하는 데 중요합니다. 기본적으로 allow_delegation 속성은 이제 False로 설정되어 있어, 에이전트가 도움을 요청하거나 태스크를 위임할 수 없습니다. 이 기본 동작을 바꾸면 협업적 문제 해결과 효율을 높일 수 있으며, 특정 운영 요구에 맞춰 위임을 켜면 됩니다.

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

agent = Agent(
  role='Content Writer',
  goal='Write engaging content on market trends',
  backstory='A seasoned writer with expertise in market analysis.',
  allow_delegation=True # Enabling delegation
)

결론

역할, 목표, 배경 스토리, 도구를 설정하고 언어 모델 커스터마이징·메모리·성능 설정·위임 옵션 같은 고급 기능을 함께 조정하면, 복잡한 과제를 처리할 수 있는 섬세하고 유능한 AI 팀을 만들 수 있습니다.

더 알아보기