Pular para o conteúdo principal

Visão Geral de um Agente

No framework CrewAI, um Agent é uma unidade autônoma que pode:
  • Executar tarefas específicas
  • Tomar decisões com base em seu papel e objetivo
  • Utilizar ferramentas para alcançar objetivos
  • Comunicar e colaborar com outros agentes
  • Manter a memória de interações
  • Delegar tarefas, quando permitido
Pense em um agente como um membro especializado da equipe com habilidades, competências e responsabilidades específicas. Por exemplo, um agente Researcher pode ser excelente em coletar e analisar informações, enquanto um agente Writer pode ser melhor na criação de conteúdo.
O CrewAI AMP inclui um Construtor Visual de Agentes, que simplifica a criação e configuração de agentes sem escrever código. Projete seus agentes visualmente e teste-os em tempo real.Visual Agent Builder ScreenshotO Construtor Visual de Agentes permite:
  • Configuração intuitiva de agentes com interfaces baseadas em formulários
  • Testes e validação em tempo real
  • Biblioteca de modelos com tipos de agentes pré-configurados
  • Fácil personalização de atributos e comportamentos do agente

Atributos do Agente

Criando Agentes

Existem duas formas comuns de criar agentes no CrewAI: usando configuração JSONC (recomendado para novas crews) ou definindo-os diretamente em código.

Configuração JSONC (Recomendado)

Novos projetos criados com crewai create crew <name> usam configuração JSON-first. Cada agente fica em agents/<agent_name>.jsonc, e crew.jsonc lista quais agentes fazem parte da crew.
agents/researcher.jsonc
Use {placeholder} em role, goal ou backstory. Defina padrões em crew.jsonc dentro de inputs; crewai run pergunta por valores que estiverem faltando. Campos de comportamento como verbose, allow_delegation, max_iter, memory, cache e planning_config podem ficar no topo ou em settings.
JSONC aceita comentários e vírgulas finais. Se agents/<name>.jsonc e agents/<name>.json existirem, CrewAI usa o arquivo JSONC.

Configuração YAML Clássica

Projetos clássicos criados com crewai create crew <name> --classic usam config/agents.yaml e uma classe @CrewBase em crew.py. A configuração YAML continua suportada para projetos existentes em Python/YAML e para equipes que preferem definir agentes a partir de uma classe @CrewBase. Depois de criar um projeto clássico, navegue até o arquivo src/<project_name>/config/agents.yaml e edite o template para atender aos seus requisitos.
Variáveis em seus arquivos YAML (como {topic}) serão substituídas pelos valores fornecidos em seus inputs ao executar o crew:
Code
Veja um exemplo de como configurar agentes usando YAML:
agents.yaml
Para usar essa configuração YAML no seu código, crie uma classe de crew que herda de CrewBase:
Code
Os nomes utilizados em seus arquivos YAML (agents.yaml) devem ser iguais aos nomes dos métodos no seu código Python.

Definição Direta em Código

Você pode criar agentes diretamente em código instanciando a classe Agent. Veja um exemplo abrangente mostrando todos os parâmetros disponíveis:
Code
Vamos detalhar algumas combinações de parâmetros-chave para casos de uso comuns:

Agente de Pesquisa Básico

Code

Agente de Desenvolvimento de Código

Code

Agente de Análise de Longa Duração

Code

Agente com Template Personalizado

Code

Agente Ciente de Data, com Raciocínio

Code

Agente de Raciocínio

Code

Agente Multimodal

Code

Detalhes dos Parâmetros

Parâmetros Críticos

  • role, goal e backstory são obrigatórios e definem o comportamento do agente
  • llm determina o modelo de linguagem utilizado (padrão: GPT-4 da OpenAI)

Memória e Contexto

  • memory: Ative para manter o histórico de conversas
  • respect_context_window: Evita problemas com limites de tokens
  • knowledge_sources: Adicione bases de conhecimento específicas do domínio

Controle de Execução

  • max_iter: Número máximo de tentativas antes da melhor resposta
  • max_execution_time: Tempo limite em segundos
  • max_rpm: Limite de requisições por minuto
  • max_retry_limit: Tentativas de correção em erros

Execução de Código

allow_code_execution e code_execution_mode estão depreciados. O CodeInterpreterTool foi removido do crewai-tools. Use um serviço de sandbox dedicado como E2B ou Modal para execução segura de código.
  • allow_code_execution (depreciado): Anteriormente habilitava a execução de código embutida via CodeInterpreterTool.
  • code_execution_mode (depreciado): Anteriormente controlava o modo de execução ("safe" para Docker, "unsafe" para execução direta).

Funcionalidades Avançadas

  • multimodal: Habilita capacidades multimodais para processar texto e conteúdo visual
  • reasoning: Permite que o agente reflita e crie planos antes de executar tarefas
  • inject_date: Injeta a data atual automaticamente nas descrições das tarefas

Templates

  • system_template: Define o comportamento central do agente
  • prompt_template: Estrutura o formato da entrada
  • response_template: Formata as respostas do agente
Ao usar templates personalizados, assegure-se de definir tanto system_template quanto prompt_template. O response_template é opcional, mas recomendado para formatação consistente de saída.
Ao usar templates personalizados, você pode usar variáveis como {role}, {goal} e {backstory} em seus templates. Elas serão automaticamente preenchidas durante a execução.

Ferramentas do Agente

Agentes podem ser equipados com diversas ferramentas para ampliar suas capacidades. O CrewAI suporta ferramentas do: Veja como adicionar ferramentas a um agente:
Code

Memória e Contexto do Agente

Agentes podem manter a memória de suas interações e usar contexto de tarefas anteriores. Isto é especialmente útil para fluxos de trabalho complexos onde é necessário reter informações ao longo de várias tarefas.
Code
Quando memory está ativo, o agente manterá o contexto ao longo de múltiplas interações, melhorando a capacidade de lidar com tarefas complexas, em múltiplos passos.

Gerenciamento da Janela de Contexto

O CrewAI inclui um gerenciamento automático sofisticado de janela de contexto para lidar com situações onde as conversas excedem o limite de tokens do modelo de linguagem. Esse poderoso recurso é controlado pelo parâmetro respect_context_window.

Como Funciona o Gerenciamento de Janela de Contexto

Quando o histórico de conversas de um agente se torna muito grande para a janela de contexto do LLM, o CrewAI detecta essa situação automaticamente e pode:
  1. Resumir o conteúdo automaticamente (com respect_context_window=True)
  2. Parar a execução com erro (com respect_context_window=False)

Manipulação Automática de Contexto (respect_context_window=True)

Esta é a configuração padrão e recomendada para a maioria dos casos. Quando ativada, CrewAI irá:
Code
O que acontece quando os limites de contexto são excedidos:
  • ⚠️ Mensagem de aviso: "Context length exceeded. Summarizing content to fit the model context window."
  • 🔄 Resumir automaticamente: O CrewAI resume o histórico da conversa de forma inteligente
  • Execução contínua: A execução da tarefa prossegue normalmente com o contexto resumido
  • 📝 Informação preservada: Informações-chave são mantidas enquanto reduz a contagem de tokens

Limites Estritos de Contexto (respect_context_window=False)

Quando você precisa de controle total e prefere que a execução pare a perder qualquer informação:
Code
O que acontece quando os limites de contexto são excedidos:
  • Mensagem de erro: "Context length exceeded. Consider using smaller text or RAG tools from crewai_tools."
  • 🛑 Execução interrompida: A execução da tarefa é parada imediatamente
  • 🔧 Intervenção manual necessária: Você precisará modificar sua abordagem

Como Escolher a Melhor Configuração

Use respect_context_window=True (padrão) quando:

  • Processar documentos grandes que podem ultrapassar os limites de contexto
  • Conversas longas onde certo grau de resumo é aceitável
  • Tarefas de pesquisa onde o contexto geral é mais importante que detalhes exatos
  • Prototipagem e desenvolvimento quando se deseja execução robusta
Code

Use respect_context_window=False quando:

  • Precisão é crítica e perda de informação é inaceitável
  • Tarefas jurídicas ou médicas que requerem contexto completo
  • Revisão de código onde detalhes perdidos podem causar bugs
  • Análise financeira onde precisão é fundamental
Code

Abordagens Alternativas para Grandes Volumes de Dados

Ao lidar com conjuntos de dados muito grandes, considere as seguintes estratégias:

1. Use Ferramentas RAG

Code

2. Use Fontes de Conhecimento

Code

Boas Práticas para Janela de Contexto

  1. Monitore o uso de contexto: Ative verbose=True para visualizar o gerenciamento de contexto em ação
  2. Otimize para eficiência: Estruture tarefas para minimizar o acúmulo de contexto
  3. Use modelos apropriados: Escolha LLMs com janelas de contexto adequadas à sua tarefa
  4. Teste ambos os modos: Experimente True e False para descobrir o que funciona melhor para seu caso
  5. Combine com RAG: Utilize ferramentas RAG para grandes conjuntos de dados ao invés de depender apenas da janela de contexto

Solucionando Problemas de Contexto

Se você receber erros de limite de contexto:
Code
Se o resumo automático perder informações importantes:
Code
O recurso de gerenciamento da janela de contexto funciona automaticamente em segundo plano. Você não precisa chamar funções especiais – basta definir respect_context_window conforme deseja e o CrewAI cuida do resto!

Considerações e Boas Práticas Importantes

Segurança e Execução de Código

allow_code_execution e code_execution_mode estão depreciados e o CodeInterpreterTool foi removido. Use um serviço de sandbox dedicado como E2B ou Modal para execução segura de código.

Otimização de Performance

  • Use respect_context_window: true para evitar problemas com limite de tokens
  • Ajuste max_rpm para evitar rate limiting
  • Ative cache: true para melhorar performance em tarefas repetitivas
  • Ajuste max_iter e max_retry_limit conforme a complexidade da tarefa

Gerenciamento de Memória e Contexto

  • Considere knowledge_sources para informações específicas de domínio
  • Configure embedder ao usar modelos de embedding personalizados
  • Use templates personalizados (system_template, prompt_template, response_template) para controle fino do comportamento do agente

Funcionalidades Avançadas

  • Ative reasoning: true para agentes que precisam planejar e refletir antes de tarefas complexas
  • Defina max_reasoning_attempts para controlar as iterações de planejamento (None para ilimitadas)
  • Use inject_date: true para dar consciência temporal a agentes em tarefas que dependem de datas
  • Personalize o formato de data com date_format usando códigos padrões do Python datetime
  • Ative multimodal: true para agentes que precisam processar texto e imagem

Colaboração entre Agentes

  • Ative allow_delegation: true quando agentes precisarem trabalhar juntos
  • Use step_callback para monitorar e registrar interações dos agentes
  • Considere usar LLMs diferentes para propósitos distintos:
    • llm principal para raciocínio complexo
    • function_calling_llm para uso eficiente de ferramentas

Consciência de Data e Raciocínio

  • Use inject_date: true para fornecer consciência temporal aos agentes em tarefas sensíveis ao tempo
  • Customize o formato de data com date_format usando códigos standards de datetime do Python
  • Códigos válidos incluem: %Y (ano), %m (mês), %d (dia), %B (nome completo do mês), etc.
  • Formatos de data inválidos serão registrados como avisos e não modificarão a descrição da tarefa
  • Ative reasoning: true para tarefas complexas que se beneficiam de planejamento e reflexão antecipados

Compatibilidade de Modelos

  • Defina use_system_prompt: false para modelos antigos que não suportam mensagens de sistema
  • Certifique-se que o llm escolhido suporta as funcionalidades necessárias (como function calling)

Solução de Problemas Comuns

  1. Limite de Taxa (Rate Limiting): Se atingir limites de API:
    • Implemente o max_rpm adequado
    • Use cache para operações repetitivas
    • Considere agrupar requisições em lote
  2. Erros de Janela de Contexto: Se exceder limites de contexto:
    • Habilite respect_context_window
    • Otimize seus prompts
    • Limpe periodicamente a memória do agente
  3. Problemas de Execução de Código: Se a execução de código falhar:
    • Verifique se o Docker está instalado para o modo seguro
    • Cheque permissões de execução
    • Revise as configurações do sandbox de código
  4. Problemas de Memória: Se as respostas do agente parecerem inconsistentes:
    • Cheque a configuração das fontes de conhecimento
    • Analise o gerenciamento do histórico de conversas
Lembre-se de que agentes são mais eficientes quando configurados de acordo com o caso de uso específico. Reserve um tempo para entender seus requisitos e ajustar esses parâmetros conforme necessário.