CrewAI 프레임워크 내에서 에이전트를 생성하고 관리하는 자세한 가이드입니다.
Agent
는 다음과 같은 역할을 수행하는 자율적 단위입니다:
Researcher
에이전트는 정보 수집 및 분석에 뛰어날 수 있고, Writer
에이전트는 콘텐츠 작성에 더 강점을 가질 수 있습니다.속성 | 파라미터 | 타입 | 설명 |
---|---|---|---|
역할 | role | str | 에이전트의 기능과 전문 분야를 정의합니다. |
목표 | goal | str | 에이전트의 의사결정을 이끄는 개별 목표입니다. |
배경 이야기 | backstory | str | 에이전트에게 맥락과 개성을 부여하여 상호작용을 풍부하게 합니다. |
LLM (옵션) | llm | Union[str, LLM, Any] | 에이전트를 구동하는 언어 모델입니다. OPENAI_MODEL_NAME 에 지정된 모델 또는 “gpt-4”가 기본값입니다. |
도구 (옵션) | tools | List[BaseTool] | 에이전트가 사용할 수 있는 기능 혹은 역량입니다. 기본값은 빈 리스트입니다. |
Function Calling LLM (옵션) | function_calling_llm | Optional[Any] | 도구 호출을 위한 언어 모델로, 지정 시 crew의 LLM을 재정의합니다. |
최대 반복 횟수 (옵션) | max_iter | int | 에이전트가 최선의 답변을 제공하기 전 최대 반복 수입니다. 기본값은 20입니다. |
최대 RPM (옵션) | max_rpm | Optional[int] | 레이트 리밋 회피를 위한 분당 최대 요청 수입니다. |
최대 실행 시간 (옵션) | max_execution_time | Optional[int] | 작업 실행의 최대 시간(초)입니다. |
상세 로그 (옵션) | verbose | bool | 디버깅을 위한 상세 실행 로그를 활성화합니다. 기본값은 False입니다. |
위임 허용 (옵션) | allow_delegation | bool | 에이전트가 다른 에이전트에게 작업을 위임할 수 있도록 허용합니다. 기본값은 False입니다. |
Step Callback (옵션) | step_callback | Optional[Any] | 각 에이전트 단계 후 호출되는 함수로, crew 콜백을 재정의합니다. |
캐시 (옵션) | cache | bool | 도구 사용에 대해 캐싱을 활성화합니다. 기본값은 True입니다. |
시스템 템플릿 (옵션) | system_template | Optional[str] | 에이전트 맞춤형 시스템 프롬프트 템플릿입니다. |
프롬프트 템플릿 (옵션) | prompt_template | Optional[str] | 에이전트 맞춤형 프롬프트 템플릿입니다. |
응답 템플릿 (옵션) | response_template | Optional[str] | 에이전트 맞춤형 응답 템플릿입니다. |
코드 실행 허용 (옵션) | allow_code_execution | Optional[bool] | 에이전트의 코드 실행 활성화 여부입니다. 기본값은 False입니다. |
최대 재시도 횟수 (옵션) | max_retry_limit | int | 오류 발생 시 최대 재시도 횟수입니다. 기본값은 2입니다. |
컨텍스트 윈도우 준수 (옵션) | respect_context_window | bool | 메시지를 컨텍스트 윈도우 크기 내로 유지하기 위하여 요약 기능을 사용합니다. 기본값은 True입니다. |
코드 실행 모드 (옵션) | code_execution_mode | Literal["safe", "unsafe"] | 코드 실행 모드: ‘safe’(Docker 사용) 또는 ‘unsafe’(직접 실행). 기본값은 ‘safe’입니다. |
멀티모달 (옵션) | multimodal | bool | 에이전트가 멀티모달 기능을 지원하는지 여부입니다. 기본값은 False입니다. |
날짜 자동 삽입 (옵션) | inject_date | bool | 작업에 현재 날짜를 자동으로 삽입할지 여부입니다. 기본값은 False입니다. |
날짜 형식 (옵션) | date_format | str | inject_date 활성화 시 날짜 표시 형식 문자열입니다. 기본값은 “%Y-%m-%d”(ISO 포맷)입니다. |
추론 (옵션) | reasoning | bool | 에이전트가 작업을 실행하기 전에 반영 및 플랜을 생성할지 여부입니다. 기본값은 False입니다. |
최대 추론 시도 수 (옵션) | max_reasoning_attempts | Optional[int] | 작업 실행 전 최대 추론 시도 횟수입니다. 설정하지 않으면 준비될 때까지 시도합니다. |
임베더 (옵션) | embedder | Optional[Dict[str, Any]] | 에이전트가 사용하는 임베더 설정입니다. |
지식 소스 (옵션) | knowledge_sources | Optional[List[BaseKnowledgeSource]] | 에이전트가 사용할 수 있는 지식 소스입니다. |
시스템 프롬프트 사용 (옵션) | use_system_prompt | Optional[bool] | 시스템 프롬프트 사용 여부(o1 모델 지원용). 기본값은 True입니다. |
src/latest_ai_development/config/agents.yaml
파일로 이동하여 템플릿을 여러분의 요구 사항에 맞게 수정하세요.
{topic}
)는 crew를 실행할 때 입력값에서 가져온 값으로 대체됩니다:CrewBase
를 상속하는 crew 클래스를 생성하세요:
agents.yaml
)에서 사용하는 이름은 파이썬 코드의 메서드 이름과 일치해야 합니다.Agent
클래스를 인스턴스화하여 코드에서 직접 agent를 생성할 수 있습니다. 아래는 사용 가능한 모든 파라미터를 보여주는 종합적인 예제입니다:
role
, goal
, 그리고 backstory
는 필수이며 에이전트의 행동을 결정합니다llm
은 사용되는 언어 모델을 결정합니다 (기본값: OpenAI의 GPT-4)memory
: 대화 이력을 유지하도록 활성화합니다respect_context_window
: 토큰 제한 문제를 방지합니다knowledge_sources
: 도메인별 지식 기반을 추가합니다max_iter
: 최적의 답변을 제공하기 전의 최대 시도 횟수max_execution_time
: 제한 시간(초 단위)max_rpm
: API 호출 속도 제한max_retry_limit
: 오류 발생 시 재시도 횟수allow_code_execution
: 코드를 실행하려면 True여야 합니다code_execution_mode
:
"safe"
: Docker를 사용합니다 (프로덕션에 권장)"unsafe"
: 직접 실행 (신뢰할 수 있는 환경에서만 사용)multimodal
: 텍스트와 시각적 콘텐츠 처리를 위한 멀티모달 기능 활성화reasoning
: 에이전트가 작업을 수행하기 전에 반영하고 계획을 작성할 수 있도록 활성화inject_date
: 현재 날짜를 작업 설명에 자동으로 삽입system_template
: 에이전트의 핵심 동작을 정의합니다prompt_template
: 입력 형식을 구성합니다response_template
: 에이전트 응답을 포맷합니다system_template
과 prompt_template
가 모두 정의되어 있는지 확인하십시오. response_template
은 선택 사항이지만 일관된 출력 포맷을 위해 권장됩니다.{role}
, {goal}
, {backstory}
와 같은 변수를 사용할 수 있습니다. 이 변수들은 실행 중에 자동으로 채워집니다.memory
가 활성화되면 에이전트는 여러 상호작용에 걸쳐 컨텍스트를 유지하게 되어, 복잡하고 여러 단계로 이루어진 작업을 처리하는 능력이 향상됩니다.respect_context_window
매개변수로 제어됩니다.
respect_context_window=True
인 경우)respect_context_window=False
인 경우)respect_context_window=True
)"Context length exceeded. Summarizing content to fit the model context window."
respect_context_window=False
)"Context length exceeded. Consider using smaller text or RAG tools from crewai_tools."
respect_context_window=True
(기본값)을 사용하세요:respect_context_window=False
를 사용할 때:verbose=True
를 활성화하여 컨텍스트 관리 과정을 확인하세요True
와 False
모두 시도하여 어떤 것이 더 효과적인지 확인하세요respect_context_window
만 설정하면 CrewAI가 나머지를 처리합니다!kickoff()
을 사용한 에이전트 직접 상호작용kickoff()
메서드를 사용하여 작업(task)이나 crew 워크플로우를 거치지 않고 직접 사용할 수 있습니다. 이는 전체 crew 오케스트레이션 기능이 필요하지 않을 때 에이전트와 상호작용하는 더 간단한 방법을 제공합니다.
kickoff()
작동 방식kickoff()
메서드는 메시지를 에이전트에게 직접 보내고 응답을 받을 수 있게 해줍니다. 이는 LLM과 상호 작용하는 것과 유사하지만, 에이전트의 모든 기능(도구, 추론 등)을 활용할 수 있다는 점이 다릅니다.
매개변수 | 타입 | 설명 |
---|---|---|
messages | Union[str, List[Dict[str, str]]] | 문자열 쿼리 또는 역할/내용이 포함된 메시지 딕셔너리의 리스트 |
response_format | Optional[Type[Any]] | 구조화된 출력을 위한 선택적 Pydantic 모델 |
LiteAgentOutput
객체를 반환합니다:
raw
: 원시 출력 텍스트를 포함하는 문자열pydantic
: 파싱된 Pydantic 모델 (response_format
이 제공된 경우)agent_role
: 출력을 생성한 agent의 역할usage_metrics
: 실행에 대한 토큰 사용 지표response_format
으로 Pydantic 모델을 제공하여 구조화된 출력을 받을 수 있습니다:
kickoff_async()
를 통해 사용할 수 있습니다:
kickoff()
메서드는 내부적으로 LiteAgent
를 사용하며, 모든 agent 설정(역할, 목표, 백스토리, 도구 등)을 유지하면서도 더 간단한 실행 흐름을 제공합니다.allow_code_execution
을 사용할 때는 사용자 입력에 주의하고 항상 입력 값을 검증하세요code_execution_mode: "safe"
(Docker)를 사용하세요max_execution_time
제한을 설정하는 것을 고려하세요respect_context_window: true
를 사용하여 토큰 제한 문제를 방지하세요.max_rpm
을 설정하여 속도 제한을 피하세요.cache: true
를 활성화하세요.max_iter
와 max_retry_limit
을 조정하세요.knowledge_sources
를 활용하세요embedder
를 구성하세요system_template
, prompt_template
, response_template
)을 사용하세요reasoning: true
를 활성화하세요.max_reasoning_attempts
값을 설정하세요 (무제한 시 None 사용).inject_date: true
를 사용하세요.date_format
으로 날짜 형식을 맞춤 설정할 수 있습니다.multimodal: true
를 활성화하세요.allow_delegation: true
를 활성화하세요step_callback
을 사용하세요llm
function_calling_llm
inject_date: true
를 사용하여 에이전트에게 현재 날짜 인식 기능을 제공합니다.date_format
으로 날짜 형식을 사용자 정의할 수 있습니다.reasoning: true
를 활성화하세요.use_system_prompt: false
로 설정하세요llm
이(가) 필요한 기능(예: 함수 호출)을 지원하는지 확인하세요max_rpm
구현respect_context_window
활성화