Documentation Index
Fetch the complete documentation index at: https://crewai-devin-1778040886-fix-hitl-pre-review-silent-fallback.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Visão Geral
Uma crew no crewAI representa um grupo colaborativo de agentes trabalhando em conjunto para alcançar um conjunto de tarefas. Cada crew define a estratégia de execução de tarefas, colaboração entre agentes e o fluxo de trabalho geral.Atributos de Crew
| Atributo | Parâmetros | Descrição | |
|---|---|---|---|
| Tasks | tasks | Uma lista de tasks atribuídas à crew. | |
| Agents | agents | Uma lista de agentes que fazem parte da crew. | |
| Process (opcional) | process | O fluxo de processo (por exemplo, sequencial, hierárquico) seguido pela crew. O padrão é sequential. | |
| Verbose (opcional) | verbose | O nível de verbosidade para logging durante a execução. O padrão é False. | |
| Manager LLM (opcional) | manager_llm | O modelo de linguagem utilizado pelo agente gerenciador em um processo hierárquico. Obrigatório ao usar um processo hierárquico. | |
| Function Calling LLM (opcional) | function_calling_llm | Se definido, a crew utilizará este LLM para invocar funções das ferramentas para todos os agentes da crew. Cada agente pode ter seu próprio LLM, que substitui o LLM da crew para chamadas de função. | |
| Config (opcional) | config | Configurações opcionais para a crew, no formato Json ou Dict[str, Any]. | |
| Max RPM (opcional) | max_rpm | Número máximo de requisições por minuto que a crew respeita durante a execução. O padrão é None. | |
| Memory (opcional) | memory | Utilizada para armazenar memórias de execução (curto prazo, longo prazo, memória de entidade). | |
| Cache (opcional) | cache | Especifica se deve usar cache para armazenar os resultados da execução de ferramentas. O padrão é True. | |
| Embedder (opcional) | embedder | Configuração do embedder a ser utilizado pela crew. Atualmente mais usado por memory. O padrão é {"provider": "openai"}. | |
| Step Callback (opcional) | step_callback | Uma função chamada após cada etapa de cada agente. Pode ser usada para registrar as ações do agente ou executar outras operações; não sobrescreve o step_callback específico do agente. | |
| Task Callback (opcional) | task_callback | Uma função chamada após a conclusão de cada tarefa. Útil para monitoramento ou para operações adicionais pós-execução da task. | |
| Share Crew (opcional) | share_crew | Se deseja compartilhar as informações completas da crew e execução com a equipe do crewAI para melhorar a biblioteca e nos permitir treinar modelos. | |
| Output Log File (opcional) | output_log_file | Defina como True para salvar logs como logs.txt no diretório atual ou forneça um caminho de arquivo. Os logs estarão em formato JSON se o nome terminar com .json, caso contrário .txt. O padrão é None. | |
| Manager Agent (opcional) | manager_agent | manager define um agente customizado que será utilizado como gerente. | |
| Prompt File (opcional) | prompt_file | Caminho para o arquivo JSON de prompt a ser utilizado pela crew. | |
| Planning (opcional) | planning | Adiciona habilidade de planejamento à Crew. Quando ativado, antes de cada iteração, todos os dados da Crew são enviados a um AgentPlanner que planejará as tasks e este plano será adicionado à descrição de cada task. | |
| Planning LLM (opcional) | planning_llm | O modelo de linguagem usado pelo AgentPlanner em um processo de planejamento. | |
| Knowledge Sources (opcional) | knowledge_sources | Fontes de conhecimento disponíveis no nível da crew, acessíveis a todos os agentes. | |
| Stream (opcional) | stream | Habilita saída em streaming para receber atualizações em tempo real durante a execução da crew. Retorna um objeto CrewStreamingOutput que pode ser iterado para chunks. O padrão é False. |
Criando Crews
Existem duas maneiras de criar crews no CrewAI: utilizando configuração YAML (recomendado) ou definindo diretamente em código.Configuração YAML (Recomendado)
O uso da configuração YAML proporciona uma forma mais limpa e fácil de manter para definir crews, sendo consistente com a definição de agentes e tasks em projetos CrewAI. Após criar seu projeto CrewAI conforme descrito na seção Instalação, você pode definir sua crew em uma classe que herda deCrewBase e utiliza decorators para definir agentes, tarefas e a própria crew.
Exemplo de Classe Crew com Decorators
code
code
As tarefas serão executadas na ordem em que forem definidas.
CrewBase, junto com esses decorators, automatiza a coleta de agentes e tarefas, reduzindo a necessidade de gerenciamento manual.
Visão geral dos Decorators de annotations.py
O CrewAI fornece vários decorators no arquivo annotations.py que são usados para marcar métodos dentro de sua classe crew para tratamento especial:
@CrewBase: Marca a classe como classe base de crew.@agent: Denota um método que retorna um objetoAgent.@task: Denota um método que retorna um objetoTask.@crew: Denota o método que retorna o objetoCrew.@before_kickoff: (Opcional) Marca um método a ser executado antes da crew iniciar.@after_kickoff: (Opcional) Marca um método a ser executado após a crew finalizar.
Definição Direta em Código (Alternativa)
Como alternativa, você pode definir a crew diretamente em código sem utilizar arquivos de configuração YAML.code
code
- Agentes e tarefas são definidos diretamente dentro da classe, sem decorators.
- Criamos e gerenciamos manualmente a lista de agentes e tasks.
- Essa abordagem fornece mais controle, mas pode ser menos sustentável para projetos maiores.
Saída da Crew
A saída de uma crew no framework CrewAI é encapsulada na classeCrewOutput.
Essa classe fornece uma forma estruturada de acessar os resultados da execução da crew, incluindo vários formatos como string bruta, JSON e modelos Pydantic.
O CrewOutput inclui os resultados da tarefa final, uso de tokens e as saídas das tasks individuais.
Atributos do Crew Output
| Atributo | Parâmetros | Tipo | Descrição |
|---|---|---|---|
| Raw | raw | str | A saída bruta da crew. Este é o formato padrão da saída. |
| Pydantic | pydantic | Optional[BaseModel] | Um objeto modelo Pydantic representando a saída estruturada da crew. |
| JSON Dict | json_dict | Optional[Dict[str, Any]] | Um dicionário representando a saída da crew em formato JSON. |
| Tasks Output | tasks_output | List[TaskOutput] | Uma lista de objetos TaskOutput, cada um representando a saída de uma task na crew. |
| Token Usage | token_usage | Dict[str, Any] | Um resumo do uso de tokens, oferecendo informações sobre a performance do modelo de linguagem. |
Métodos e Propriedades do Crew Output
| Método/Propriedade | Descrição |
|---|---|
| json | Retorna a representação em string JSON da saída da crew caso o formato seja JSON. |
| to_dict | Converte as saídas JSON e Pydantic em um dicionário. |
| str | Retorna a representação em string do resultado da crew, priorizando Pydantic, depois JSON, depois raw. |
Acessando a Saída da Crew
Após executar uma crew, sua saída pode ser acessada pelo atributooutput do objeto Crew. A classe CrewOutput oferece várias formas de interagir com esta saída.
Exemplo
Code
Acessando Logs da Crew
Você pode visualizar o log em tempo real da execução da crew, definindooutput_log_file como True(Boolean) ou um file_name(str). Suporta logging de eventos como tanto file_name.txt quanto file_name.json.
Se for True(Boolean), salvará como logs.txt.
Caso output_log_file seja False(Boolean) ou None, os logs não serão gerados.
Code
Utilização de Memória
As crews podem utilizar memória (curto prazo, longo prazo e memória de entidade) para potencializar sua execução e aprendizado ao longo do tempo. Este recurso permite que as crews armazenem e recuperem memórias de execução, auxiliando na tomada de decisão e nas estratégias de execução de tasks.Utilização de Cache
Caches podem ser utilizados para armazenar resultados de execuções de ferramentas, tornando o processo mais eficiente ao evitar a reexecução de tasks idênticas.Métricas de Uso da Crew
Após a execução da crew, você pode acessar o atributousage_metrics para visualizar as métricas de uso do modelo de linguagem (LLM) para todas as tasks executadas pela crew. Isso fornece insights sobre eficiência operacional e oportunidades de melhoria.
Code
Processo de Execução da Crew
- Sequential Process: As tasks são executadas uma após a outra, permitindo um fluxo de trabalho linear.
- Hierarchical Process: Um agente gerente coordena a crew, delegando tarefas e validando resultados antes de prosseguir. Nota: Um
manager_llmoumanager_agenté necessário para este processo e é essencial para validar o fluxo.
Iniciando uma Crew
Uma vez que sua crew esteja montada, inicie o workflow com o métodokickoff(). Isso inicia a execução conforme o fluxo de processo definido.
Code
Diferentes Formas de Iniciar uma Crew
Assim que sua crew estiver definida, inicie o fluxo de trabalho com o método kickoff apropriado. O CrewAI oferece vários métodos para melhor controle do processo.Métodos Síncronos
kickoff(): Inicia o processo de execução seguindo o fluxo definido.kickoff_for_each(): Executa tasks sequencialmente para cada evento de entrada ou item da coleção fornecida.
Métodos Assíncronos
O CrewAI oferece duas abordagens para execução assíncrona:| Método | Tipo | Descrição |
|---|---|---|
akickoff() | Async nativo | Async/await verdadeiro em toda a cadeia de execução |
akickoff_for_each() | Async nativo | Execução async nativa para cada entrada em uma lista |
kickoff_async() | Baseado em thread | Envolve execução síncrona em asyncio.to_thread |
kickoff_for_each_async() | Baseado em thread | Async baseado em thread para cada entrada em uma lista |
Para cargas de trabalho de alta concorrência,
akickoff() e akickoff_for_each() são recomendados pois usam async nativo para execução de tasks, operações de memória e recuperação de conhecimento.Code
Streaming na Execução da Crew
Para visibilidade em tempo real da execução da crew, você pode habilitar streaming para receber saída conforme é gerada:Code
Repetindo Execução a partir de uma Task Específica
Agora é possível reiniciar a execução a partir de uma task específica usando o comando CLIreplay.
O recurso de replay no CrewAI permite reexecutar a partir de uma task específica através da interface de linha de comando (CLI). Rodando o comando crewai replay -t <task_id>, você pode especificar o task_id para o processo de replay.
Kickoffs agora salvam localmente as saídas das tasks dos kickoffs recentes para permitir replay posteriormente.
Repetindo a Partir de uma Task Específica Usando o CLI
Para usar o recurso de replay, siga estes passos:- Abra seu terminal ou prompt de comando.
- Navegue até o diretório do seu projeto CrewAI.
- Execute o seguinte comando:
