LANGCHAIN_CHAT_GOOGLE - Chat com Gemini via LangChain
O que é este Node?
O LANGCHAIN_CHAT_GOOGLE é o node responsável por integrar os modelos Gemini do Google (Gemini Pro, Ultra, Flash) através do framework LangChain, oferecendo conversas multimodais com capacidade de processar texto, código e dados complexos.
Por que este Node existe?
Gemini do Google combina velocidade, multimodalidade e integração nativa com ecossistema Google. O LANGCHAIN_CHAT_GOOGLE existe para:
- Multimodalidade: Processar texto, imagens, vídeo e áudio em uma única chamada
- Integração Google: Conectar nativamente com Workspace, Search, Maps
- Grounding: Respostas baseadas em Google Search para informações atualizadas
- Velocidade: Gemini Flash é um dos modelos mais rápidos do mercado
- Contexto Longo: Até 1M tokens de contexto (Gemini 1.5 Pro)
- Custo-Benefício: Preços competitivos especialmente para Flash
- Raciocínio Avançado: Gemini Ultra compete com GPT-4 e Claude Opus
Como funciona internamente?
Quando o LANGCHAIN_CHAT_GOOGLE é executado, o sistema:
- Valida Configuração: Verifica provider (google), model e apiKey
- Monta Contents: Estrutura específica do Google com parts array
- Configura Generation: Define temperature, topP, topK, maxOutputTokens em generationConfig
- Add System Instruction: Se systemPrompt existir, adiciona em systemInstruction separado
- Envia Request: POST para https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent
- Processa Resposta: Extrai candidates[0].content.parts[0].text
- Calcula Tokens: Usa usageMetadata.totalTokenCount
- Retorna Resultado: Conteúdo, tokens e tempo de execução
Código interno (langchain-chat-executor.service.ts:385-421):
private async executeGoogle(data: LangChainChatNodeData, prompt: string): Promise<any> {
const baseUrl = 'https://generativelanguage.googleapis.com/v1beta';
const payload: any = {
contents: [
{
parts: [
{ text: data.userMessage || prompt }
]
}
],
generationConfig: {
temperature: data.temperature || 0.7,
topP: data.topP || 0.8,
topK: data.topK || 40,
maxOutputTokens: data.maxTokens || 1000,
stopSequences: data.stopSequences
}
};
if (data.systemPrompt) {
payload.systemInstruction = {
parts: [{ text: data.systemPrompt }]
};
}
const response: AxiosResponse = await axios.post(
`${baseUrl}/models/${data.model}:generateContent?key=${data.apiKey}`,
payload,
{
headers: { 'Content-Type': 'application/json' },
timeout: data.timeout || 30000
}
);
return response.data;
}
Quando você DEVE usar este Node?
Use LANGCHAIN_CHAT_GOOGLE sempre que precisar de velocidade, multimodalidade ou integração com Google:
Casos de uso
- Análise de Imagens: "Descrever produtos em fotos, identificar objetos, ler texto em imagens"
- Respostas Atualizadas: "Perguntas sobre eventos recentes usando Google Search grounding"
- Processamento em Massa: "Alto volume de requisições com Gemini Flash (rápido e barato)"
- Análise de Vídeos: "Extrair informações de vídeos, transcrever e resumir conteúdo"
- Coding Assistant: "Gerar, explicar e debugar código (Gemini Code Assist)"
- Documentos Longos: "Processar documentos de até 1M tokens (livros completos)"
- Integração Workspace: "Conectar com Gmail, Docs, Sheets nativamente"
Quando NÃO usar LANGCHAIN_CHAT_GOOGLE
- Raciocínio Ultra-Complexo: Claude Opus ou GPT-4 podem ser superiores
- Function Calling Avançado: OpenAI tem implementação mais madura
- Português Nuanceado: Claude é ligeiramente melhor em pt-BR
- Restrições de Privacidade: Se não pode usar serviços Google
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| provider | string | Sim | Deve ser "google" |
| model | string | Sim | gemini-pro, gemini-1.5-pro, gemini-1.5-flash, gemini-ultra |
| apiKey | string | Sim | Chave API do Google AI Studio |
| systemPrompt | string | Não | Instrução de sistema (vai para systemInstruction) |
| userMessage | string | Não | Mensagem do usuário |
| temperature | number | Não | Aleatoriedade (0-2, padrão: 0.7) |
| maxTokens | number | Não | Limite de tokens (maxOutputTokens, padrão: 1000) |
| topP | number | Não | Nucleus sampling (padrão: 0.8) |
| topK | number | Não | Top-K sampling (padrão: 40) |
| stopSequences | array | Não | Sequências de parada |
| timeout | number | Não | Timeout em ms (padrão: 30000) |
Modelos disponíveis: - gemini-1.5-pro: Melhor qualidade, 1M tokens contexto - gemini-1.5-flash: Mais rápido, mais barato, 1M tokens - gemini-pro: Versão anterior, 32K tokens - gemini-ultra: Premium (acesso limitado)
Exemplo 1: Assistente Rápido com Gemini Flash
Objetivo: Criar assistente de alta velocidade para respostas rápidas em grande volume.
JSON para Importar
{
"name": "Assistente Rápido Gemini Flash",
"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 Rápida",
"parameters": {
"message": "⚡ Assistente Ultra-Rápido\n\nFaça sua pergunta:",
"variable": "quick_question"
}
}
},
{
"id": "langchain_1",
"type": "langchain_chat",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Gemini Flash",
"parameters": {
"provider": "google",
"model": "gemini-1.5-flash",
"apiKey": "{{config.google_ai_key}}",
"maxTokens": 256,
"temperature": 0.5,
"topP": 0.8,
"topK": 40,
"systemPrompt": "Você é um assistente ultra-rápido. Responda de forma concisa, direta e objetiva. Máximo 2-3 frases.",
"userMessage": "{{quick_question}}"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Resposta Flash",
"parameters": {
"message": "⚡ {{langchain_1.content}}\n\n⏱️ Respondido em {{langchain_1.executionTime}}ms"
}
}
},
{
"id": "input_2",
"type": "input",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Continuar?",
"parameters": {
"message": "Outra pergunta? (SIM/NÃO)",
"variable": "continue"
}
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Verificar",
"parameters": {
"variable": "continue",
"operator": "equals",
"value": "SIM"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "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": "input_2" },
{ "source": "input_2", "target": "condition_1" },
{ "source": "condition_1", "target": "input_1", "label": "true" },
{ "source": "condition_1", "target": "end_1", "label": "false" }
]
}
Saída esperada:
Sistema: ⚡ Assistente Ultra-Rápido
Faça sua pergunta:
Usuário: Qual a capital da França?
Sistema: ⚡ A capital da França é Paris, localizada no norte do país às margens do rio Sena.
⏱️ Respondido em 847ms
Sistema: Outra pergunta? (SIM/NÃO)
Usuário: SIM
Sistema: Faça sua pergunta:
Usuário: Quanto é 15% de 230?
Sistema: ⚡ 15% de 230 é 34,5.
⏱️ Respondido em 623ms
Exemplo 2: Análise de Documentos Longos com Gemini Pro 1.5
Objetivo: Processar e resumir documentos muito longos aproveitando 1M tokens de contexto.
JSON para Importar
{
"name": "Análise de Documento Longo - Gemini Pro 1.5",
"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": "Solicitar Documento",
"parameters": {
"message": "📚 Análise de Documento Longo\n\nCole o documento completo (suporta até 1M tokens = ~750K palavras):"
}
}
},
{
"id": "input_1",
"type": "input",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Capturar Documento",
"parameters": {
"message": "Aguardando documento...",
"variable": "document_text"
}
}
},
{
"id": "input_2",
"type": "input",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Pergunta sobre Doc",
"parameters": {
"message": "O que você quer saber sobre este documento?\n\nExemplos:\n- Faça um resumo executivo\n- Liste os principais pontos\n- Identifique riscos e oportunidades\n- Extraia dados específicos",
"variable": "analysis_question"
}
}
},
{
"id": "langchain_1",
"type": "langchain_chat",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Analisar com Gemini Pro",
"parameters": {
"provider": "google",
"model": "gemini-1.5-pro",
"apiKey": "{{config.google_ai_key}}",
"maxTokens": 2048,
"temperature": 0.3,
"topP": 0.8,
"topK": 40,
"systemPrompt": "Você é um analista especializado em processar e resumir documentos longos. Seja preciso, cite trechos relevantes e forneça insights acionáveis.",
"userMessage": "Documento:\n\n{{document_text}}\n\n---\n\nPergunta: {{analysis_question}}"
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Apresentar Análise",
"parameters": {
"message": "📊 ANÁLISE DO DOCUMENTO\n━━━━━━━━━━━━━━━━━━━━━\n\n{{langchain_1.content}}\n\n━━━━━━━━━━━━━━━━━━━━━\n📈 Tokens processados: {{langchain_1.tokensUsed}}\n⏱️ Tempo de análise: {{langchain_1.executionTime}}ms"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "message_1" },
{ "source": "message_1", "target": "input_1" },
{ "source": "input_1", "target": "input_2" },
{ "source": "input_2", "target": "langchain_1" },
{ "source": "langchain_1", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: 📚 Análise de Documento Longo
Cole o documento completo (suporta até 1M tokens = ~750K palavras):
Usuário: [cola documento de 50 páginas]
Sistema: O que você quer saber sobre este documento?
Usuário: Faça um resumo executivo de 5 pontos principais
Sistema: 📊 ANÁLISE DO DOCUMENTO
━━━━━━━━━━━━━━━━━━━━━
**RESUMO EXECUTIVO - 5 PONTOS PRINCIPAIS:**
1. **Objetivo do Projeto**: O documento apresenta uma proposta de modernização da infraestrutura de TI com investimento estimado de R$ 2,5 milhões ao longo de 18 meses...
2. **Principais Benefícios**: Redução de 40% nos custos operacionais, aumento de 60% na velocidade de processamento e melhoria de 85% na segurança de dados...
3. **Riscos Identificados**: Três riscos críticos foram mapeados: dependência de fornecedores únicos (médio impacto), período de migração de 3 meses (alto impacto)...
4. **Cronograma**: Execução planejada em 4 fases: Fase 1 (meses 1-4) análise e preparação, Fase 2 (meses 5-9) implementação piloto...
5. **Aprovações Necessárias**: Requer aprovação do board executivo (até 30 dias), compliance legal (60 dias) e orçamento adicional de contingência de 15%...
━━━━━━━━━━━━━━━━━━━━━
📈 Tokens processados: 15.847
⏱️ Tempo de análise: 6234ms
Resposta do Node
{
"success": true,
"data": {
"content": "Texto da resposta do Gemini",
"raw": {
"candidates": [
{
"content": {
"parts": [
{
"text": "Texto da resposta do Gemini"
}
],
"role": "model"
},
"finishReason": "STOP"
}
],
"usageMetadata": {
"promptTokenCount": 125,
"candidatesTokenCount": 340,
"totalTokenCount": 465
}
}
},
"tokensUsed": 465,
"executionTime": 1845,
"logs": ["LangChain Chat completed with google/gemini-1.5-flash"]
}
Boas Práticas
✅ SIM:
- Use Gemini Flash para tarefas rápidas e alto volume (melhor custo-benefício)
- Use Gemini Pro 1.5 para análises profundas e documentos longos
- Aproveite 1M tokens de contexto para processar livros inteiros
- Use topK (padrão 40) para controlar diversidade de respostas
- Configure topP entre 0.8-0.95 para respostas balanceadas
- Use temperatura baixa (0.2-0.4) para análises técnicas
- Considere grounding com Google Search para informações atualizadas
❌ NÃO:
- Não use Gemini Pro quando Flash for suficiente (Pro é mais caro)
- Não espere multimodalidade completa sem enviar imagens no formato correto
- Não compare diretamente com GPT/Claude (cada um tem forças diferentes)
- Não use maxTokens muito alto se não precisar (gasta mais créditos)
- Não ignore erros de quota (Google tem limites por minuto/dia)
Dicas
💡 Dica 1 - Modelos: Flash é 10-20x mais barato que Pro. Use Pro só quando precisar de análise profunda ou contexto gigante.
💡 Dica 2 - Contexto: 1M tokens = ~750K palavras = ~1500 páginas. Você pode enviar livros completos!
💡 Dica 3 - Velocidade: Flash responde em <1s na maioria dos casos. Ideal para chatbots de alta frequência.
💡 Dica 4 - Grounding: Gemini pode usar Google Search para informações atualizadas (requer configuração adicional).
💡 Dica 5 - API Key: Obtenha em https://makersuite.google.com/app/apikey - é grátis com generosos limites.
Próximos Nodes
→ LANGCHAIN_CHAT_OPENAI - Chat com GPT → LANGCHAIN_CHAT_ANTHROPIC - Chat com Claude → LANGCHAIN_CHAT_COHERE - Chat com Cohere → CONDITION - Lógica condicional