에이전트 커스터마이징
에이전트 커스터마이징 (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 팀을 만들 수 있습니다.