Ia
Automacao com N8N e IA
N8N e uma plataforma de automacao de workflows que permite integrar IA de forma visual e poderosa. Ideal para criar agentes, pipelines de dados e automacoes inteligentes.
O que e N8N?
N8N e uma ferramenta de automacao open-source que permite conectar aplicacoes e servicos atraves de workflows visuais.
Caracteristicas
| Caracteristica | Descricao |
|---|---|
| Open Source | Codigo aberto, self-hosted |
| Visual | Interface drag-and-drop |
| Extensivel | Crie nodes customizados |
| 400+ Integracoes | APIs pre-construidas |
| Self-hosted | Dados sob seu controle |
| Fair-code | Licenca que permite uso comercial |
Instalacao
Docker (Recomendado)
# docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=sua-senha
- N8N_ENCRYPTION_KEY=sua-chave-secreta
- WEBHOOK_URL=https://seu-dominio.com/
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:docker-compose up -dNPM
npm install n8n -g
n8n startIntegracao com IA
Nodes de IA Disponiveis
| Node | Funcao |
|---|---|
| OpenAI | GPT-4, DALL-E, Whisper |
| Anthropic | Claude |
| AI Agent | Agente autonomo com tools |
| AI Chain | Chains do LangChain |
| Vector Store | Pinecone, Qdrant, etc. |
| Embeddings | Geracao de embeddings |
| Text Splitter | Divisao de documentos |
Workflows Praticos
1. Chatbot com Memoria
┌─────────┐ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Webhook │───▶│ Chat Memory │───▶│ OpenAI Chat │───▶│ Respond to │
│ Trigger │ │ Manager │ │ Model │ │ Webhook │
└─────────┘ └─────────────┘ └──────────────┘ └─────────────┘Configuracao do OpenAI Chat:
- Model: gpt-4o
- System Message: "Voce e um assistente de suporte..."
- Memory: Window Buffer Memory (5 mensagens)
2. RAG com Documentos
Fluxo de Indexacao:
┌──────────┐ ┌─────────────┐ ┌────────────┐ ┌─────────────┐
│ File │───▶│ Text │───▶│ Embeddings │───▶│ Vector │
│ Trigger │ │ Splitter │ │ OpenAI │ │ Store │
└──────────┘ └─────────────┘ └────────────┘ └─────────────┘
Fluxo de Consulta:
┌──────────┐ ┌─────────────┐ ┌────────────┐ ┌─────────────┐
│ Webhook │───▶│ Vector │───▶│ OpenAI │───▶│ Respond │
│ │ │ Retriever │ │ + Context │ │ │
└──────────┘ └─────────────┘ └────────────┘ └─────────────┘3. AI Agent com Tools
┌──────────┐ ┌─────────────────────────────────────┐ ┌──────────┐
│ Trigger │───▶│ AI Agent │───▶│ Response │
└──────────┘ │ ┌───────────────────────────────┐ │ └──────────┘
│ │ Tools: │ │
│ │ - HTTP Request (APIs) │ │
│ │ - Code (JavaScript/Python) │ │
│ │ - Database Query │ │
│ │ - Send Email │ │
│ │ - Slack Message │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘Exemplos de Casos de Uso
Processamento de Emails
Email Trigger → AI Classification → Route by Category
├── Suporte → Criar Ticket
├── Vendas → CRM
└── Spam → ArquivarAnalise de Sentimento em Reviews
Webhook (nova review) → OpenAI Analysis →
IF Negativo → Slack Alert + Criar Tarefa
IF Positivo → Adicionar ao MarketingResumo Automatico de Reunioes
Google Meet Recording → Whisper Transcription →
GPT Summarization → Notion Page + Slack SummaryMonitoramento de Concorrentes
Schedule (diario) → Scrape Websites →
Compare com Ontem → AI Analysis →
Slack Report + Google SheetsConfiguracao Avancada
Variaveis de Ambiente para IA
# OpenAI
OPENAI_API_KEY=sk-...
# Anthropic
ANTHROPIC_API_KEY=sk-ant-...
# Pinecone
PINECONE_API_KEY=...
PINECONE_ENVIRONMENT=us-east-1
# Configuracoes de Performance
N8N_DEFAULT_BINARY_DATA_MODE=filesystem
N8N_PAYLOAD_SIZE_MAX=16
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168Criando um Node Customizado
// nodes/MyAINode/MyAINode.node.ts
import { IExecuteFunctions, INodeType, INodeTypeDescription } from 'n8n-workflow';
export class MyAINode implements INodeType {
description: INodeTypeDescription = {
displayName: 'My AI Node',
name: 'myAiNode',
group: ['transform'],
version: 1,
description: 'Node customizado de IA',
inputs: ['main'],
outputs: ['main'],
properties: [
{
displayName: 'Prompt',
name: 'prompt',
type: 'string',
default: '',
},
],
};
async execute(this: IExecuteFunctions) {
const items = this.getInputData();
const prompt = this.getNodeParameter('prompt', 0) as string;
// Sua logica de IA aqui
return [items];
}
}Integracao com APIs Externas
Webhook para Receber Mensagens
// Configuracao do Webhook Node
{
"httpMethod": "POST",
"path": "chat",
"responseMode": "lastNode",
"options": {
"rawBody": true
}
}Chamada para API Externa
// Code Node para processar resposta
const input = $input.all();
const response = await $http.request({
method: 'POST',
url: 'https://api.openai.com/v1/chat/completions',
headers: {
'Authorization': 'Bearer ' + $credentials.openAiApi.apiKey,
'Content-Type': 'application/json'
},
body: {
model: 'gpt-4o',
messages: [
{ role: 'system', content: 'Voce e um assistente.' },
{ role: 'user', content: input[0].json.message }
]
}
});
return [{ json: response }];Boas Praticas
1. Tratamento de Erros
Main Workflow → Error Trigger → Log + Notification2. Rate Limiting
- Use o node "Wait" entre chamadas de API
- Configure delays exponenciais para retry
3. Seguranca
- Use credenciais do N8N (nunca hardcode)
- Valide inputs de webhooks
- Limite IPs para webhooks sensiveis
4. Performance
- Use sub-workflows para logica reutilizavel
- Ative "Execute Once" para nodes estaticos
- Configure timeouts apropriados
5. Monitoramento
- Ative logs de execucao
- Configure alertas para falhas
- Use tags para organizar workflows
Deploy em Producao
Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: n8n
spec:
replicas: 1
template:
spec:
containers:
- name: n8n
image: n8nio/n8n
env:
- name: N8N_ENCRYPTION_KEY
valueFrom:
secretKeyRef:
name: n8n-secrets
key: encryption-key
- name: DB_TYPE
value: postgresdb
- name: DB_POSTGRESDB_HOST
value: postgres-service
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "1Gi"
cpu: "1000m"Com PostgreSQL
# docker-compose.yml para producao
services:
n8n:
image: n8nio/n8n
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=seguro
- QUEUE_BULL_REDIS_HOST=redis
- EXECUTIONS_MODE=queue
depends_on:
- postgres
- redis
postgres:
image: postgres:15
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=seguro
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine