返回 Skill 列表
extension
分类: 内容与媒体无需 API Key

n8n-legal-config

n8n Cloud节点的专业配置,用于带有AI的法律工作流程。当Claude需要配置AI代理节点、LangChain、OpenAI、Anthropic、向量存储(Pinecone、Supabase、Qdrant)、HTTP请求、代码、Webhook或PostgreSQL以实现法律自动化时使用。包括针对法律文件处理、FIRAC分析、判例法搜索以及与巴西立法相关的RAG优化参数。

person作者: jakexiaohubgithub

n8n Legal Config - Configuração de Nodes para Workflows Jurídicos

AI Agent Node - Orquestrador Central

O AI Agent é o hub de orquestração que conecta LLM, memória e ferramentas.

Conexões obrigatórias:

  • ai_languageModel: OpenAI Chat ou Anthropic Chat
  • ai_tool: Mínimo uma ferramenta

Conexões recomendadas para jurídico:

  • ai_memory: Buffer Window Memory (10-15 mensagens para manter contexto processual)
  • ai_outputParser: Structured Output Parser para JSON de decisões

Parâmetros críticos:

{
  "systemMessage": "Você é um assistente jurídico especializado em [área]. Analise usando metodologia FIRAC+...",
  "maxIterations": 10,
  "returnIntermediateSteps": true
}

Nota: Sub-nodes resolvem expressões apenas para o primeiro item. Use Loop Over Items para múltiplos documentos.

Configuração de Modelos LLM

Anthropic Chat (Claude) - Preferencial para análise jurídica

{
  "model": "claude-sonnet-4-5-20250929",
  "options": {
    "temperature": 0.1,
    "maxTokensToSample": 8192,
    "topK": 40,
    "topP": 0.95
  }
}

Parâmetros jurídicos:

  • Temperature 0.0-0.2: Análises técnicas, citações legais
  • Temperature 0.3-0.5: Pareceres, fundamentações
  • TopK 20-40: Respostas mais determinísticas

OpenAI Chat - Análises complementares

{
  "model": "gpt-4o",
  "options": {
    "temperature": 0.2,
    "maxTokens": 4096,
    "frequencyPenalty": 0.3,
    "presencePenalty": 0.1
  }
}

Responses API (toggle no node): Habilita Web Search para jurisprudência atualizada.

Vector Store Nodes - RAG Jurídico

Supabase Vector Store (recomendado para Lex Intelligentia)

Configuração de conexão:

Host: db.xxx.supabase.co
Port: 6543 (transaction pooler - crítico para performance)
Database: postgres
Schema: public
Match Function: match_documents

Modos de operação:

  1. Insert Documents: Inserir jurisprudência, legislação
  2. Retrieve Documents (as Tool for Agent): Pesquisa semântica pelo agente
  3. Get Many: Recuperação direta com limit

Metadata Filter para jurisprudência:

{
  "tribunal": "STJ",
  "area": "direito_civil",
  "ano": { "$gte": 2020 }
}

Qdrant - Alta performance

{
  "url": "https://xxx.qdrant.io",
  "collectionName": "jurisprudencia_stj",
  "collectionConfig": {
    "vectors": {
      "size": 1536,
      "distance": "Cosine"
    }
  }
}

HTTP Request Node - Integração com APIs Jurídicas

Configuração robusta:

{
  "method": "POST",
  "url": "https://api.tribunal.jus.br/v1/consulta",
  "authentication": "headerAuth",
  "options": {
    "timeout": 60000,
    "retry": {
      "maxTries": 5,
      "waitBetweenTries": 3000
    }
  }
}

Error Handling:

  • Continue (Using Error Output): Roteia para tratamento de erros
  • Conecte a branch de erro para logging/notificação

Backoff exponencial (além de 5 retries):

// No Code node antes do HTTP Request
const attempt = $('Loop').context['currentRunIndex'] || 0;
const delay = Math.min(2000 * Math.pow(2, attempt), 30000);
return [{ json: { delay } }];

Code Node - Processamento de Documentos Jurídicos

Variáveis úteis:

$json                          // Documento atual
$input.all()                   // Todos os documentos
$('AI Agent').first().json     // Resposta do agente
$execution.id                  // ID para logging

Template para extração de dados processuais:

const documento = $json.texto;

// Extração de número do processo
const numeroProcesso = documento.match(/\d{7}-\d{2}\.\d{4}\.\d\.\d{2}\.\d{4}/)?.[0];

// Extração de partes
const partes = {
  autor: documento.match(/(?:Autor|Requerente|Exequente):\s*([^\n]+)/i)?.[1]?.trim(),
  reu: documento.match(/(?:Réu|Requerido|Executado):\s*([^\n]+)/i)?.[1]?.trim()
};

return [{
  json: {
    numeroProcesso,
    partes,
    textoOriginal: documento
  }
}];

HTTP Request interno:

const response = await this.helpers.httpRequest({
  method: 'GET',
  url: `https://api.stj.jus.br/processo/${$json.numero}`,
  headers: { 'Authorization': `Bearer ${$json.token}` }
});
return [{ json: response }];

Webhook Node - Recebimento de Petições/Documentos

Configuração de produção:

{
  "httpMethod": "POST",
  "path": "receber-peticao",
  "authentication": "headerAuth",
  "responseMode": "responseNode",
  "options": {
    "rawBody": true,
    "binaryData": true
  }
}

Timeout n8n Cloud: 100 segundos - Use polling para processos longos.

Memory e State Management

Buffer Window Memory

{
  "sessionIdType": "customKey",
  "sessionKey": "={{ $json.processo_id }}",
  "contextWindowLength": 15
}

Workflow Static Data (persistência entre execuções)

const staticData = $getWorkflowStaticData('global');

// Salvar último processamento
staticData.ultimoProcessamento = {
  timestamp: new Date().toISOString(),
  processoId: $json.processo_id
};

// Recuperar
const ultimo = staticData.ultimoProcessamento;

Limitação: Funciona apenas em produção, não em testes manuais.

Referências