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:
- Respostas Inteligentes: Gerar respostas contextuais usando IA
- Processamento de Texto: Analisar e processar conteúdo em linguagem natural
- Chatbots Avançados: Criar assistentes virtuais inteligentes
- Geração de Conteúdo: Produzir textos, resumos e análises automaticamente
Como funciona internamente?
Quando o LANGCHAIN_CHAT é executado, o sistema:
- Recebe Prompt: Coleta a pergunta ou instrução do usuário
- Configura Modelo: Define modelo (GPT-3.5, GPT-4, etc.) e temperatura
- Chama OpenAI API: Envia requisição para API da OpenAI
- Processa Resposta: Recebe e formata resposta do modelo
- Retorna Resultado: Devolve texto gerado pela IA
- 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
- Atendimento Inteligente: "Responder perguntas complexas de clientes usando IA"
- Análise de Sentimento: "Classificar feedback como positivo/negativo/neutro"
- 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)