Preparar para Implantação
Entendendo Automações
Seção intitulada “Entendendo Automações”No CrewAI AMP, automações é o termo geral para projetos de IA Agêntica implantáveis. Uma automação pode ser:
- Um Crew: Uma equipe independente de agentes de IA trabalhando juntos em tarefas
- Um Flow: Um workflow orquestrado que pode combinar múltiplos crews, chamadas diretas de LLM e lógica procedural
Entender qual tipo você está implantando é essencial porque eles têm estruturas de projeto e pontos de entrada diferentes.
Crews vs Flows: Principais Diferenças
Seção intitulada “Crews vs Flows: Principais Diferenças”Projetos Crew
Equipes independentes de agentes de IA. Novas crews são JSON-first com crew.jsonc e agents/; crews clássicas ainda podem usar crew.py.
Projetos Flow
Workflows orquestrados com crews embutidos em uma pasta crews/. Ideal para processos complexos de múltiplas etapas.
| Aspecto | Crew | Flow |
|---|---|---|
| Estrutura do projeto | Raiz do projeto com crew.jsonc e agents/ | src/project_name/ com pasta crews/ |
| Localização da lógica principal | crew.jsonc (clássico: src/project_name/crew.py) | src/project_name/main.py (classe Flow) |
| Função de ponto de entrada | Carregada a partir de crew.jsonc (clássico: run() em main.py) | kickoff() em main.py |
| Tipo no pyproject.toml | type = "crew" | type = "flow" |
| Comando CLI de criação | crewai create crew name | crewai create flow name |
| Localização da configuração | crew.jsonc, agents/, tools/ opcional | src/project_name/crews/crew_name/config/ ou pastas de crew JSON embutidas |
| Pode conter outros crews | Não | Sim (na pasta crews/) |
Referência de Estrutura de Projeto
Seção intitulada “Referência de Estrutura de Projeto”Estrutura de Projeto Crew
Seção intitulada “Estrutura de Projeto Crew”Quando você executa crewai create crew my_crew, recebe a estrutura JSON-first:
my_crew/├── .gitignore├── pyproject.toml # Deve ter type = "crew"├── README.md├── .env├── uv.lock # OBRIGATÓRIO para implantação├── crew.jsonc # Configurações, tarefas, processo e inputs├── agents/│ └── researcher.jsonc # Definições de agentes├── tools/ # Ferramentas custom:<name> opcionais├── knowledge/└── skills/Estrutura de Projeto Flow
Seção intitulada “Estrutura de Projeto Flow”Quando você executa crewai create flow my_flow, você obtém esta estrutura:
my_flow/├── .gitignore├── pyproject.toml # Deve ter type = "flow"├── README.md├── .env├── uv.lock # OBRIGATÓRIO para implantação└── src/ └── my_flow/ ├── __init__.py ├── main.py # Ponto de entrada com função kickoff() + classe Flow ├── crews/ # Pasta de crews embutidos │ └── poem_crew/ │ ├── __init__.py │ ├── poem_crew.py # Crew com decorador @CrewBase │ └── config/ │ ├── agents.yaml │ └── tasks.yaml └── tools/ ├── __init__.py └── custom_tool.pyChecklist Pré-Implantação
Seção intitulada “Checklist Pré-Implantação”Use este checklist para verificar se seu projeto está pronto para implantação.
1. Verificar Configuração do pyproject.toml
Seção intitulada “1. Verificar Configuração do pyproject.toml”Seu pyproject.toml deve incluir a seção [tool.crewai] correta:
[tool.crewai]type = "crew"[tool.crewai]type = "flow"2. Garantir que o Arquivo uv.lock Existe
Seção intitulada “2. Garantir que o Arquivo uv.lock Existe”CrewAI usa uv para gerenciamento de dependências. O arquivo uv.lock garante builds reproduzíveis e é obrigatório para implantação.
# Gerar ou atualizar o arquivo lockuv lock
# Verificar se existels -la uv.lockSe o arquivo não existir, execute uv lock e faça commit no seu repositório:
uv lockgit add uv.lockgit commit -m "Add uv.lock for deployment"git push3. Validar a Definição da Crew
Seção intitulada “3. Validar a Definição da Crew”Crews JSON-first precisam ter crew.jsonc ou crew.json na raiz do projeto.
O array agents deve apontar para arquivos em agents/, e cada task deve referenciar
um nome de agent válido.
{ "name": "Research Crew", "agents": ["researcher"], "tasks": [ { "name": "research_task", "description": "Research {topic}.", "expected_output": "A concise report.", "agent": "researcher" } ], "inputs": { "topic": "AI Agents" }}Ferramentas customizadas são referenciadas como "custom:<name>" e devem existir em
tools/<name>.py com uma subclasse de BaseTool.
Crews clássicas e crews Python embutidas em Flows devem usar o decorador @CrewBase.
from crewai import Agent, Crew, Process, Taskfrom crewai.project import CrewBase, agent, crew, taskfrom crewai.agents.agent_builder.base_agent import BaseAgentfrom typing import List
@CrewBaseclass MyCrew(): """Descrição do meu crew"""
agents: List[BaseAgent] tasks: List[Task]
@agent def my_agent(self) -> Agent: return Agent( config=self.agents_config['my_agent'], # type: ignore[index] verbose=True )
@task def my_task(self) -> Task: return Task( config=self.tasks_config['my_task'] # type: ignore[index] )
@crew def crew(self) -> Crew: return Crew( agents=self.agents, tasks=self.tasks, process=Process.sequential, verbose=True, )4. Verificar Pontos de Entrada do Projeto
Seção intitulada “4. Verificar Pontos de Entrada do Projeto”Crews JSON-first independentes não precisam de um src/project_name/main.py escrito manualmente;
crewai run e o empacotamento de implantação carregam crew.jsonc diretamente. Crews clássicas e Flows usam pontos de entrada Python:
Execute localmente a partir da raiz do projeto:
crewai runO ponto de entrada usa uma função run():
from my_crew.crew import MyCrew
def run(): """Executa o crew.""" inputs = {'topic': 'AI in Healthcare'} result = MyCrew().crew().kickoff(inputs=inputs) return result
if __name__ == "__main__": run()O ponto de entrada usa uma função kickoff() com uma classe Flow:
from crewai.flow import Flow, listen, startfrom my_flow.crews.poem_crew.poem_crew import PoemCrew
class MyFlow(Flow): @start() def begin(self): # Lógica do Flow aqui result = PoemCrew().crew().kickoff(inputs={...}) return result
def kickoff(): """Executa o flow.""" MyFlow().kickoff()
if __name__ == "__main__": kickoff()5. Preparar Variáveis de Ambiente
Seção intitulada “5. Preparar Variáveis de Ambiente”Antes da implantação, certifique-se de ter:
- Chaves de API de LLM prontas (OpenAI, Anthropic, Google, etc.)
- Chaves de API de ferramentas se estiver usando ferramentas externas (Serper, etc.)
Comandos de Validação Rápida
Seção intitulada “Comandos de Validação Rápida”Execute estes comandos a partir da raiz do seu projeto para verificar rapidamente sua configuração:
# 1. Verificar tipo do projeto no pyproject.tomlgrep -A2 "\[tool.crewai\]" pyproject.toml
# 2. Verificar se uv.lock existels -la uv.lock || echo "ERRO: uv.lock ausente! Execute 'uv lock'"
# 3. Para crews JSON-first, verificar crew.jsonc e agents/([ -f crew.jsonc ] || [ -f crew.json ]) || echo "Nenhum crew.jsonc ou crew.json encontrado"test -d agents || echo "Nenhum diretório agents/ encontrado"
# 4. Para Crews clássicas - verificar se crew.py existels -la src/*/crew.py 2>/dev/null || echo "Nenhum crew.py (esperado para Crews)"
# 5. Para Flows - verificar se pasta crews/ existels -la src/*/crews/ 2>/dev/null || echo "Nenhuma pasta crews/ (esperado para Flows)"
# 6. Para crews Python clássicas - verificar uso do CrewBasegrep -r "@CrewBase" . --include="*.py"Erros Comuns de Configuração
Seção intitulada “Erros Comuns de Configuração”| Erro | Sintoma | Correção |
|---|---|---|
uv.lock ausente | Build falha durante resolução de dependências | Execute uv lock e faça commit |
type errado no pyproject.toml | Build bem-sucedido mas falha em runtime | Altere para o tipo correto |
crew.jsonc ou agents/ ausente em uma crew JSON-first | Definição da crew não encontrada | Mantenha crew.jsonc e agents/ na raiz do projeto |
Decorador @CrewBase ausente em uma crew clássica | Erros “Config not found” | Adicione o decorador a todas as classes crew clássicas |
Arquivos clássicos na raiz ao invés de src/ | Ponto de entrada não encontrado | Mova arquivos Python clássicos para src/project_name/ |
run() ou kickoff() ausente | Não é possível iniciar automação | Adicione a função de entrada correta |
Próximos Passos
Seção intitulada “Próximos Passos”Uma vez que seu projeto passar por todos os itens do checklist, você está pronto para implantar:
Deploy para AMP
Siga o guia de implantação para implantar seu Crew ou Flow no CrewAI AMP usando a CLI, interface web ou integração CI/CD.