crew.py.
Introdução
As anotações no framework CrewAI são utilizadas para decorar classes e métodos, fornecendo metadados e funcionalidades para diversos componentes do seu crew. Essas anotações auxiliam na organização e estruturação do seu código, tornando-o mais legível e fácil de manter.Anotações Disponíveis
O framework CrewAI fornece as seguintes anotações:@CrewBase: Usada para decorar a classe principal do crew.@agent: Decora métodos que definem e retornam objetos Agent.@task: Decora métodos que definem e retornam objetos Task.@crew: Decora o método que cria e retorna o objeto Crew.@llm: Decora métodos que inicializam e retornam objetos Language Model.@tool: Decora métodos que inicializam e retornam objetos Tool.@callback: Utilizada para definir métodos de callback.@output_json: Utilizada para métodos que retornam dados em JSON.@output_pydantic: Utilizada para métodos que retornam modelos Pydantic.@cache_handler: Utilizada para definição de métodos de manipulação de cache.
Exemplos de Uso
Vamos passar por exemplos de como utilizar essas anotações:1. Classe Base do Crew
@CrewBase é usada para decorar a classe principal do crew. Esta classe geralmente contém as configurações e métodos para criação de agentes, tarefas e do próprio crew.
@CrewBase faz bem mais do que registrar a classe:- Inicialização de configuração: busca
agents_configetasks_config(padrõesconfig/agents.yamleconfig/tasks.yaml) ao lado do arquivo da classe, carrega esses YAMLs na inicialização e utiliza dicionários vazios quando os arquivos não existem. - Orquestração de decoradores: mantém versões memoizadas dos métodos marcados com
@agent,@task,@before_kickoffe@after_kickoffpara que sejam instanciados uma única vez por crew e respeitem a ordem de declaração. - Encadeamento de hooks: conecta automaticamente os hooks preservados ao objeto
Crewretornado pelo método@crew, garantindo que executem antes e depois de.kickoff(). - Integração MCP: quando a classe define
mcp_server_params,get_mcp_tools()cria sob demanda um adaptador MCP, carrega as ferramentas declaradas e um hook interno pós-kickoff encerra o adaptador. Consulte a visão geral de MCP para detalhes de configuração.
2. Definição de Tool
@tool é usada para decorar métodos que retornam objetos tool. Essas ferramentas podem ser usadas por agentes para executar tarefas específicas.
3. Definição de LLM
@llm é usada para decorar métodos que inicializam e retornam objetos Language Model. Esses LLMs são utilizados pelos agentes para tarefas de processamento de linguagem natural.
4. Definição de Agente
@agent é usada para decorar métodos que definem e retornam objetos Agent.
5. Definição de Tarefa
@task é usada para decorar métodos que definem e retornam objetos Task. Esses métodos especificam a configuração da tarefa e o agente responsável por ela.
6. Criação do Crew
@crew é usada para decorar o método que cria e retorna o objeto Crew. Este método reúne todos os componentes (agentes e tarefas) em um crew funcional.
Configuração YAML
As configurações dos agentes geralmente são armazenadas em um arquivo YAML. Veja um exemplo de como o arquivoagents.yaml pode ser estruturado para o agente researcher:
LinkedinProfileCrew. A configuração especifica o papel do agente, objetivo, contexto e outras propriedades, como o LLM e as tools que ele utiliza.
Repare como os campos llm e tools no arquivo YAML correspondem aos métodos decorados com @llm e @tool na classe Python.
Boas Práticas
- Nomenclatura Consistente: Utilize nomenclatura clara e consistente para seus métodos. Por exemplo, métodos de agentes podem ser nomeados de acordo com suas funções (ex: researcher, reporting_analyst).
- Variáveis de Ambiente: Utilize variáveis de ambiente para informações sensíveis como chaves de API.
- Flexibilidade: Estruture seu crew de forma flexível, permitindo fácil adição ou remoção de agentes e tarefas.
- Correspondência YAML-Código: Assegure que os nomes e estruturas nos arquivos YAML correspondam corretamente aos métodos decorados em seu código Python.
