crewAI 프레임워크에서 크루를 이해하고 다양한 속성과 기능을 활용하기.
속성 | 파라미터 | 설명 |
---|---|---|
Tasks | tasks | crew에 할당된 작업들의 리스트. |
Agents | agents | crew의 일원이 되는 에이전트들의 리스트. |
Process (선택사항) | process | crew가 따르는 프로세스 플로우(예: 순차, 계층적). 기본값은 sequential . |
Verbose (선택사항) | verbose | 실행 중 로그의 상세도 설정. 기본값은 False . |
Manager LLM (선택사항) | manager_llm | 계층적 프로세스에서 매니저 에이전트가 사용하는 언어 모델. 계층적 프로세스를 사용할 때 필수. |
Function Calling LLM (선택사항) | function_calling_llm | 전달 시, crew 전체의 모든 agent에 대해 도구의 function calling에 이 LLM을 사용. 각 agent마다 개별 LLM을 가질 수 있으며, 이 경우 crew의 function calling LLM을 오버라이드 함. |
Config (선택사항) | config | crew용으로 선택적인 구성 설정. Json 또는 Dict[str, Any] 형식 사용. |
Max RPM (선택사항) | max_rpm | 실행 중 crew가 준수하는 분당 최대 요청 수. 기본값은 None . |
Memory (선택사항) | memory | 실행 메모리(단기, 장기, 엔터티 메모리) 저장에 사용됨. |
Cache (선택사항) | cache | 도구 실행 결과를 캐시에 저장할지 여부. 기본값은 True . |
Embedder (선택사항) | embedder | crew에서 사용할 embedder 설정. 현재는 주로 메모리에서 사용. 기본값은 {"provider": "openai"} . |
Step Callback (선택사항) | step_callback | 각 agent의 단계가 끝난 후 호출되는 함수. agent의 작업 기록이나 기타 작업 수행에 사용 가능; agent별 step_callback 을 오버라이드하지 않음. |
Task Callback (선택사항) | task_callback | 각 작업 완료 후 호출되는 함수. 작업 실행 후 모니터링이나 추가 작업에 유용. |
Share Crew (선택사항) | share_crew | 라이브러리 개선 및 모델 학습을 위해 crew 정보와 실행을 crewAI 팀에 공유할지 여부. |
Output Log File (선택사항) | output_log_file | True 로 설정 시 로그를 현재 디렉터리에 logs.txt로 저장하거나 파일 경로 지정 가능. 파일명이 .json으로 끝나면 JSON 형식, 아니면 txt 형식으로 로그를 저장. 기본값은 None . |
Manager Agent (선택사항) | manager_agent | 매니저로 사용할 커스텀 agent를 설정. |
Prompt File (선택사항) | prompt_file | crew에서 사용할 prompt JSON 파일 경로. |
Planning (선택사항) | planning | Crew에 계획 수립 기능을 추가. 활성화하면 각 Crew 반복 전에 모든 Crew 데이터를 AgentPlanner로 전송하여 작업계획을 세우고, 이 계획이 각 작업 설명에 추가됨. |
Planning LLM (선택사항) | planning_llm | 계획 과정에서 AgentPlanner가 사용하는 언어 모델. |
Knowledge Sources (선택사항) | knowledge_sources | crew 수준에서 사용 가능한 지식 소스. 모든 agent가 접근 가능. |
max_rpm
속성은 crew가 분당 처리할 수 있는 최대 요청 수를 설정하며, 개별 agent의 max_rpm
설정을 crew 단위로 지정할 경우 오버라이드합니다.CrewBase
를 상속받는 클래스에서 데코레이터를 이용해 agent, task, 그리고 crew 자체를 정의할 수 있습니다.
CrewBase
클래스와 이 데코레이터들은 에이전트와 태스크의 수집을 자동화하여
수동으로 관리할 필요를 줄여줍니다.
annotations.py
의 데코레이터 개요annotations.py
파일에서 크루 클래스 내의 메서드를 특별히 처리하기 위해 사용하는 여러 데코레이터를 제공합니다:
@CrewBase
: 클래스를 크루 기본 클래스로 표시합니다.@agent
: Agent
객체를 반환하는 메서드임을 나타냅니다.@task
: Task
객체를 반환하는 메서드임을 나타냅니다.@crew
: Crew
객체를 반환하는 메서드임을 나타냅니다.@before_kickoff
: (옵션) 크루가 시작되기 전에 실행될 메서드를 표시합니다.@after_kickoff
: (옵션) 크루가 종료된 후에 실행될 메서드를 표시합니다.CrewOutput
클래스 내에 캡슐화되어 있습니다.CrewOutput
에는 최종 task 출력 결과, 토큰 사용량, 그리고 개별 task 출력 결과가 포함됩니다.
속성 | 매개변수 | 타입 | 설명 |
---|---|---|---|
Raw | raw | str | crew의 원시 출력값입니다. 출력의 기본 형식입니다. |
Pydantic | pydantic | Optional[BaseModel] | crew의 구조화된 출력을 나타내는 Pydantic 모델 객체입니다. |
JSON Dict | json_dict | Optional[Dict[str, Any]] | crew의 JSON 출력을 나타내는 딕셔너리입니다. |
Tasks Output | tasks_output | List[TaskOutput] | crew 내 각 작업의 출력을 나타내는 TaskOutput 객체의 리스트입니다. |
Token Usage | token_usage | Dict[str, Any] | 실행 중 언어 모델의 성능에 대한 통찰을 제공하는 토큰 사용 요약 정보입니다. |
메서드/속성 | 설명 |
---|---|
json | 출력 형식이 JSON인 경우 crew 출력의 JSON 문자열 표현을 반환합니다. |
to_dict | JSON 및 Pydantic 출력을 사전으로 변환합니다. |
**str** | crew 출력의 문자열 표현을 반환합니다. 우선순위는 Pydantic, 그 다음 JSON, 마지막으로 raw입니다. |
Crew
객체의 output
속성을 통해 출력값에 접근할 수 있습니다. CrewOutput
클래스는 이 출력값을 다루고 표시하는 다양한 방법을 제공합니다.
output_log_file
을 True(Boolean)
또는 file_name(str)
로 설정하면 크루 실행의 실시간 로그를 볼 수 있습니다. 이벤트 로그는 file_name.txt
와 file_name.json
두 가지 형식 모두를 지원합니다.
True(Boolean)
로 설정할 경우에는 logs.txt
로 저장됩니다.
output_log_file
이 False(Boolean)
또는 None
으로 설정된 경우에는 로그가 저장되지 않습니다.
usage_metrics
속성에 접근하여 crew가 실행한 모든 작업에 대한 언어 모델(LLM) 사용 메트릭을 확인할 수 있습니다. 이를 통해 운영 효율성과 개선이 필요한 영역에 대한 인사이트를 얻을 수 있습니다.
manager_llm
또는 manager_agent
가 필요하며, 프로세스 flow 검증을 위해 필수적입니다.kickoff()
메서드를 사용하여 워크플로를 시작하세요. 이렇게 하면 정의된 프로세스 플로우에 따라 실행 과정이 시작됩니다.
kickoff()
, kickoff_for_each()
, kickoff_async()
, 그리고 kickoff_for_each_async()
.
kickoff()
: 정의된 process flow에 따라 실행 프로세스를 시작합니다.kickoff_for_each()
: 입력 이벤트나 컬렉션 내 각 항목에 대해 순차적으로 task를 실행합니다.kickoff_async()
: 비동기적으로 workflow를 시작합니다.kickoff_for_each_async()
: 입력 이벤트나 각 항목에 대해 비동기 처리를 활용하여 task를 동시에 실행합니다.replay
를 사용하여 특정 task에서 다시 실행할 수 있습니다.
CrewAI의 replay 기능을 사용하면 커맨드라인 인터페이스(CLI)를 통해 특정 task에서 다시 실행할 수 있습니다. crewai replay -t <task_id>
명령어를 실행하면 replay 과정에서 사용할 task_id
를 지정할 수 있습니다.
Kickoff은 이제 최신 kickoff에서 반환된 task output을 로컬에 저장하므로, 해당 지점부터 다시 실행할 수 있습니다.