CrewAI 프레임워크 내에서 작업을 관리하고 생성하는 방법에 대한 자세한 안내서입니다.
Task
는 Agent
가 완료하는 구체적인 과제입니다.
Task는 실행을 위한 모든 세부 정보를 제공합니다. 여기에는 설명, 책임 Agent, 필요한 도구 등이 포함되어 다양한 작업 복잡성을 지원합니다.
CrewAI 내의 Task는 협업이 가능하며, 여러 Agent가 함께 작업해야 할 수도 있습니다. 이는 Task 속성을 통해 관리되며, Crew의 프로세스를 통해 조율되어 팀워크와 효율성을 향상시킵니다.
속성 | 매개변수 | 타입 | 설명 |
---|---|---|---|
설명 | description | str | 태스크가 다루는 내용을 명확하고 간결하게 설명합니다. |
예상 출력 | expected_output | str | 태스크가 완료된 모습에 대한 구체적인 설명입니다. |
이름 (선택 사항) | name | Optional[str] | 태스크의 이름 식별자입니다. |
에이전트 (선택 사항) | agent | Optional[BaseAgent] | 태스크 실행을 담당하는 에이전트입니다. |
도구 (선택 사항) | tools | List[BaseTool] | 이 태스크를 위해 에이전트가 사용할 수 있는 도구/리소스 목록입니다. |
컨텍스트 (선택 사항) | context | Optional[List["Task"]] | 이 태스크의 컨텍스트로 사용될 다른 태스크의 출력입니다. |
비동기 실행 (선택 사항) | async_execution | Optional[bool] | 태스크를 비동기적으로 실행할지 여부입니다. 기본값은 False입니다. |
사용자 입력 (선택 사항) | human_input | Optional[bool] | 태스크의 최종 답안을 에이전트가 제출한 뒤 사람이 검토할지 여부입니다. 기본값은 False입니다. |
마크다운 (선택 사항) | markdown | Optional[bool] | 태스크가 에이전트에게 최종 답안을 마크다운으로 포매팅해서 반환하도록 지시할지 여부입니다. 기본값은 False입니다. |
설정 (선택 사항) | config | Optional[Dict[str, Any]] | 태스크별 설정 파라미터입니다. |
출력 파일 (선택 사항) | output_file | Optional[str] | 태스크 결과를 저장할 파일 경로입니다. |
디렉터리 생성 (선택 사항) | create_directory | Optional[bool] | output_file의 디렉터리가 존재하지 않을 경우 생성할지 여부입니다. 기본값은 True입니다. |
출력 JSON (선택 사항) | output_json | Optional[Type[BaseModel]] | JSON 출력을 구조화하기 위한 Pydantic 모델입니다. |
Pydantic 출력 (선택 사항) | output_pydantic | Optional[Type[BaseModel]] | 태스크 출력용 Pydantic 모델입니다. |
콜백 (선택 사항) | callback | Optional[Any] | 태스크 완료 후 실행할 함수/객체입니다. |
가드레일 (선택 사항) | guardrail | Optional[Callable] | 다음 태스크로 진행하기 전에 태스크 출력을 검증하는 함수입니다. |
src/latest_ai_development/config/tasks.yaml
파일로 이동하여 템플릿을 귀하의 특정 작업 요구 사항에 맞게 수정하세요.
{topic}
)는 크루를 실행할 때 입력값에서 가져온 값으로 대체됩니다:CrewBase
를 상속받는 크루 클래스를 생성하세요:
agents.yaml
및 tasks.yaml
)에서 사용하는 이름은 Python 코드의 메서드 이름과 일치해야 합니다.agent
를 직접 지정하여 할당하거나, 역할·가용성 등에 따라 hierarchical
CrewAI 프로세스가 자동으로 결정하도록 둘 수 있습니다.TaskOutput
클래스를 통해 작업 결과를 구조적으로 처리할 수 있는 방식을 제공합니다. 이 클래스는 작업 간에 출력값을 쉽게 전달할 수 있도록 지원합니다.
CrewAI 프레임워크에서 작업의 출력은 TaskOutput
클래스에 캡슐화되어 있습니다. 이 클래스는 작업의 결과를 구조적으로 접근할 수 있도록 해주며, raw 출력, JSON, Pydantic 모델 등 다양한 형식을 지원합니다.
기본적으로 TaskOutput
에는 raw
출력만 포함됩니다. 원래의 Task
객체가 각각 output_pydantic
또는 output_json
으로 구성된 경우에만 TaskOutput
에 pydantic
또는 json_dict
출력이 포함됩니다.
속성 | 파라미터 | 타입 | 설명 |
---|---|---|---|
설명 | description | str | 작업에 대한 설명입니다. |
요약 | summary | Optional[str] | 설명의 처음 10단어에서 자동 생성된 작업의 요약입니다. |
Raw | raw | str | 작업의 원시 출력값입니다. 출력의 기본 형식입니다. |
Pydantic | pydantic | Optional[BaseModel] | 작업의 구조화된 출력을 나타내는 Pydantic 모델 객체입니다. |
JSON Dict | json_dict | Optional[Dict[str, Any]] | 작업의 JSON 출력을 나타내는 딕셔너리입니다. |
Agent | agent | str | 작업을 실행한 agent입니다. |
Output Format | output_format | OutputFormat | 작업 출력의 형식입니다. RAW, JSON, Pydantic 옵션이 있으며, 기본값은 RAW입니다. |
Method/Property | 설명 |
---|---|
json | 출력 포맷이 JSON일 경우 태스크 출력의 JSON 문자열 표현을 반환합니다. |
to_dict | JSON 및 Pydantic 출력을 딕셔너리로 변환합니다. |
str | 태스크 출력의 문자열 표현을 반환하며, Pydantic을 우선으로 하고 그 다음은 JSON, 그 다음은 raw를 사용합니다. |
Task
객체의 output
속성을 통해 그 출력을 액세스할 수 있습니다. TaskOutput
클래스는 이 출력을 다양한 방식으로 상호작용하고 표시할 수 있는 기능을 제공합니다.
markdown
매개변수는 작업 출력에 대해 자동 마크다운 포매팅을 활성화합니다. 이 값을 True
로 설정하면, 작업은 에이전트에게 최종 답변을 올바른 마크다운 문법으로 포매팅하도록 지시합니다.
markdown=True
일 때, 에이전트는 다음과 같이 출력을 포매팅하라는 추가 지시를 받게 됩니다:
#
사용**텍스트**
사용*텍스트*
사용-
또는 *
사용`코드`
사용
언어 ``` 사용markdown=True
일 때 작업 프롬프트에 자동으로 추가되므로, 작업 설명에 포맷팅 요구사항을 따로 명시할 필요가 없습니다.context
속성을 사용하여 다른 작업의 출력에 의존할 수 있습니다. 예를 들어:
guardrail
파라미터를 통해 검증 함수를 제공하세요:
(bool, Any)
형태의 튜플을 반환해야 함(bool, Any)
형태의 튜플을 반환. 예: (True, validated_result)
(bool, str)
형태의 튜플을 반환. 예: (False, "Error message explain the failure")
(False, error)
를 반환할 때:
(True, result)
를 반환함output_pydantic
사용하기output_pydantic
속성을 사용하면 작업 출력이 준수해야 할 Pydantic 모델을 정의할 수 있습니다. 이를 통해 출력이 구조화될 뿐만 아니라 Pydantic 모델에 따라 유효성 검증도 보장할 수 있습니다.
다음은 output_pydantic을 사용하는 방법을 보여주는 예제입니다.
result["field_name"]
을 사용하여 필드를 직접 접근할 수 있습니다. 이는 CrewOutput 클래스가 __getitem__
메서드를 구현하고 있기 때문에 가능합니다.result.pydantic
객체에서 속성에 직접 접근할 수 있습니다.output_json
사용하기output_json
속성을 사용하면 예상되는 출력을 JSON 형식으로 정의할 수 있습니다. 이를 통해 태스크의 출력이 쉽게 파싱되고, 애플리케이션에서 사용할 수 있는 유효한 JSON 구조임을 보장합니다.
다음은 output_json
사용 방법을 보여주는 예시입니다:
context
속성을 통해 수행됩니다:
context
속성을 사용할 수 있습니다.
output
속성을 사용하여 특정 task의 output에 접근할 수 있습니다:
id
속성의 수동 할당을 방지함create_directory
매개변수는 CrewAI가 작업 결과를 파일로 저장할 때 디렉토리를 자동으로 생성할지 여부를 제어합니다. 이 기능은 출력물을 체계적으로 정리하고, 특히 복잡한 프로젝트 계층 구조에서 파일 경로가 올바르게 구조화되도록 보장하는 데 매우 유용합니다.
create_directory=True
로 설정되어 있으며, 이는 CrewAI가 출력 파일 경로에 누락된 디렉토리를 자동으로 생성함을 의미합니다:
create_directory=False
로 설정하세요:
create_directory=True
):
create_directory=False
):
create_directory=False
이고 디렉토리가 존재하지 않는 경우, CrewAI는 RuntimeError
를 발생시킵니다: