Pular para conteúdo

LANGCHAIN_CHAT - Chat com Modelos de Linguagem via LangChain

O que é este Node?

O LANGCHAIN_CHAT é o node responsável por realizar conversas com modelos de linguagem (LLMs) usando a API da OpenAI através do framework LangChain. Ele permite criar chatbots inteligentes e processamento de linguagem natural.

Por que este Node existe?

Automações modernas precisam de processamento de linguagem natural para entender e responder perguntas complexas. O LANGCHAIN_CHAT existe para:

  1. Respostas Inteligentes: Gerar respostas contextuais usando IA
  2. Processamento de Texto: Analisar e processar conteúdo em linguagem natural
  3. Chatbots Avançados: Criar assistentes virtuais inteligentes
  4. Geração de Conteúdo: Produzir textos, resumos e análises automaticamente

Como funciona internamente?

Quando o LANGCHAIN_CHAT é executado, o sistema:

  1. Recebe Prompt: Coleta a pergunta ou instrução do usuário
  2. Configura Modelo: Define modelo (GPT-3.5, GPT-4, etc.) e temperatura
  3. Chama OpenAI API: Envia requisição para API da OpenAI
  4. Processa Resposta: Recebe e formata resposta do modelo
  5. Retorna Resultado: Devolve texto gerado pela IA
  6. Se erro: Loga o erro e retorna falha na operação

Código interno (lightweight-executors.service.ts:125-144):

async executeLangChainChat(data: any, variables: Record<string, any>): Promise<any> {
  try {
    this.logger.log('🤖 [LangChain Chat] Executing chat via OpenAI API');

    const response = await this.openai.chat.completions.create({
      model: data.model || 'gpt-3.5-turbo',
      messages: [{ role: 'user', content: data.prompt || 'Hello' }],
      temperature: data.temperature || 0.7,
    });

    return {
      success: true,
      response: response.choices[0].message.content,
      model: data.model || 'gpt-3.5-turbo',
    };
  } catch (error) {
    this.logger.error('LangChain Chat execution error:', error);
    throw error;
  }
}

Quando você DEVE usar este Node?

Use LANGCHAIN_CHAT sempre que precisar de processamento de linguagem natural com IA:

Casos de uso

  1. Atendimento Inteligente: "Responder perguntas complexas de clientes usando IA"
  2. Análise de Sentimento: "Classificar feedback como positivo/negativo/neutro"
  3. Geração de Conteúdo: "Criar descrições de produtos automaticamente"

Quando NÃO usar LANGCHAIN_CHAT

  • Respostas Simples e Fixas: Use node MESSAGE para respostas pré-definidas
  • Cálculos Matemáticos: Use node CALCULATOR para operações exatas
  • Busca de Informações Factuais: Use APIs específicas ou banco de dados

Parâmetros Detalhados

prompt (string, obrigatório)

O que é: Pergunta ou instrução que será enviada ao modelo de IA.

Flow completo para testar:

{
  "name": "Teste LangChain Chat - Prompt Básico",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Pergunta do Usuário",
        "parameters": {
          "variableName": "userQuestion",
          "message": "O que você gostaria de saber?"
        }
      }
    },
    {
      "id": "langchain_1",
      "type": "langchain_chat",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Processar com IA",
        "parameters": {
          "prompt": "{{userQuestion}}",
          "model": "gpt-3.5-turbo",
          "temperature": 0.7
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Responder",
        "parameters": {
          "message": "{{response}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "langchain_1" },
    { "source": "langchain_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Digite uma pergunta e receba resposta gerada pela IA.

model (string, opcional)

O que é: Modelo de linguagem a ser usado.

Padrão: "gpt-3.5-turbo"

Valores: "gpt-3.5-turbo", "gpt-4", "gpt-4-turbo"

Flow completo para testar:

{
  "name": "Teste LangChain Chat - GPT-4",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "langchain_1",
      "type": "langchain_chat",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Análise Avançada",
        "parameters": {
          "prompt": "Analise os principais desafios da inteligência artificial em 2025",
          "model": "gpt-4",
          "temperature": 0.3
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Resultado",
        "parameters": {
          "message": "Análise GPT-4:\n\n{{response}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "langchain_1" },
    { "source": "langchain_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: O sistema usa GPT-4 para análise mais sofisticada.

temperature (number, opcional)

O que é: Controla criatividade da resposta (0 = preciso, 1 = criativo).

Padrão: 0.7

Range: 0.0 a 1.0

Flow completo para testar:

{
  "name": "Teste LangChain Chat - Temperature",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "langchain_1",
      "type": "langchain_chat",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Resposta Precisa",
        "parameters": {
          "prompt": "Quanto é 157 + 238?",
          "temperature": 0.0
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Mostrar Resultado",
        "parameters": {
          "message": "Resposta: {{response}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "langchain_1" },
    { "source": "langchain_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Teste: Com temperature 0, a resposta é sempre consistente e precisa.

Parâmetros

Campo Tipo Obrigatório Descrição
prompt string Sim Pergunta ou instrução para a IA
model string Não Modelo a usar (padrão: gpt-3.5-turbo)
temperature number Não Criatividade (0-1, padrão: 0.7)
maxTokens number Não Limite de tokens na resposta

Exemplo 1: Chatbot de Suporte Inteligente

Objetivo: Criar chatbot que responde dúvidas de clientes usando IA.

JSON para Importar

{
  "name": "Chatbot de Suporte - LangChain",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Boas-vindas",
        "parameters": {
          "message": "Olá! Sou o assistente virtual. Como posso ajudá-lo hoje?"
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Receber Dúvida",
        "parameters": {
          "variableName": "customerQuestion",
          "message": "Digite sua dúvida:"
        }
      }
    },
    {
      "id": "langchain_1",
      "type": "langchain_chat",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Processar com IA",
        "parameters": {
          "prompt": "Você é um assistente de suporte. Responda a seguinte dúvida do cliente de forma clara e educada:\n\n{{customerQuestion}}",
          "model": "gpt-3.5-turbo",
          "temperature": 0.5
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Responder Cliente",
        "parameters": {
          "message": "{{response}}\n\nPosso ajudar com mais alguma coisa?"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "input_1" },
    { "source": "input_1", "target": "langchain_1" },
    { "source": "langchain_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Olá! Sou o assistente virtual. Como posso ajudá-lo hoje?
Sistema: Digite sua dúvida:
Usuário: Como faço para rastrear meu pedido?
Sistema: Para rastrear seu pedido, você pode acessar nossa página de rastreamento em www.exemplo.com/rastrear e inserir o número do seu pedido. Você também pode verificar o e-mail de confirmação que enviamos, pois ele contém um link direto para o rastreamento. Se precisar de ajuda adicional, nossa equipe está disponível pelo chat.

Posso ajudar com mais alguma coisa?

Exemplo 2: Análise de Sentimento de Feedback

Objetivo: Analisar sentimento de feedback de clientes usando IA.

JSON para Importar

{
  "name": "Análise de Sentimento - LangChain",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Solicitar Feedback",
        "parameters": {
          "variableName": "customerFeedback",
          "message": "Por favor, deixe seu feedback sobre nosso atendimento:"
        }
      }
    },
    {
      "id": "langchain_1",
      "type": "langchain_chat",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Analisar Sentimento",
        "parameters": {
          "prompt": "Analise o sentimento do seguinte feedback e classifique como POSITIVO, NEGATIVO ou NEUTRO. Responda apenas com a classificação e um breve resumo:\n\n{{customerFeedback}}",
          "model": "gpt-3.5-turbo",
          "temperature": 0.2
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Confirmar ao Cliente",
        "parameters": {
          "message": "Obrigado pelo seu feedback! Ele foi registrado com sucesso."
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Log Interno",
        "parameters": {
          "message": "Análise de Sentimento:\n{{response}}\n\nFeedback original: {{customerFeedback}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "langchain_1" },
    { "source": "langchain_1", "target": "message_1" },
    { "source": "message_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Por favor, deixe seu feedback sobre nosso atendimento:
Usuário: O atendimento foi excelente! A equipe foi muito atenciosa e resolveu meu problema rapidamente.
Sistema: Obrigado pelo seu feedback! Ele foi registrado com sucesso.
Sistema: Análise de Sentimento:
POSITIVO - Cliente expressou satisfação com atendimento rápido e equipe atenciosa.

Feedback original: O atendimento foi excelente! A equipe foi muito atenciosa e resolveu meu problema rapidamente.

Resposta do Node

{
  "success": true,
  "response": "Resposta gerada pela IA baseada no prompt fornecido.",
  "model": "gpt-3.5-turbo"
}

Boas Práticas

SIM:

  • Usar temperature baixa (0-0.3) para respostas factuais
  • Usar temperature alta (0.7-1.0) para respostas criativas
  • Incluir contexto claro no prompt
  • Validar e sanitizar entradas do usuário
  • Armazenar respostas para análise e melhoria

NÃO:

  • Confiar cegamente em respostas da IA sem validação
  • Usar para decisões críticas sem supervisão humana
  • Ignorar custos de API (cada chamada consome tokens)
  • Enviar informações sensíveis sem criptografia
  • Usar modelos caros (GPT-4) quando GPT-3.5 é suficiente

Dicas

💡 Dica 1: GPT-3.5-turbo é mais barato e rápido, GPT-4 é mais preciso e sofisticado

💡 Dica 2: Temperature 0 = determinístico (mesma resposta), Temperature 1 = criativo (variado)

💡 Dica 3: Seja específico no prompt: "Responda em 2 parágrafos" ou "Liste 3 opções"

💡 Dica 4: Use system messages para definir comportamento: "Você é um assistente técnico"

Próximos Nodes

LANGCHAIN_AGENT - Agentes autônomos com ferramentas → LANGCHAIN_EMBEDDINGS - Geração de embeddings vetoriais → AI - Processamento com IA (versão completa)