Kaique Mitsuo Silva Yamamoto
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

CaracteristicaDescricao
Open SourceCodigo aberto, self-hosted
VisualInterface drag-and-drop
ExtensivelCrie nodes customizados
400+ IntegracoesAPIs pre-construidas
Self-hostedDados sob seu controle
Fair-codeLicenca 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 -d

NPM

npm install n8n -g
n8n start

Integracao com IA

Nodes de IA Disponiveis

NodeFuncao
OpenAIGPT-4, DALL-E, Whisper
AnthropicClaude
AI AgentAgente autonomo com tools
AI ChainChains do LangChain
Vector StorePinecone, Qdrant, etc.
EmbeddingsGeracao de embeddings
Text SplitterDivisao 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 → Arquivar

Analise de Sentimento em Reviews

Webhook (nova review) → OpenAI Analysis →
    IF Negativo → Slack Alert + Criar Tarefa
    IF Positivo → Adicionar ao Marketing

Resumo Automatico de Reunioes

Google Meet Recording → Whisper Transcription →
GPT Summarization → Notion Page + Slack Summary

Monitoramento de Concorrentes

Schedule (diario) → Scrape Websites →
Compare com Ontem → AI Analysis →
Slack Report + Google Sheets

Configuracao 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=168

Criando 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 + Notification

2. 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

Recursos