adjust aop to amp docs lang (#4179)
Some checks failed
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Check Documentation Broken Links / Check broken links (push) Has been cancelled
Notify Downstream / notify-downstream (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled

* adjust aop to amp docs lang

* whoop no print
This commit is contained in:
Lorenze Jay
2026-01-05 15:30:21 -08:00
committed by GitHub
parent f8deb0fd18
commit 25c0c030ce
203 changed files with 5176 additions and 2715 deletions

View File

@@ -8,6 +8,7 @@ mode: "wide"
## 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
@@ -16,15 +17,19 @@ No framework CrewAI, um `Agent` é uma unidade autônoma que pode:
- Delegar tarefas, quando permitido
<Tip>
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.
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.
</Tip>
<Note type="info" title="Aprimoramento Empresarial: Construtor Visual de Agentes">
O CrewAI AOP 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.
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 Screenshot](/images/enterprise/crew-studio-interface.png)
O 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
@@ -33,36 +38,36 @@ O Construtor Visual de Agentes permite:
## Atributos do Agente
| Atributo | Parâmetro | Tipo | Descrição |
| :-------------------------------------- | :----------------------- | :---------------------------- | :----------------------------------------------------------------------------------------------------------------- |
| **Role (Função)** | `role` | `str` | Define a função e a área de especialização do agente dentro da equipe. |
| **Goal (Objetivo)** | `goal` | `str` | O objetivo individual que guia a tomada de decisão do agente. |
| **Backstory (História de fundo)** | `backstory` | `str` | Fornece contexto e personalidade ao agente, enriquecendo as interações. |
| **LLM** _(opcional)_ | `llm` | `Union[str, LLM, Any]` | Modelo de linguagem que alimenta o agente. Padrão: modelo especificado em `OPENAI_MODEL_NAME` ou "gpt-4". |
| **Tools (Ferramentas)** _(opcional)_ | `tools` | `List[BaseTool]` | Capacidades ou funções disponíveis para o agente. Padrão: lista vazia. |
| **Function Calling LLM** _(opcional)_ | `function_calling_llm` | `Optional[Any]` | Modelo de linguagem usado para chamada de ferramentas, sobrescreve LLM principal se especificado. |
| **Max Iterations** _(opcional)_ | `max_iter` | `int` | Número máximo de iterações antes do agente fornecer sua melhor resposta. Padrão: 20. |
| **Max RPM** _(opcional)_ | `max_rpm` | `Optional[int]` | Quantidade máxima de requisições por minuto para evitar limites de taxa. |
| **Max Execution Time** _(opcional)_ | `max_execution_time` | `Optional[int]` | Tempo máximo (em segundos) de execução da tarefa. |
| **Verbose** _(opcional)_ | `verbose` | `bool` | Habilita logs detalhados de execução para depuração. Padrão: False. |
| **Allow Delegation** _(opcional)_ | `allow_delegation` | `bool` | Permite que o agente delegue tarefas para outros agentes. Padrão: False. |
| **Step Callback** _(opcional)_ | `step_callback` | `Optional[Any]` | Função chamada após cada passo do agente, sobrescreve callback da equipe. |
| **Cache** _(opcional)_ | `cache` | `bool` | Ativa cache para o uso de ferramentas. Padrão: True. |
| **System Template** _(opcional)_ | `system_template` | `Optional[str]` | Template personalizado de prompt de sistema para o agente. |
| **Prompt Template** _(opcional)_ | `prompt_template` | `Optional[str]` | Template de prompt personalizado para o agente. |
| **Response Template** _(opcional)_ | `response_template` | `Optional[str]` | Template de resposta personalizado para o agente. |
| **Allow Code Execution** _(opcional)_ | `allow_code_execution` | `Optional[bool]` | Ativa execução de código pelo agente. Padrão: False. |
| **Max Retry Limit** _(opcional)_ | `max_retry_limit` | `int` | Número máximo de tentativas (retries) em caso de erro. Padrão: 2. |
| **Respect Context Window** _(opcional)_ | `respect_context_window` | `bool` | Mantém as mensagens dentro do tamanho da janela de contexto, resumindo quando necessário. Padrão: True. |
| **Code Execution Mode** _(opcional)_ | `code_execution_mode` | `Literal["safe", "unsafe"]` | Modo de execução de código: 'safe' (usando Docker) ou 'unsafe' (direto). Padrão: 'safe'. |
| **Multimodal** _(opcional)_ | `multimodal` | `bool` | Se o agente suporta capacidades multimodais. Padrão: False. |
| **Inject Date** _(opcional)_ | `inject_date` | `bool` | Se deve injetar automaticamente a data atual nas tarefas. Padrão: False. |
| **Date Format** _(opcional)_ | `date_format` | `str` | Formato de data utilizado quando `inject_date` está ativo. Padrão: "%Y-%m-%d" (formato ISO). |
| **Reasoning** _(opcional)_ | `reasoning` | `bool` | Se o agente deve refletir e criar um plano antes de executar uma tarefa. Padrão: False. |
| **Max Reasoning Attempts** _(opcional)_ | `max_reasoning_attempts` | `Optional[int]` | Número máximo de tentativas de raciocínio antes de executar a tarefa. Se None, tentará até estar pronto. |
| **Embedder** _(opcional)_ | `embedder` | `Optional[Dict[str, Any]]` | Configuração do embedder utilizado pelo agente. |
| **Knowledge Sources** _(opcional)_ | `knowledge_sources` | `Optional[List[BaseKnowledgeSource]]` | Fontes de conhecimento disponíveis para o agente. |
| **Use System Prompt** _(opcional)_ | `use_system_prompt` | `Optional[bool]` | Se deve usar o system prompt (suporte para modelo o1). Padrão: True. |
| Atributo | Parâmetro | Tipo | Descrição |
| :-------------------------------------- | :----------------------- | :------------------------------------ | :-------------------------------------------------------------------------------------------------------- |
| **Role (Função)** | `role` | `str` | Define a função e a área de especialização do agente dentro da equipe. |
| **Goal (Objetivo)** | `goal` | `str` | O objetivo individual que guia a tomada de decisão do agente. |
| **Backstory (História de fundo)** | `backstory` | `str` | Fornece contexto e personalidade ao agente, enriquecendo as interações. |
| **LLM** _(opcional)_ | `llm` | `Union[str, LLM, Any]` | Modelo de linguagem que alimenta o agente. Padrão: modelo especificado em `OPENAI_MODEL_NAME` ou "gpt-4". |
| **Tools (Ferramentas)** _(opcional)_ | `tools` | `List[BaseTool]` | Capacidades ou funções disponíveis para o agente. Padrão: lista vazia. |
| **Function Calling LLM** _(opcional)_ | `function_calling_llm` | `Optional[Any]` | Modelo de linguagem usado para chamada de ferramentas, sobrescreve LLM principal se especificado. |
| **Max Iterations** _(opcional)_ | `max_iter` | `int` | Número máximo de iterações antes do agente fornecer sua melhor resposta. Padrão: 20. |
| **Max RPM** _(opcional)_ | `max_rpm` | `Optional[int]` | Quantidade máxima de requisições por minuto para evitar limites de taxa. |
| **Max Execution Time** _(opcional)_ | `max_execution_time` | `Optional[int]` | Tempo máximo (em segundos) de execução da tarefa. |
| **Verbose** _(opcional)_ | `verbose` | `bool` | Habilita logs detalhados de execução para depuração. Padrão: False. |
| **Allow Delegation** _(opcional)_ | `allow_delegation` | `bool` | Permite que o agente delegue tarefas para outros agentes. Padrão: False. |
| **Step Callback** _(opcional)_ | `step_callback` | `Optional[Any]` | Função chamada após cada passo do agente, sobrescreve callback da equipe. |
| **Cache** _(opcional)_ | `cache` | `bool` | Ativa cache para o uso de ferramentas. Padrão: True. |
| **System Template** _(opcional)_ | `system_template` | `Optional[str]` | Template personalizado de prompt de sistema para o agente. |
| **Prompt Template** _(opcional)_ | `prompt_template` | `Optional[str]` | Template de prompt personalizado para o agente. |
| **Response Template** _(opcional)_ | `response_template` | `Optional[str]` | Template de resposta personalizado para o agente. |
| **Allow Code Execution** _(opcional)_ | `allow_code_execution` | `Optional[bool]` | Ativa execução de código pelo agente. Padrão: False. |
| **Max Retry Limit** _(opcional)_ | `max_retry_limit` | `int` | Número máximo de tentativas (retries) em caso de erro. Padrão: 2. |
| **Respect Context Window** _(opcional)_ | `respect_context_window` | `bool` | Mantém as mensagens dentro do tamanho da janela de contexto, resumindo quando necessário. Padrão: True. |
| **Code Execution Mode** _(opcional)_ | `code_execution_mode` | `Literal["safe", "unsafe"]` | Modo de execução de código: 'safe' (usando Docker) ou 'unsafe' (direto). Padrão: 'safe'. |
| **Multimodal** _(opcional)_ | `multimodal` | `bool` | Se o agente suporta capacidades multimodais. Padrão: False. |
| **Inject Date** _(opcional)_ | `inject_date` | `bool` | Se deve injetar automaticamente a data atual nas tarefas. Padrão: False. |
| **Date Format** _(opcional)_ | `date_format` | `str` | Formato de data utilizado quando `inject_date` está ativo. Padrão: "%Y-%m-%d" (formato ISO). |
| **Reasoning** _(opcional)_ | `reasoning` | `bool` | Se o agente deve refletir e criar um plano antes de executar uma tarefa. Padrão: False. |
| **Max Reasoning Attempts** _(opcional)_ | `max_reasoning_attempts` | `Optional[int]` | Número máximo de tentativas de raciocínio antes de executar a tarefa. Se None, tentará até estar pronto. |
| **Embedder** _(opcional)_ | `embedder` | `Optional[Dict[str, Any]]` | Configuração do embedder utilizado pelo agente. |
| **Knowledge Sources** _(opcional)_ | `knowledge_sources` | `Optional[List[BaseKnowledgeSource]]` | Fontes de conhecimento disponíveis para o agente. |
| **Use System Prompt** _(opcional)_ | `use_system_prompt` | `Optional[bool]` | Se deve usar o system prompt (suporte para modelo o1). Padrão: True. |
## Criando Agentes
@@ -137,7 +142,8 @@ class LatestAiDevelopmentCrew():
```
<Note>
Os nomes utilizados em seus arquivos YAML (`agents.yaml`) devem ser iguais aos nomes dos métodos no seu código Python.
Os nomes utilizados em seus arquivos YAML (`agents.yaml`) devem ser iguais aos
nomes dos métodos no seu código Python.
</Note>
### Definição Direta em Código
@@ -183,6 +189,7 @@ agent = Agent(
Vamos detalhar algumas combinações de parâmetros-chave para casos de uso comuns:
#### Agente de Pesquisa Básico
```python Code
research_agent = Agent(
role="Analista de Pesquisa",
@@ -194,6 +201,7 @@ research_agent = Agent(
```
#### Agente de Desenvolvimento de Código
```python Code
dev_agent = Agent(
role="Desenvolvedor Python Sênior",
@@ -207,6 +215,7 @@ dev_agent = Agent(
```
#### Agente de Análise de Longa Duração
```python Code
analysis_agent = Agent(
role="Analista de Dados",
@@ -220,6 +229,7 @@ analysis_agent = Agent(
```
#### Agente com Template Personalizado
```python Code
custom_agent = Agent(
role="Atendente de Suporte ao Cliente",
@@ -232,6 +242,7 @@ custom_agent = Agent(
```
#### Agente Ciente de Data, com Raciocínio
```python Code
strategic_agent = Agent(
role="Analista de Mercado",
@@ -246,6 +257,7 @@ strategic_agent = Agent(
```
#### Agente de Raciocínio
```python Code
reasoning_agent = Agent(
role="Planejador Estratégico",
@@ -259,6 +271,7 @@ reasoning_agent = Agent(
```
#### Agente Multimodal
```python Code
multimodal_agent = Agent(
role="Analista de Conteúdo Visual",
@@ -272,52 +285,65 @@ multimodal_agent = Agent(
### 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`: Deve ser True para permitir execução de código
- `code_execution_mode`:
- `"safe"`: Usa Docker (recomendado para produção)
- `"unsafe"`: Execução direta (apenas em ambientes confiáveis)
<Note>
Isso executa uma imagem Docker padrão. Se você deseja configurar a imagem Docker, veja a ferramenta Code Interpreter na seção de ferramentas.
Adicione a ferramenta de interpretação de código como um parâmetro em ferramentas no agente.
Isso executa uma imagem Docker padrão. Se você deseja configurar a imagem
Docker, veja a ferramenta Code Interpreter na seção de ferramentas. Adicione a
ferramenta de interpretação de código como um parâmetro em ferramentas no
agente.
</Note>
#### 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
<Note>
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, assegure-se de definir tanto
`system_template` quanto `prompt_template`. O `response_template` é opcional,
mas recomendado para formatação consistente de saída.
</Note>
<Note>
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.
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.
</Note>
## Ferramentas do Agente
Agentes podem ser equipados com diversas ferramentas para ampliar suas capacidades. O CrewAI suporta ferramentas do:
- [CrewAI Toolkit](https://github.com/joaomdmoura/crewai-tools)
- [LangChain Tools](https://python.langchain.com/docs/integrations/tools)
@@ -356,7 +382,9 @@ analyst = Agent(
```
<Note>
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.
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.
</Note>
## Gerenciamento da Janela de Contexto
@@ -386,6 +414,7 @@ smart_agent = Agent(
```
**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
@@ -407,6 +436,7 @@ strict_agent = Agent(
```
**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
@@ -414,6 +444,7 @@ strict_agent = Agent(
### 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
@@ -432,6 +463,7 @@ document_processor = Agent(
```
#### 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
@@ -454,6 +486,7 @@ precision_agent = Agent(
Ao lidar com conjuntos de dados muito grandes, considere as seguintes estratégias:
#### 1. Use Ferramentas RAG
```python Code
from crewai_tools import RagTool
@@ -471,6 +504,7 @@ rag_agent = Agent(
```
#### 2. Use Fontes de Conhecimento
```python Code
# Use fontes de conhecimento ao invés de prompts grandes
knowledge_agent = Agent(
@@ -494,6 +528,7 @@ knowledge_agent = Agent(
### Solucionando Problemas de Contexto
**Se você receber erros de limite de contexto:**
```python Code
# Solução rápida: Habilite manipulação automática
agent.respect_context_window = True
@@ -507,6 +542,7 @@ agent.tools = [RagTool()]
```
**Se o resumo automático perder informações importantes:**
```python Code
# Desative o resumo automático e use RAG
agent = Agent(
@@ -520,28 +556,34 @@ agent = Agent(
```
<Note>
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!
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!
</Note>
## Considerações e Boas Práticas Importantes
### Segurança e Execução de Código
- Ao usar `allow_code_execution`, seja cauteloso com entradas do usuário e sempre as valide
- Use `code_execution_mode: "safe"` (Docker) em ambientes de produção
- Considere definir limites adequados de `max_execution_time` para evitar loops infinitos
### 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
@@ -549,6 +591,7 @@ O recurso de gerenciamento da janela de contexto funciona automaticamente em seg
- 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:
@@ -556,6 +599,7 @@ O recurso de gerenciamento da janela de contexto funciona automaticamente em seg
- `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.
@@ -563,22 +607,26 @@ O recurso de gerenciamento da janela de contexto funciona automaticamente em seg
- 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

View File

@@ -4,7 +4,14 @@ description: Aprenda a usar o CLI do CrewAI para interagir com o CrewAI.
icon: terminal
mode: "wide"
---
<Warning>A partir da versão 0.140.0, a plataforma CrewAI AOP iniciou um processo de migração de seu provedor de login. Como resultado, o fluxo de autenticação via CLI foi atualizado. Usuários que utlizam o Google para fazer login, ou que criaram conta após 3 de julho de 2025 não poderão fazer login com versões anteriores da biblioteca `crewai`.</Warning>
<Warning>
A partir da versão 0.140.0, a plataforma CrewAI AMP iniciou um processo de
migração de seu provedor de login. Como resultado, o fluxo de autenticação via
CLI foi atualizado. Usuários que utlizam o Google para fazer login, ou que
criaram conta após 3 de julho de 2025 não poderão fazer login com versões
anteriores da biblioteca `crewai`.
</Warning>
## Visão Geral
@@ -40,6 +47,7 @@ crewai create [OPTIONS] TYPE NAME
- `NAME`: Nome do crew ou flow
Exemplo:
```shell Terminal
crewai create crew my_new_crew
crewai create flow my_new_flow
@@ -56,6 +64,7 @@ crewai version [OPTIONS]
- `--tools`: (Opcional) Mostra a versão instalada das ferramentas do CrewAI
Exemplo:
```shell Terminal
crewai version
crewai version --tools
@@ -73,6 +82,7 @@ crewai train [OPTIONS]
- `-f, --filename TEXT`: Caminho para um arquivo customizado para treinamento (padrão: "trained_agents_data.pkl")
Exemplo:
```shell Terminal
crewai train -n 10 -f my_training_data.pkl
```
@@ -104,6 +114,7 @@ crewai replay [OPTIONS]
- `-t, --task_id TEXT`: Reexecuta o crew a partir deste task ID, incluindo todas as tarefas subsequentes
Exemplo:
```shell Terminal
crewai replay -t task_123456
```
@@ -133,6 +144,7 @@ crewai reset-memories [OPTIONS]
- `-a, --all`: Redefine TODAS as memórias
Exemplo:
```shell Terminal
crewai reset-memories --long --short
crewai reset-memories --all
@@ -150,6 +162,7 @@ crewai test [OPTIONS]
- `-m, --model TEXT`: Modelo LLM para executar os testes no Crew (padrão: "gpt-4o-mini")
Exemplo:
```shell Terminal
crewai test -n 5 -m gpt-3.5-turbo
```
@@ -163,12 +176,17 @@ crewai run
```
<Note>
A partir da versão 0.103.0, o comando `crewai run` pode ser usado para executar tanto crews padrão quanto flows. Para flows, ele detecta automaticamente o tipo a partir do pyproject.toml e executa o comando apropriado. Este é agora o modo recomendado de executar tanto crews quanto flows.
A partir da versão 0.103.0, o comando `crewai run` pode ser usado para
executar tanto crews padrão quanto flows. Para flows, ele detecta
automaticamente o tipo a partir do pyproject.toml e executa o comando
apropriado. Este é agora o modo recomendado de executar tanto crews quanto
flows.
</Note>
<Note>
Certifique-se de executar estes comandos a partir do diretório onde seu projeto CrewAI está configurado.
Alguns comandos podem exigir configuração ou ajustes adicionais dentro da estrutura do seu projeto.
Certifique-se de executar estes comandos a partir do diretório onde seu
projeto CrewAI está configurado. Alguns comandos podem exigir configuração ou
ajustes adicionais dentro da estrutura do seu projeto.
</Note>
### 9. Chat
@@ -180,6 +198,7 @@ Depois de receber os resultados, você pode continuar interagindo com o assisten
```shell Terminal
crewai chat
```
<Note>
Garanta que você execute estes comandos a partir do diretório raiz do seu projeto CrewAI.
</Note>
@@ -197,28 +216,30 @@ def crew(self) -> Crew:
chat_llm="gpt-4o", # LLM para orquestração de chat
)
```
</Note>
### 10. Deploy
Implemente o crew ou flow no [CrewAI AOP](https://app.crewai.com).
Implemente o crew ou flow no [CrewAI AMP](https://app.crewai.com).
- **Autenticação**: Você precisa estar autenticado para implementar no CrewAI AOP.
Você pode fazer login ou criar uma conta com:
```shell Terminal
crewai login
```
- **Autenticação**: Você precisa estar autenticado para implementar no CrewAI AMP.
Você pode fazer login ou criar uma conta com:
```shell Terminal
crewai login
```
- **Criar um deployment**: Depois de autenticado, você pode criar um deployment para seu crew ou flow a partir da raiz do seu projeto local.
```shell Terminal
crewai deploy create
```
- Lê a configuração do seu projeto local.
- Solicita a confirmação das variáveis de ambiente (como `OPENAI_API_KEY`, `SERPER_API_KEY`) encontradas localmente. Elas serão armazenadas de forma segura junto ao deployment na plataforma Enterprise. Verifique se suas chaves sensíveis estão corretamente configuradas localmente (por exemplo, em um arquivo `.env`) antes de executar este comando.
```shell Terminal
crewai deploy create
```
- Lê a configuração do seu projeto local.
- Solicita a confirmação das variáveis de ambiente (como `OPENAI_API_KEY`, `SERPER_API_KEY`) encontradas localmente. Elas serão armazenadas de forma segura junto ao deployment na plataforma Enterprise. Verifique se suas chaves sensíveis estão corretamente configuradas localmente (por exemplo, em um arquivo `.env`) antes de executar este comando.
### 11. Gerenciamento de Organização
Gerencie suas organizações no CrewAI AOP.
Gerencie suas organizações no CrewAI AMP.
```shell Terminal
crewai org [COMMAND] [OPTIONS]
@@ -227,65 +248,80 @@ crewai org [COMMAND] [OPTIONS]
#### Comandos:
- `list`: Liste todas as organizações das quais você faz parte
```shell Terminal
crewai org list
```
- `current`: Exibe sua organização ativa atualmente
```shell Terminal
crewai org current
```
- `switch`: Mude para uma organização específica
```shell Terminal
crewai org switch <organization_id>
```
<Note>
Você deve estar autenticado no CrewAI AOP para usar estes comandos de gerenciamento de organização.
Você deve estar autenticado no CrewAI AMP para usar estes comandos de
gerenciamento de organização.
</Note>
- **Criar um deployment** (continuação):
- Vincula o deployment ao respectivo repositório remoto do GitHub (normalmente detectado automaticamente).
- **Implantar o Crew**: Depois de autenticado, você pode implantar seu crew ou flow no CrewAI AOP.
```shell Terminal
crewai deploy push
```
- Inicia o processo de deployment na plataforma CrewAI AOP.
- Após a iniciação bem-sucedida, será exibida a mensagem Deployment created successfully! juntamente com o Nome do Deployment e um Deployment ID (UUID) único.
- Vincula o deployment ao respectivo repositório remoto do GitHub (normalmente detectado automaticamente).
- **Implantar o Crew**: Depois de autenticado, você pode implantar seu crew ou flow no CrewAI AMP.
```shell Terminal
crewai deploy push
```
- Inicia o processo de deployment na plataforma CrewAI AMP.
- Após a iniciação bem-sucedida, será exibida a mensagem Deployment created successfully! juntamente com o Nome do Deployment e um Deployment ID (UUID) único.
- **Status do Deployment**: Você pode verificar o status do seu deployment com:
```shell Terminal
crewai deploy status
```
Isso retorna o status mais recente do último deployment iniciado (por exemplo, `Building Images for Crew`, `Deploy Enqueued`, `Online`).
```shell Terminal
crewai deploy status
```
Isso retorna o status mais recente do último deployment iniciado (por exemplo, `Building Images for Crew`, `Deploy Enqueued`, `Online`).
- **Logs do Deployment**: Você pode checar os logs do seu deployment com:
```shell Terminal
crewai deploy logs
```
Isso faz o streaming dos logs do deployment para seu terminal.
```shell Terminal
crewai deploy logs
```
Isso faz o streaming dos logs do deployment para seu terminal.
- **Listar deployments**: Você pode listar todos os seus deployments com:
```shell Terminal
crewai deploy list
```
Isto lista todos os seus deployments.
```shell Terminal
crewai deploy list
```
Isto lista todos os seus deployments.
- **Deletar um deployment**: Você pode deletar um deployment com:
```shell Terminal
crewai deploy remove
```
Isto exclui o deployment da plataforma CrewAI AOP.
```shell Terminal
crewai deploy remove
```
Isto exclui o deployment da plataforma CrewAI AMP.
- **Comando de Ajuda**: Você pode obter ajuda sobre o CLI com:
```shell Terminal
crewai deploy --help
```
Isto exibe a mensagem de ajuda para o CLI CrewAI Deploy.
```shell Terminal
crewai deploy --help
```
Isto exibe a mensagem de ajuda para o CLI CrewAI Deploy.
Assista ao vídeo tutorial para uma demonstração passo-a-passo de implantação do seu crew no [CrewAI AOP](http://app.crewai.com) usando o CLI.
Assista ao vídeo tutorial para uma demonstração passo-a-passo de implantação do seu crew no [CrewAI AMP](http://app.crewai.com) usando o CLI.
<iframe
className="w-full aspect-video rounded-xl"
@@ -298,7 +334,7 @@ Assista ao vídeo tutorial para uma demonstração passo-a-passo de implantaçã
### 11. Chaves de API
Ao executar o comando ```crewai create crew```, o CLI primeiro mostrará os 5 provedores de LLM mais comuns e pedirá para você selecionar um.
Ao executar o comando `crewai create crew`, o CLI primeiro mostrará os 5 provedores de LLM mais comuns e pedirá para você selecionar um.
Após selecionar um provedor de LLM, será solicitado que você informe as chaves de API.
@@ -306,11 +342,11 @@ Após selecionar um provedor de LLM, será solicitado que você informe as chave
Inicialmente, o CLI solicitará as chaves de API para os seguintes serviços:
* OpenAI
* Groq
* Anthropic
* Google Gemini
* SambaNova
- OpenAI
- Groq
- Anthropic
- Google Gemini
- SambaNova
Ao selecionar um provedor, o CLI solicitará que você insira sua chave de API.
@@ -322,7 +358,7 @@ Ao escolher um provedor, o CLI solicitará que você informe o nome da chave e a
Veja o seguinte link para o nome de chave de cada provedor:
* [LiteLLM Providers](https://docs.litellm.ai/docs/providers)
- [LiteLLM Providers](https://docs.litellm.ai/docs/providers)
### 12. Gerenciamento de Configuração
@@ -335,23 +371,26 @@ crewai config [COMANDO] [OPÇÕES]
#### Comandos:
- `list`: Exibir todos os parâmetros de configuração do CLI
```shell Terminal
crewai config list
```
- `set`: Definir um parâmetro de configuração do CLI
```shell Terminal
crewai config set <chave> <valor>
```
- `reset`: Redefinir todos os parâmetros de configuração do CLI para valores padrão
```shell Terminal
crewai config reset
```
#### Parâmetros de Configuração Disponíveis
- `enterprise_base_url`: URL base da instância CrewAI AOP
- `enterprise_base_url`: URL base da instância CrewAI AMP
- `oauth2_provider`: Provedor OAuth2 usado para autenticação (ex: workos, okta, auth0)
- `oauth2_audience`: Valor de audiência OAuth2, tipicamente usado para identificar a API ou recurso de destino
- `oauth2_client_id`: ID do cliente OAuth2 emitido pelo provedor, usado durante solicitações de autenticação
@@ -360,42 +399,51 @@ crewai config reset
#### Exemplos
Exibir configuração atual:
```shell Terminal
crewai config list
```
Exemplo de saída:
| Parâmetro | Valor | Descrição |
| :------------------- | :---------------------- | :------------------------------------------------------------ |
| enterprise_base_url | https://app.crewai.com | URL base da instância CrewAI AOP |
| org_name | Not set | Nome da organização atualmente ativa |
| org_uuid | Not set | UUID da organização atualmente ativa |
| oauth2_provider | workos | Provedor OAuth2 (ex.: workos, okta, auth0) |
| oauth2_audience | client_01YYY | Audience usada para identificar a API/recurso de destino |
| oauth2_client_id | client_01XXX | Client ID OAuth2 emitido pelo provedor (usado na autenticação) |
| oauth2_domain | login.crewai.com | Domínio do provedor OAuth2 (ex.: your-org.auth0.com) |
| Parâmetro | Valor | Descrição |
| :------------------ | :--------------------- | :------------------------------------------------------------- |
| enterprise_base_url | https://app.crewai.com | URL base da instância CrewAI AMP |
| org_name | Not set | Nome da organização atualmente ativa |
| org_uuid | Not set | UUID da organização atualmente ativa |
| oauth2_provider | workos | Provedor OAuth2 (ex.: workos, okta, auth0) |
| oauth2_audience | client_01YYY | Audience usada para identificar a API/recurso de destino |
| oauth2_client_id | client_01XXX | Client ID OAuth2 emitido pelo provedor (usado na autenticação) |
| oauth2_domain | login.crewai.com | Domínio do provedor OAuth2 (ex.: your-org.auth0.com) |
Definir a URL base do enterprise:
```shell Terminal
crewai config set enterprise_base_url https://minha-empresa.crewai.com
```
Definir provedor OAuth2:
```shell Terminal
crewai config set oauth2_provider auth0
```
Definir domínio OAuth2:
```shell Terminal
crewai config set oauth2_domain minha-empresa.auth0.com
```
Redefinir todas as configurações para padrões:
```shell Terminal
crewai config reset
```
<Note>
As configurações são armazenadas em `~/.config/crewai/settings.json`. Algumas configurações como nome da organização e UUID são somente leitura e gerenciadas através de comandos de autenticação e organização. Configurações relacionadas ao repositório de ferramentas são ocultas e não podem ser definidas diretamente pelo usuário.
As configurações são armazenadas em `~/.config/crewai/settings.json`. Algumas
configurações como nome da organização e UUID são somente leitura e
gerenciadas através de comandos de autenticação e organização. Configurações
relacionadas ao repositório de ferramentas são ocultas e não podem ser
definidas diretamente pelo usuário.
</Note>

View File

@@ -1,6 +1,6 @@
---
title: 'Listeners de Evento'
description: 'Acesse eventos do CrewAI para criar integrações e monitoramento personalizados'
title: "Listeners de Evento"
description: "Acesse eventos do CrewAI para criar integrações e monitoramento personalizados"
icon: spinner
mode: "wide"
---
@@ -20,11 +20,12 @@ O CrewAI utiliza uma arquitetura de event bus para emitir eventos ao longo do ci
Quando ações específicas ocorrem no CrewAI (como a inicialização de um Crew, um Agent concluindo uma tarefa ou o uso de uma ferramenta), o sistema emite os eventos correspondentes. Você pode registrar handlers para esses eventos para executar código personalizado quando eles acontecerem.
<Note type="info" title="Aprimoramento Enterprise: Prompt Tracing">
O CrewAI AOP fornece o recurso Prompt Tracing, que aproveita o sistema de eventos para rastrear, armazenar e visualizar todos os prompts, respostas e metadados associados. Isso proporciona poderosas capacidades de depuração e transparência nas operações dos seus agentes.
O CrewAI AMP fornece o recurso Prompt Tracing, que aproveita o sistema de eventos para rastrear, armazenar e visualizar todos os prompts, respostas e metadados associados. Isso proporciona poderosas capacidades de depuração e transparência nas operações dos seus agentes.
![Prompt Tracing Dashboard](/images/enterprise/traces-overview.png)
Com o Prompt Tracing você pode:
- Visualizar o histórico completo de todos os prompts enviados ao seu LLM
- Monitorar o uso de tokens e custos
- Depurar falhas de raciocínio dos agentes
@@ -263,7 +264,6 @@ A estrutura do objeto de evento depende do tipo do evento, mas todos herdam de `
Campos adicionais variam pelo tipo de evento. Por exemplo, `CrewKickoffCompletedEvent` inclui os campos `crew_name` e `output`.
## Uso Avançado: Handlers Escopados
Para lidar temporariamente com eventos (útil para testes ou operações específicas), você pode usar o context manager `scoped_handlers`:

View File

@@ -14,11 +14,12 @@ As tarefas fornecem todos os detalhes necessários para sua execução, como des
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.
<Note type="info" title="Aprimoramento Empresarial: Construtor Visual de Tarefas">
O CrewAI AOP inclui um Construtor Visual de Tarefas no Crew Studio, que simplifica a criação e o encadeamento de tarefas complexas. Projete seus fluxos de tarefas visualmente e teste-os em tempo real sem necessidade de escrever código.
O CrewAI AMP inclui um Construtor Visual de Tarefas no Crew Studio, que simplifica a criação e o encadeamento de tarefas complexas. Projete seus fluxos de tarefas visualmente e teste-os em tempo real sem necessidade de escrever código.
![Task Builder Screenshot](/images/enterprise/crew-studio-interface.png)
O Construtor Visual de Tarefas permite:
- Criação de tarefas via arrastar-e-soltar
- Visualização de dependências e fluxo de tarefas
- Testes e validações em tempo real
@@ -28,10 +29,12 @@ O Construtor Visual de Tarefas permite:
### Fluxo de Execução de Tarefas
As tarefas podem ser executadas de duas maneiras:
- **Sequencial**: As tarefas são executadas na ordem em que são definidas
- **Hierárquica**: As tarefas são atribuídas aos agentes com base em seus papéis e especialidades
O fluxo de execução é definido ao criar o crew:
```python Code
crew = Crew(
agents=[agent1, agent2],
@@ -42,25 +45,25 @@ crew = Crew(
## Atributos da Tarefa
| 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. |
| **Max Tentativas Guardrail** _(opcional)_ | `guardrail_max_retries` | `Optional[int]` | Número máximo de tentativas quando a validação do guardrail falha. Padrão é 3. |
| 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. |
| **Max Tentativas Guardrail** _(opcional)_ | `guardrail_max_retries` | `Optional[int]` | Número máximo de tentativas quando a validação do guardrail falha. Padrão é 3. |
## Criando Tarefas
@@ -81,7 +84,7 @@ crew.kickoff(inputs={'topic': 'AI Agents'})
Veja um exemplo de configuração de tarefas usando YAML:
```yaml tasks.yaml
````yaml tasks.yaml
research_task:
description: >
Realize uma pesquisa detalhada sobre {topic}
@@ -101,7 +104,7 @@ reporting_task:
agent: reporting_analyst
markdown: true
output_file: report.md
```
````
Para usar essa configuração YAML em seu código, crie uma classe crew que herda de `CrewBase`:
@@ -159,7 +162,8 @@ class LatestAiDevelopmentCrew():
```
<Note>
Os nomes usados em seus arquivos YAML (`agents.yaml` e `tasks.yaml`) devem corresponder aos nomes dos métodos no seu código Python.
Os nomes usados em seus arquivos YAML (`agents.yaml` e `tasks.yaml`) devem
corresponder aos nomes dos métodos no seu código Python.
</Note>
### Definição Direta no Código (Alternativa)
@@ -196,7 +200,8 @@ reporting_task = Task(
```
<Tip>
Especifique diretamente um `agent` para a tarefa ou permita que o processo `hierarchical` do CrewAI decida com base em papéis, disponibilidade, etc.
Especifique diretamente um `agent` para a tarefa ou permita que o processo
`hierarchical` do CrewAI decida com base em papéis, disponibilidade, etc.
</Tip>
## Saída da Tarefa
@@ -209,22 +214,22 @@ Por padrão, o `TaskOutput` incluirá apenas a saída `raw`. Um `TaskOutput` só
### Atributos do Task Output
| 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. |
| 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étodos e Propriedades da Tarefa
| 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. |
| 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. |
### Acessando Saídas das Tarefas
@@ -280,12 +285,13 @@ formatted_task = Task(
```
Quando `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ódigo
- ` `linguagem ``` para blocos de código
### Configuração YAML com Markdown
@@ -296,7 +302,7 @@ analysis_task:
expected_output: >
Uma análise completa com gráficos e descobertas-chave
agent: analyst
markdown: true # Habilita formatação em markdown
markdown: true # Habilita formatação em markdown
output_file: analysis.md
```
@@ -308,7 +314,9 @@ analysis_task:
- **Compatibilidade Multi-plataforma**: Markdown é universalmente suportado
<Note>
As instruções de formatação em markdown são adicionadas automaticamente ao prompt da tarefa quando `markdown=True`, então não é necessário detalhar os requisitos de formatação na descrição da tarefa.
As instruções de formatação em markdown são adicionadas automaticamente ao
prompt da tarefa quando `markdown=True`, então não é necessário detalhar os
requisitos de formatação na descrição da tarefa.
</Note>
## Dependências de Tarefas e Contexto
@@ -368,6 +376,7 @@ blog_task = Task(
### Requisitos da Função Guardrail
1. **Assinatura da Função**:
- Deve aceitar exatamente um parâmetro (a saída da tarefa)
- Deve retornar uma tupla `(bool, Any)`
- Type hints são recomendados, mas opcionais
@@ -376,11 +385,10 @@ blog_task = Task(
- Em caso de sucesso: retorna uma tupla `(True, resultado_validado)`
- Em caso de falha: retorna uma tupla `(False, "mensagem de erro explicando a falha")`
### Melhores Práticas de Tratamento de Erros
1. **Respostas de Erro Estruturadas**:
```python Code
from crewai import TaskOutput, LLMGuardrail
@@ -396,11 +404,13 @@ def validate_with_context(result: TaskOutput) -> Tuple[bool, Any]:
```
2. **Categorias de Erro**:
- Use códigos de erro específicos
- Inclua contexto relevante
- Forneça feedback acionável
3. **Cadeia de Validação**:
```python Code
from typing import Any, Dict, List, Tuple, Union
from crewai import TaskOutput
@@ -427,6 +437,7 @@ def complex_validation(result: TaskOutput) -> Tuple[bool, Any]:
### Tratamento dos Resultados do Guardrail
Quando um guardrail retorna `(False, erro)`:
1. O erro é enviado de volta para o agente
2. O agente tenta corrigir o problema
3. O processo se repete até:
@@ -434,6 +445,7 @@ Quando um guardrail retorna `(False, erro)`:
- O número máximo de tentativas ser atingido
Exemplo com manipulação de tentativas:
```python Code
from typing import Optional, Tuple, Union
from crewai import TaskOutput, Task
@@ -459,10 +471,12 @@ task = Task(
## Obtendo Saídas Estruturadas e Consistentes das Tarefas
<Note>
É importante também observar que a saída da última tarefa de um crew se torna a saída final do próprio crew.
É importante também observar que a saída da última tarefa de um crew se torna
a saída final do próprio crew.
</Note>
### Usando `output_pydantic`
A propriedade `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:
@@ -532,18 +546,22 @@ print("Acessando propriedades - Opção 5")
print("Blog:", result)
```
Neste exemplo:
* Um modelo Pydantic Blog é definido com os campos title e content.
* A tarefa task1 utiliza a propriedade output_pydantic para especificar que sua saída deve seguir o modelo Blog.
* Após executar o crew, você pode acessar a saída estruturada de várias formas, como mostrado.
- Um modelo Pydantic Blog é definido com os campos title e content.
- A tarefa task1 utiliza a propriedade output_pydantic para especificar que sua saída deve seguir o modelo Blog.
- Após executar o crew, você pode acessar a saída estruturada de várias formas, como mostrado.
#### Explicação sobre o acesso à saída
1. Indexação estilo dicionário: Acesse os campos diretamente usando result["nome_do_campo"]. Isso funciona porque a classe CrewOutput implementa o método __getitem__.
1. Indexação estilo dicionário: Acesse os campos diretamente usando result["nome_do_campo"]. Isso funciona porque a classe CrewOutput implementa o método **getitem**.
2. Diretamente do modelo Pydantic: Acesse os atributos diretamente do objeto result.pydantic.
3. Usando o método to_dict(): Converta a saída para um dicionário e acesse os campos.
4. Imprimindo o objeto inteiro: Simplesmente imprima o objeto result para ver a saída estruturada.
### Usando `output_json`
A propriedade `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`:
@@ -603,14 +621,15 @@ print("Blog:", result)
```
Neste exemplo:
* Um modelo Pydantic Blog é definido com os campos title e content, usado para especificar a estrutura do JSON de saída.
* A tarefa task1 utiliza a propriedade output_json para indicar que espera uma saída JSON que segue o modelo Blog.
* Após executar o crew, você pode acessar a saída estruturada em JSON conforme demonstrado.
- Um modelo Pydantic Blog é definido com os campos title e content, usado para especificar a estrutura do JSON de saída.
- A tarefa task1 utiliza a propriedade output_json para indicar que espera uma saída JSON que segue o modelo Blog.
- Após executar o crew, você pode acessar a saída estruturada em JSON conforme demonstrado.
#### Explicação sobre o acesso à saída
1. Acessando propriedades via indexação de dicionário: Você pode acessar os campos diretamente usando result["nome_do_campo"]. Isso é possível pois a classe CrewOutput implementa o método __getitem__, permitindo tratar a saída como um dicionário. Nesse caso, estamos acessando title e content do resultado.
2. Imprimindo o objeto Blog inteiro: Ao imprimir result, você obterá a representação em string do objeto CrewOutput. Como o método __str__ é implementado para retornar a saída em JSON, isso exibirá toda a saída como uma string formatada representando o objeto Blog.
1. Acessando propriedades via indexação de dicionário: Você pode acessar os campos diretamente usando result["nome_do_campo"]. Isso é possível pois a classe CrewOutput implementa o método **getitem**, permitindo tratar a saída como um dicionário. Nesse caso, estamos acessando title e content do resultado.
2. Imprimindo o objeto Blog inteiro: Ao imprimir result, você obterá a representação em string do objeto CrewOutput. Como o método **str** é implementado para retornar a saída em JSON, isso exibirá toda a saída como uma string formatada representando o objeto Blog.
---
@@ -827,8 +846,6 @@ task = Task(
)
```
```python Code
@CrewBase
class InternalCrew:
@@ -872,6 +889,7 @@ task = Task(
### Casos Comuns de Uso
#### Validação de Formato de Dados
```python Code
def validate_email_format(result: str) -> Tuple[bool, Union[str, str]]:
"""Garante que a saída contenha um e-mail válido."""
@@ -883,6 +901,7 @@ def validate_email_format(result: str) -> Tuple[bool, Union[str, str]]:
```
#### Filtragem de Conteúdo
```python Code
def filter_sensitive_info(result: str) -> Tuple[bool, Union[str, str]]:
"""Remove ou valida informações sensíveis."""
@@ -894,6 +913,7 @@ def filter_sensitive_info(result: str) -> Tuple[bool, Union[str, str]]:
```
#### Transformação de Dados
```python Code
def normalize_phone_number(result: str) -> Tuple[bool, Union[str, str]]:
"""Garante que números de telefone estejam em formato consistente."""
@@ -908,6 +928,7 @@ def normalize_phone_number(result: str) -> Tuple[bool, Union[str, str]]:
### Recursos Avançados
#### Encadeando Múltiplas Validações
```python Code
def chain_validations(*validators):
"""Encadeia múltiplos validadores."""
@@ -932,6 +953,7 @@ task = Task(
```
#### Lógica Customizada de Retentativas
```python Code
task = Task(
description="Gerar dados",
@@ -987,7 +1009,7 @@ analysis_task:
Um relatório financeiro abrangente com insights trimestrais
agent: financial_analyst
output_file: reports/quarterly/q4_2024_analysis.pdf
create_directory: true # Criar automaticamente o diretório 'reports/quarterly/'
create_directory: true # Criar automaticamente o diretório 'reports/quarterly/'
audit_task:
description: >
@@ -996,18 +1018,20 @@ audit_task:
Um relatório de auditoria de conformidade
agent: auditor
output_file: audit/compliance_report.md
create_directory: false # O diretório já deve existir
create_directory: false # O diretório já deve existir
```
### Casos de Uso
**Criação Automática de Diretórios (`create_directory=True`):**
- Ambientes de desenvolvimento e prototipagem
- Geração dinâmica de relatórios com pastas baseadas em datas
- Fluxos de trabalho automatizados onde a estrutura de diretórios pode variar
- Aplicações multi-tenant com pastas específicas do usuário
**Gerenciamento Manual de Diretórios (`create_directory=False`):**
- Ambientes de produção com controles rígidos do sistema de arquivos
- Aplicações sensíveis à segurança onde diretórios devem ser pré-configurados
- Sistemas com requisitos específicos de permissão

View File

@@ -17,9 +17,10 @@ Isso inclui ferramentas do [CrewAI Toolkit](https://github.com/joaomdmoura/crewa
permitindo desde buscas simples até interações complexas e trabalho em equipe eficiente entre agentes.
<Note type="info" title="Aprimoramento para Empresas: Repositório de Ferramentas">
O CrewAI AOP oferece um Repositório de Ferramentas abrangente, com integrações pré-construídas para sistemas empresariais e APIs comuns. Implemente agentes com ferramentas corporativas em minutos em vez de dias.
O CrewAI AMP oferece um Repositório de Ferramentas abrangente, com integrações pré-construídas para sistemas empresariais e APIs comuns. Implemente agentes com ferramentas corporativas em minutos em vez de dias.
O Repositório de Ferramentas Empresariais inclui:
- Conectores pré-construídos para sistemas empresariais populares
- Interface para criação de ferramentas personalizadas
- Controle de versão e funcionalidades de compartilhamento
@@ -116,44 +117,45 @@ crew.kickoff()
Aqui está uma lista das ferramentas disponíveis e suas descrições:
| Ferramenta | Descrição |
| :------------------------------- | :------------------------------------------------------------------------------------------- |
| **ApifyActorsTool** | Ferramenta que integra Apify Actors aos seus fluxos de trabalho para web scraping e automação.|
| **BrowserbaseLoadTool** | Ferramenta para interação e extração de dados de navegadores web. |
| **CodeDocsSearchTool** | Uma ferramenta RAG otimizada para busca em documentações de código e documentos técnicos. |
| **CodeInterpreterTool** | Ferramenta para interpretar código Python. |
| **ComposioTool** | Permite o uso de ferramentas Composio. |
| **CSVSearchTool** | Ferramenta RAG projetada para busca em arquivos CSV, ideal para dados estruturados. |
| **DALL-E Tool** | Ferramenta para gerar imagens utilizando a API do DALL-E. |
| **DirectorySearchTool** | Ferramenta RAG para busca em diretórios, útil para navegação em sistemas de arquivos. |
| **DOCXSearchTool** | Ferramenta RAG voltada para busca em documentos DOCX, ideal para processar arquivos Word. |
| **DirectoryReadTool** | Facilita a leitura e processamento de estruturas de diretórios e seus conteúdos. |
| **EXASearchTool** | Ferramenta projetada para buscas exaustivas em diversas fontes de dados. |
| **FileReadTool** | Permite a leitura e extração de dados de arquivos, suportando diversos formatos. |
| **FirecrawlSearchTool** | Ferramenta para buscar páginas web usando Firecrawl e retornar os resultados. |
| **FirecrawlCrawlWebsiteTool** | Ferramenta para rastrear páginas web utilizando o Firecrawl. |
| **FirecrawlScrapeWebsiteTool** | Ferramenta para extrair o conteúdo de URLs usando Firecrawl. |
| **GithubSearchTool** | Ferramenta RAG para buscar em repositórios GitHub, útil para pesquisa de código e documentação.|
| **SerperDevTool** | Ferramenta especializada para finalidades de desenvolvimento, com funcionalidades em evolução. |
| **TXTSearchTool** | Ferramenta RAG voltada para busca em arquivos de texto (.txt), adaptada para dados não estruturados. |
| **JSONSearchTool** | Ferramenta RAG para busca em arquivos JSON, voltada ao manuseio de dados estruturados. |
| **LlamaIndexTool** | Permite o uso das ferramentas LlamaIndex. |
| **MDXSearchTool** | Ferramenta RAG para busca em arquivos Markdown (MDX), útil para documentação. |
| **PDFSearchTool** | Ferramenta RAG para busca em documentos PDF, ideal para processar documentos digitalizados. |
| **PGSearchTool** | Ferramenta RAG otimizada para busca em bancos de dados PostgreSQL, adequada para consultas. |
| **Vision Tool** | Ferramenta para gerar imagens utilizando a API do DALL-E. |
| **RagTool** | Ferramenta RAG de uso geral, capaz de lidar com diferentes fontes e tipos de dados. |
| **ScrapeElementFromWebsiteTool** | Permite extrair elementos específicos de sites, útil para extração de dados direcionada. |
| **ScrapeWebsiteTool** | Facilita o scraping de sites inteiros, ideal para coleta abrangente de dados. |
| **WebsiteSearchTool** | Ferramenta RAG para busca em conteúdos de sites, otimizada para extração de dados web. |
| **XMLSearchTool** | Ferramenta RAG para busca em arquivos XML, adequada para formatos de dados estruturados. |
| **YoutubeChannelSearchTool** | Ferramenta RAG para busca em canais do YouTube, útil para análise de conteúdo em vídeo. |
| **YoutubeVideoSearchTool** | Ferramenta RAG para busca em vídeos do YouTube, ideal para extração de dados de vídeo. |
| Ferramenta | Descrição |
| :------------------------------- | :--------------------------------------------------------------------------------------------------- |
| **ApifyActorsTool** | Ferramenta que integra Apify Actors aos seus fluxos de trabalho para web scraping e automação. |
| **BrowserbaseLoadTool** | Ferramenta para interação e extração de dados de navegadores web. |
| **CodeDocsSearchTool** | Uma ferramenta RAG otimizada para busca em documentações de código e documentos técnicos. |
| **CodeInterpreterTool** | Ferramenta para interpretar código Python. |
| **ComposioTool** | Permite o uso de ferramentas Composio. |
| **CSVSearchTool** | Ferramenta RAG projetada para busca em arquivos CSV, ideal para dados estruturados. |
| **DALL-E Tool** | Ferramenta para gerar imagens utilizando a API do DALL-E. |
| **DirectorySearchTool** | Ferramenta RAG para busca em diretórios, útil para navegação em sistemas de arquivos. |
| **DOCXSearchTool** | Ferramenta RAG voltada para busca em documentos DOCX, ideal para processar arquivos Word. |
| **DirectoryReadTool** | Facilita a leitura e processamento de estruturas de diretórios e seus conteúdos. |
| **EXASearchTool** | Ferramenta projetada para buscas exaustivas em diversas fontes de dados. |
| **FileReadTool** | Permite a leitura e extração de dados de arquivos, suportando diversos formatos. |
| **FirecrawlSearchTool** | Ferramenta para buscar páginas web usando Firecrawl e retornar os resultados. |
| **FirecrawlCrawlWebsiteTool** | Ferramenta para rastrear páginas web utilizando o Firecrawl. |
| **FirecrawlScrapeWebsiteTool** | Ferramenta para extrair o conteúdo de URLs usando Firecrawl. |
| **GithubSearchTool** | Ferramenta RAG para buscar em repositórios GitHub, útil para pesquisa de código e documentação. |
| **SerperDevTool** | Ferramenta especializada para finalidades de desenvolvimento, com funcionalidades em evolução. |
| **TXTSearchTool** | Ferramenta RAG voltada para busca em arquivos de texto (.txt), adaptada para dados não estruturados. |
| **JSONSearchTool** | Ferramenta RAG para busca em arquivos JSON, voltada ao manuseio de dados estruturados. |
| **LlamaIndexTool** | Permite o uso das ferramentas LlamaIndex. |
| **MDXSearchTool** | Ferramenta RAG para busca em arquivos Markdown (MDX), útil para documentação. |
| **PDFSearchTool** | Ferramenta RAG para busca em documentos PDF, ideal para processar documentos digitalizados. |
| **PGSearchTool** | Ferramenta RAG otimizada para busca em bancos de dados PostgreSQL, adequada para consultas. |
| **Vision Tool** | Ferramenta para gerar imagens utilizando a API do DALL-E. |
| **RagTool** | Ferramenta RAG de uso geral, capaz de lidar com diferentes fontes e tipos de dados. |
| **ScrapeElementFromWebsiteTool** | Permite extrair elementos específicos de sites, útil para extração de dados direcionada. |
| **ScrapeWebsiteTool** | Facilita o scraping de sites inteiros, ideal para coleta abrangente de dados. |
| **WebsiteSearchTool** | Ferramenta RAG para busca em conteúdos de sites, otimizada para extração de dados web. |
| **XMLSearchTool** | Ferramenta RAG para busca em arquivos XML, adequada para formatos de dados estruturados. |
| **YoutubeChannelSearchTool** | Ferramenta RAG para busca em canais do YouTube, útil para análise de conteúdo em vídeo. |
| **YoutubeVideoSearchTool** | Ferramenta RAG para busca em vídeos do YouTube, ideal para extração de dados de vídeo. |
## Criando suas próprias Ferramentas
<Tip>
Desenvolvedores podem criar `ferramentas personalizadas` adaptadas para as necessidades de seus agentes ou utilizar opções pré-construídas.
Desenvolvedores podem criar `ferramentas personalizadas` adaptadas para as
necessidades de seus agentes ou utilizar opções pré-construídas.
</Tip>
Existem duas formas principais de criar uma ferramenta CrewAI:
@@ -248,8 +250,10 @@ def my_tool(question: str) -> str:
### Mecanismo de Cache Personalizado
<Tip>
As ferramentas podem implementar opcionalmente uma `cache_function` para ajuste fino do comportamento de cache.
Esta função determina quando armazenar resultados em cache com base em condições específicas, oferecendo controle granular sobre a lógica de cache.
As ferramentas podem implementar opcionalmente uma `cache_function` para
ajuste fino do comportamento de cache. Esta função determina quando armazenar
resultados em cache com base em condições específicas, oferecendo controle
granular sobre a lógica de cache.
</Tip>
```python Code