Guia detalhado sobre como gerenciar e criar tarefas dentro do framework CrewAI.
Task
(Tarefa) é uma atribuição específica executada por um Agent
(Agente).
As tarefas fornecem todos os detalhes necessários para sua execução, como descrição, agente responsável, ferramentas exigidas e mais, facilitando uma ampla gama de complexidades de ação.
As tarefas dentro do CrewAI podem ser colaborativas, exigindo que múltiplos agentes trabalhem juntos. Isso é gerenciado por meio das propriedades da tarefa e orquestrado pelo processo do Crew, potencializando o trabalho em equipe e a eficiência.
Atributo | Parâmetros | Tipo | Descrição |
---|---|---|---|
Descrição | description | str | Uma declaração clara e concisa do que a tarefa envolve. |
Saída Esperada | expected_output | str | Uma descrição detalhada de como deve ser o resultado da tarefa concluída. |
Nome (opcional) | name | Optional[str] | Um identificador de nome para a tarefa. |
Agente (opcional) | agent | Optional[BaseAgent] | O agente responsável por executar a tarefa. |
Ferramentas (opcional) | tools | List[BaseTool] | As ferramentas/recursos que o agente pode usar para esta tarefa. |
Contexto (opcional) | context | Optional[List["Task"]] | Outras tarefas cujas saídas serão usadas como contexto para esta tarefa. |
Execução Assíncrona (opc.) | async_execution | Optional[bool] | Se a tarefa deve ser executada de forma assíncrona. O padrão é False. |
Input Humano (opcional) | human_input | Optional[bool] | Se a tarefa deve ter uma revisão humana da resposta final do agente. O padrão é False. |
Markdown (opcional) | markdown | Optional[bool] | Se a tarefa deve instruir o agente a retornar a resposta final formatada em Markdown. O padrão é False. |
Config (opcional) | config | Optional[Dict[str, Any]] | Parâmetros de configuração específicos da tarefa. |
Arquivo de Saída (opcional) | output_file | Optional[str] | Caminho do arquivo para armazenar a saída da tarefa. |
Criar Diretório (opcional) | create_directory | Optional[bool] | Se deve criar o diretório para output_file caso não exista. O padrão é True. |
Saída JSON (opcional) | output_json | Optional[Type[BaseModel]] | Um modelo Pydantic para estruturar a saída em JSON. |
Output Pydantic (opcional) | output_pydantic | Optional[Type[BaseModel]] | Um modelo Pydantic para a saída da tarefa. |
Callback (opcional) | callback | Optional[Any] | Função/objeto a ser executado após a conclusão da tarefa. |
Guardrail (opcional) | guardrail | Optional[Callable] | Função para validar a saída da tarefa antes de prosseguir para a próxima tarefa. |
src/latest_ai_development/config/tasks.yaml
e modifique o template para refletir os requisitos específicos das tarefas.
{topic}
) serão substituídas por valores vindos dos seus inputs ao executar o crew:CrewBase
:
agents.yaml
e tasks.yaml
) devem corresponder aos nomes dos métodos no seu código Python.agent
para a tarefa ou permita que o processo hierarchical
do CrewAI decida com base em papéis, disponibilidade, etc.TaskOutput
, que suporta múltiplos formatos de saída e pode ser facilmente passada entre tarefas.
A saída de uma tarefa no framework CrewAI é encapsulada na classe TaskOutput
. Essa classe fornece uma maneira estruturada de acessar os resultados da tarefa, incluindo vários formatos como saída bruta, JSON e modelos Pydantic.
Por padrão, o TaskOutput
incluirá apenas a saída raw
. Um TaskOutput
só terá as saídas pydantic
ou json_dict
se o objeto original da Task
estiver configurado com output_pydantic
ou output_json
, respectivamente.
Atributo | Parâmetros | Tipo | Descrição |
---|---|---|---|
Description | description | str | Descrição da tarefa. |
Summary | summary | Optional[str] | Resumo da tarefa, gerado automaticamente a partir das primeiras 10 palavras da descrição. |
Raw | raw | str | Saída bruta da tarefa. Este é o formato padrão da saída. |
Pydantic | pydantic | Optional[BaseModel] | Objeto modelo Pydantic representando a saída da tarefa de forma estruturada. |
JSON Dict | json_dict | Optional[Dict[str, Any]] | Dicionário representando a saída da tarefa em JSON. |
Agent | agent | str | O agente que executou a tarefa. |
Output Format | output_format | OutputFormat | O formato da saída da tarefa, podendo ser RAW, JSON e Pydantic. O padrão é RAW. |
Método/Propriedade | Descrição |
---|---|
json | Retorna a representação da saída da tarefa em JSON como string, se o formato de saída for JSON. |
to_dict | Converte as saídas JSON e Pydantic para um dicionário. |
str | Retorna a representação em string da saída da tarefa, priorizando Pydantic, depois JSON, depois raw. |
output
do objeto Task
. A classe TaskOutput
oferece várias formas de interagir e apresentar esse resultado.
markdown
ativa a formatação automática em markdown na saída das tarefas. Quando configurado como True
, a tarefa irá instruir o agente a formatar a resposta final utilizando a sintaxe Markdown correta.
markdown=True
, o agente recebe instruções extras para formatar a saída usando:
#
para títulos**texto**
para negrito*texto*
para itálico-
ou *
para bullet points`código`
para código inline
linguagem ``` para blocos de códigomarkdown=True
, então não é necessário detalhar os requisitos de formatação na descrição da tarefa.context
. Por exemplo:
guardrail
:
(bool, Any)
(True, resultado_validado)
(False, "mensagem de erro explicando a falha")
(False, erro)
:
(True, resultado)
output_pydantic
output_pydantic
permite que você defina um modelo Pydantic que a saída da tarefa deve seguir. Isso garante que a saída seja não apenas estruturada, mas também validada de acordo com o modelo.
Veja um exemplo de uso do output_pydantic:
output_json
output_json
permite definir o formato de saída esperado em JSON. Isso garante que a saída da tarefa seja uma estrutura JSON válida que pode ser facilmente analisada e utilizada na aplicação.
Veja um exemplo de uso do output_json
:
output_pydantic
ou output_json
, você garante que suas tarefas produzam saídas em um formato estruturado e consistente, facilitando o processamento e uso dos dados na sua aplicação ou entre múltiplas tarefas.
context
:
context
para indicar, em uma tarefa futura, que ela deve aguardar os resultados da tarefa assíncrona.
output
do objeto da tarefa:
id
, preservando a integridade do sistema de identificadores únicos.(sucesso, dados)
:
sucesso
é True
, dados
é o resultado validado/transformadosucesso
é False
, dados
é a mensagem de erroTrue
): o resultado é automaticamente passado para a próxima tarefaFalse
): o erro é enviado de volta ao agente para gerar uma nova respostacreate_directory
controla se o CrewAI deve criar automaticamente diretórios ao salvar saídas de tarefas em arquivos. Este recurso é particularmente útil para organizar outputs e garantir que os caminhos de arquivos estejam estruturados corretamente, especialmente ao trabalhar com hierarquias de projetos complexas.
create_directory=True
, o que significa que o CrewAI criará automaticamente qualquer diretório ausente no caminho do arquivo de saída:
create_directory=False
:
create_directory=True
):
create_directory=False
):
create_directory=False
e o diretório não existe, o CrewAI gerará um RuntimeError
: