Agents no n8n
Um assistente pode lembrar que o cliente perguntou sobre devolução e ainda não conhecer a política vigente. Memória de conversa e recuperação de documentos resolvem problemas diferentes. Nesta aula, um AI Agent de suporte usará histórico para manter continuidade e RAG para consultar uma política com origem identificável. O resultado deve mostrar quais afirmações vieram da conversa, quais vieram do documento e quais continuam desconhecidas.
A arquitetura combina modelo, ferramentas, memória e recuperação, mas cada componente precisa de escopo. A memória será ligada a uma sessão autorizada; a recuperação será filtrada por organização e por conteúdo permitido. O exemplo JavaScript usa busca literal em um corpus fictício para tornar essas fronteiras executáveis. Ele não usa embeddings nem demonstra recall semântico. O laboratório implementará a recuperação e a memória reais na versão n8n utilizada, com avaliações separadas.
JavaScriptn8nRAGAgentesIA & MLAo terminar esta aula
- Memória mantém continuidade; RAG fornece evidência externa.
- Chave de sessão e filtro de recuperação protegem fronteiras diferentes.
- Avalie recuperação, fidelidade e citação separadamente.
Antes de continuar: Laboratório: AI Workflows
AI Agent decide o uso de ferramentas
AgentesIA & MLO agente interpreta a mensagem e escolhe consultar a política quando precisa de uma regra externa. A ferramenta deve explicar sua finalidade e devolver trechos com identificador, origem e validade. O modelo pode usar a conversa para entender a pergunta, mas não deve tratar uma afirmação anterior do usuário como política oficial. Se o cliente diz “me falaram que o prazo é infinito”, o agente precisa consultar a fonte adequada ou declarar que não consegue confirmar. A continuidade ajuda a interpretar; a evidência ajuda a sustentar o fato.
Defina um contrato da resposta que separe resposta, fontes e lacunas. Quando a recuperação falhar, a saída não deve apresentar uma regra inventada. Quando o documento for contraditório ou antigo, marque a condição e siga a política de revisão. Uma tool de RAG é leitura; confirmar uma devolução é efeito e permanece fora desse contrato. O fato de o agente ter memória e documentos não lhe concede permissão para operar sobre qualquer pedido. Identidade e propriedade continuam verificadas pela aplicação antes das consultas privadas.
Memória conserva histórico, não autoridade
FundamentosMemória de chat preserva contexto entre interações, e a chave de sessão deve relacionar usuário, organização e conversa de forma segura. Uma chave global como suporte mistura clientes. Uma chave recebida livremente do usuário pode permitir leitura de outra conversa se o backend não verificar o vínculo. Construa ou valide a chave em contexto confiável e defina retenção, janela e exclusão. A janela de contexto determina quanto histórico será considerado; armazenar tudo no banco não significa enviar tudo ao modelo em cada turno.
Postgres Chat Memory utiliza Postgres para guardar histórico e oferece configuração de chave, tabela e janela. A documentação atual alerta que expressões em subnodes resolvem o primeiro item, ao contrário do comportamento por item de muitos nodes comuns. Esse detalhe é crítico ao processar conversas distintas em lote: duas entradas podem usar a mesma chave por acidente. Teste duas identidades e sessões diferentes e revise como o fluxo é dividido antes do subnode. Persistência no banco não corrige uma chave construída incorretamente.
RAG começa antes da pergunta
RAGA ingestão seleciona fontes, carrega documentos, divide trechos, calcula representações quando necessário e guarda conteúdo e metadados. A estratégia de divisão precisa conservar o contexto que torna a regra compreensível. Um trecho com “trinta dias” sem a condição de compra pode levar a uma resposta errada. Preserve título, seção, organização, data e identidade do documento. Ao atualizar a política, defina se trechos antigos serão substituídos ou versionados; inserir novamente sem identificação pode produzir duplicatas e respostas sobre versões diferentes.
Na consulta, a recuperação seleciona candidatos e o agente usa os trechos para responder. Busca por similaridade não prova relevância nem autorização. Filtre organização e permissões antes de apresentar contexto ao modelo, e verifique se o resultado corresponde à pergunta. O modelo de embeddings usado para consulta precisa ser compatível com o índice criado. Mudar configuração sem reindexar pode invalidar comparações. Quantidade de trechos e tamanho afetam custo e cobertura; escolha esses valores por avaliação, não por um número universal de top-k ou tamanho de chunk.
const docs=[{id:'D1',tenant:'lojaA',texto:'devolucao: prazo ficticio de 30 dias'},{id:'D2',tenant:'lojaB',texto:'devolucao: prazo ficticio de 7 dias'}];
const memoria=new Map();
function responder(tenant,usuario,sessao,termo) {
const chave=[tenant,usuario,sessao].join(':');
const trechos=docs.filter(d=>d.tenant===tenant&&d.texto.includes(termo));
const resultado=trechos.length?{status:'contexto',fontes:trechos}:{status:'evidencia_insuficiente'};
memoria.set(chave,[...(memoria.get(chave)||[]),{termo,resultado}]);
return {chave,resultado};
}
console.log(responder('lojaA','ana','S1','devolucao'));
console.log(responder('lojaA','ana','S1','garantia'));
console.log(responder('lojaB','bia','S2','devolucao'));Separe falha de busca e falha de geração
FundamentosSe o trecho relevante não foi recuperado, a geração não possui a evidência necessária. Se ele foi recuperado, mas a resposta o contradiz, a falha está no uso do contexto. Avalie as duas etapas separadamente com perguntas que possuem referências no corpus e perguntas sem resposta. Meça presença do trecho esperado, fidelidade da resposta e precisão da citação. Um texto fluente com uma fonte anexada pode citar um documento que não sustenta a afirmação. As fontes precisam ser ligadas ao conteúdo, não colocadas como decoração.
O simulador filtra tenant antes da busca literal, usa uma chave de memória que inclui organização, usuário e sessão e retorna evidência insuficiente quando não há trecho. Isso demonstra isolamento e ausência explícita, sem medir qualidade de embeddings ou geração. Na integração, avalie também documentos adversariais que tentam alterar instruções e memória contendo afirmações falsas. Ambos continuam sendo dados. Um bom agente usa histórico para continuidade, documentos autorizados para fundamentação e política da aplicação para decidir o que pode executar.
Exercício aplicado
Nesta leitura, analise o exemplo local de duas lojas e explique isolamento, proveniência e ausência de evidência. A implementação HTTP+SQLite e a configuração completa do workflow são a entrega do laboratório seguinte; o Map desta leitura demonstra somente o mecanismo conceitual.
- Execute o exemplo e identifique documento e chave de sessão em cada retorno.
- Explique por que a busca em lojaA não pode recuperar D2, mesmo que o termo coincida.
- Preveja a resposta para garantia e explique qual evidência seria necessária para responder.
- Escreva os metadados e fronteiras que deverão permanecer na versão persistente; compare depois com o backend e o workflow do laboratório.
Abrir resolução comentada
A busca por devolucao em lojaA retorna somente o documento autorizado, e a chave lojaA:ana:S1 recebe o histórico correspondente. Uma pergunta sem termo conhecido retorna evidência insuficiente. O documento de lojaB não aparece mesmo contendo o mesmo termo. Essa ordem de filtro e busca impede levar conteúdo proibido ao contexto.
No workflow real, configure memória com chave confiável e recuperação com filtros e metadados, validando duas sessões distintas. A busca literal é substituída por recuperação compatível com o índice escolhido, e a geração deve citar o trecho que sustenta a regra. A avaliação precisa localizar a falha por etapa.
Para esta leitura, a evidência esperada é o trace: lojaA/ana/S1 recupera D1, garantia termina com evidencia_insuficiente e lojaB/bia/S2 recupera D2. A implementação do laboratório acrescenta corpus versionado, memória persistente e HTTP, com teste local executado. A configuração n8n e o modo semântico com Ollama são documentados separadamente e não foram executados nesta revisão; o exemplo de Map não demonstra essas integrações.
const docs=[{id:'D1',tenant:'lojaA',texto:'devolucao: prazo ficticio de 30 dias'},{id:'D2',tenant:'lojaB',texto:'devolucao: prazo ficticio de 7 dias'}];
const memoria=new Map();
function responder(tenant,usuario,sessao,termo) {
const chave=[tenant,usuario,sessao].join(':');
const trechos=docs.filter(d=>d.tenant===tenant&&d.texto.includes(termo));
const resultado=trechos.length?{status:'contexto',fontes:trechos}:{status:'evidencia_insuficiente'};
memoria.set(chave,[...(memoria.get(chave)||[]),{termo,resultado}]);
return {chave,resultado};
}
console.log(responder('lojaA','ana','S1','devolucao'));
console.log(responder('lojaA','ana','S1','garantia'));
console.log(responder('lojaB','bia','S2','devolucao'));Como conferir seu resultado
- Nenhum documento de outro tenant chega ao agente.
- Os históricos permanecem isolados.
- Resposta sem evidência comunica lacuna e não inventa uma regra.
Aplique em um problema novo
Primeiro resolva sem consultar a resposta. Explique suas decisões e guarde a evidência. A conclusão de leitura é independente desta autoavaliação.
Confira seus pré-requisitos
- Separar memória e evidência RAG.
- Construir chave sessão e metadados.
Duas sessões entram em lote; subnode usa primeiro item. Fonte do segundo tenant entra no contexto. Separe falhas.
Conferir raciocínio e critérios de domínio
Chave deve identificar tenant/usuário/sessão e resolução por item deve ser comprovada.
Fonte de outro tenant é falha de escopo anterior à geração.
Resposta correta por acaso não prova isolamento; consultar históricos/contextos.
Evidências para autoavaliação ou revisão por pares
- Sessão: Chave deve identificar tenant/usuário/sessão e resolução por item deve ser comprovada.
- Recuperação: Fonte de outro tenant é falha de escopo anterior à geração.
- Fidelidade: Resposta correta por acaso não prova isolamento; consultar históricos/contextos.
Um erro frequente
Postgres impede mistura de sessões automaticamente.
O banco não corrige uma chave de sessão construída incorretamente.
Teste sua compreensão
Responda com suas palavras antes de abrir o comentário. Saber explicar uma decisão é parte do domínio.
1. Memória de chat equivale a RAG?
Não. Uma conserva interação; o outro recupera evidência externa.
Histórico pode conter afirmações falsas ou informações desatualizadas.
2. Busca similar garante autorização?
Não. O filtro de acesso precisa ser aplicado antes do contexto.
Similaridade não representa permissão sobre o documento.
3. Subnode resolve expressão para cada item?
Na documentação atual, resolve o primeiro item.
A chave de memória precisa ser testada com sessões distintas para evitar mistura.
Seu progresso fica salvo neste navegador. Concluir a leitura não substitui demonstrar o domínio nos exercícios.
Referências e aprofundamento
Documentação oficial e trabalhos originais. As referências registram o escopo e as limitações para você conferir o que sustentam.
- AI Agent
n8n • consulta: 2026-10-06
n8nAgentesIA & MLAgente com chat model e ao menos uma tool; Tools Agent.
Limites: Seletor de tipo de agente depreciado desde1.82; nodev1 previsto para remoção em3.0.
- Postgres Chat Memory
n8n • consulta: 2026-10-06
PostgreSQLn8nMemória de chat persistida em Postgres, session key e janela de contexto.
Limites: Isolar sessão/usuário e planejar retenção; histórico não é autorização nem memória semântica automaticamente.
- Retrieve relevant context
n8n • consulta: 2026-10-06
n8nRAG, ingestão, vetores e recuperação de contexto em workflows.
Limites: RAG não garante groundedness; medir retrieval/resposta e controlar acesso à coleção.