Pular para conteúdo

LANGCHAIN_CHAT_COHERE - Chat com Cohere Command via LangChain

O que é este Node?

O LANGCHAIN_CHAT_COHERE é o node responsável por integrar os modelos Cohere Command (Command, Command Light, Command R) focados em conversação empresarial, suporte multilíngue avançado e busca em documentos com RAG nativo.

Por que este Node existe?

Cohere é especializado em aplicações empresariais e multilíngues. O LANGCHAIN_CHAT_COHERE existe para:

  1. RAG Nativo: Retrieval Augmented Generation integrado nativamente
  2. Multilíngue Expert: Suporte premium para 100+ idiomas incluindo pt-BR
  3. Enterprise Ready: Focado em casos de uso corporativo
  4. Document Search: Busca semântica em documentos integrada
  5. Embeddings: Integração nativa com Cohere Embeddings
  6. Compliance: Opções self-hosted e dados não usados em treinamento
  7. Custo-Benefício: Command Light é extremamente econômico

Como funciona internamente?

Quando o LANGCHAIN_CHAT_COHERE é executado, o sistema:

  1. Valida Configuração: Verifica provider (cohere), model e apiKey
  2. Monta Payload: Estrutura com message, preamble (system), chat_history
  3. Configura Parâmetros: temperature, max_tokens, p (topP), k (topK), stop_sequences
  4. Envia Request: POST para https://api.cohere.ai/v1/chat
  5. Processa Resposta: Extrai campo text da resposta
  6. Calcula Tokens: Soma meta.tokens.input_tokens + output_tokens
  7. Retorna Resultado: Conteúdo, tokens e tempo de execução

Código interno (langchain-chat-executor.service.ts:423-450):

private async executeCohere(data: LangChainChatNodeData, prompt: string): Promise<any> {
  const baseUrl = 'https://api.cohere.ai/v1';

  const payload: any = {
    model: data.model,
    message: data.userMessage || prompt,
    temperature: data.temperature || 0.7,
    max_tokens: data.maxTokens || 1000,
    p: data.topP,
    k: data.topK,
    stop_sequences: data.stopSequences,
    chat_history: []
  };

  if (data.systemPrompt) {
    payload.preamble = data.systemPrompt;
  }

  const response: AxiosResponse = await axios.post(`${baseUrl}/chat`, payload, {
    headers: {
      'Authorization': `Bearer ${data.apiKey}`,
      'Content-Type': 'application/json'
    },
    timeout: data.timeout || 30000
  });

  return response.data;
}

Quando você DEVE usar este Node?

Use LANGCHAIN_CHAT_COHERE para aplicações empresariais multilíngues e RAG:

Casos de uso

  1. Suporte Multilíngue: "Atendimento em 100+ idiomas com alta qualidade"
  2. RAG Empresarial: "Busca semântica em base de conhecimento corporativa"
  3. Document Q&A: "Perguntas e respostas sobre documentos internos"
  4. Classificação: "Categorização de tickets, emails, feedbacks"
  5. Summarização: "Resumos de reuniões, relatórios, documentos"
  6. Semantic Search: "Busca inteligente em catálogos de produtos"
  7. Compliance: "Soluções que exigem self-hosting ou privacy"

Quando NÃO usar LANGCHAIN_CHAT_COHERE

  • Raciocínio Complexo: GPT-4/Claude Opus são superiores
  • Geração Criativa: OpenAI/Anthropic têm melhor criatividade
  • Function Calling: OpenAI tem implementação mais robusta
  • Custo Mínimo: Para tarefas básicas, Gemini Flash pode ser mais barato

Parâmetros

Campo Tipo Obrigatório Descrição
provider string Sim Deve ser "cohere"
model string Sim command, command-light, command-r, command-r-plus
apiKey string Sim Chave API do Cohere
systemPrompt string Não Preamble - contexto do assistente
userMessage string Não Message - mensagem do usuário
temperature number Não Aleatoriedade (0-2, padrão: 0.7)
maxTokens number Não Limite de tokens (padrão: 1000)
topP number Não Nucleus sampling (campo: p)
topK number Não Top-K sampling (campo: k)
stopSequences array Não Sequências de parada (stop_sequences)
timeout number Não Timeout em ms (padrão: 30000)

Modelos disponíveis: - command-r-plus: Mais avançado, RAG otimizado, 128K contexto - command-r: Balanceado, bom para produção, 128K contexto - command: Uso geral, 4K contexto - command-light: Ultra-rápido e barato, 4K contexto

Exemplo: Busca Semântica em Base de Conhecimento

Objetivo: Responder perguntas usando documentos corporativos com RAG.

JSON para Importar

{
  "name": "Q&A com Base de Conhecimento - Cohere",
  "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": "📚 Sistema de Q&A Empresarial\n\nFaça perguntas sobre nossas políticas, processos e documentação interna:"
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Capturar Pergunta",
        "parameters": {
          "message": "Digite sua pergunta:",
          "variable": "user_question"
        }
      }
    },
    {
      "id": "langchain_1",
      "type": "langchain_chat",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Buscar com Cohere",
        "parameters": {
          "provider": "cohere",
          "model": "command-r-plus",
          "apiKey": "{{config.cohere_key}}",
          "maxTokens": 512,
          "temperature": 0.3,
          "systemPrompt": "Você é um assistente de Q&A empresarial. Base sua resposta nos documentos fornecidos. Se a informação não estiver nos documentos, diga que não sabe.\n\nDocumentos da empresa:\n\n**Política de Férias:**\n- Colaboradores têm direito a 30 dias de férias após 12 meses de trabalho\n- Férias podem ser divididas em até 3 períodos\n- Deve-se solicitar com 30 dias de antecedência\n- Não pode iniciar 2 dias antes de feriado\n\n**Política de Home Office:**\n- Até 2 dias por semana de home office\n- Requer aprovação do gestor direto\n- Equipamentos fornecidos pela empresa\n- Conectividade mínima de 50Mbps\n\n**Política de Benefícios:**\n- Vale refeição: R$ 35/dia\n- Vale transporte: conforme necessidade\n- Plano de saúde: coparticipação 30%\n- Plano odontológico: coparticipação 20%",
          "userMessage": "{{user_question}}"
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Responder",
        "parameters": {
          "message": "💡 RESPOSTA:\n\n{{langchain_1.content}}\n\n---\n📊 Tokens: {{langchain_1.tokensUsed}} | ⏱️ {{langchain_1.executionTime}}ms"
        }
      }
    },
    {
      "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: 📚 Sistema de Q&A Empresarial

Faça perguntas sobre nossas políticas, processos e documentação interna:
Sistema: Digite sua pergunta:
Usuário: Posso dividir minhas férias?
Sistema: 💡 RESPOSTA:

Sim! De acordo com nossa Política de Férias, você pode dividir suas férias em até 3 períodos. Lembre-se que você tem direito a 30 dias de férias após completar 12 meses de trabalho, e precisa solicitar com 30 dias de antecedência. Também é importante notar que as férias não podem iniciar 2 dias antes de feriado.

---
📊 Tokens: 156 | ⏱️ 1234ms

Resposta do Node

{
  "success": true,
  "data": {
    "content": "Texto da resposta do Cohere",
    "raw": {
      "text": "Texto da resposta do Cohere",
      "generation_id": "abc-123-def",
      "finish_reason": "COMPLETE",
      "meta": {
        "tokens": {
          "input_tokens": 156,
          "output_tokens": 89
        }
      }
    }
  },
  "tokensUsed": 245,
  "executionTime": 1456,
  "logs": ["LangChain Chat completed with cohere/command-r-plus"]
}

Boas Práticas

SIM:

  • Use Command-R-Plus para RAG e busca semântica
  • Use Command-Light para alto volume e respostas rápidas
  • Aproveite suporte multilíngue para mercados internacionais
  • Use preamble (systemPrompt) para fornecer contexto empresarial
  • Configure temperature baixa (0.2-0.4) para respostas baseadas em docs

NÃO:

  • Não use para raciocínio ultra-complexo (prefira GPT-4/Claude)
  • Não ignore o campo preamble (essencial para RAG)
  • Não use modelos pesados se Light for suficiente

Dicas

💡 Dica 1: Cohere é excelente para RAG. Use para Q&A sobre documentos empresariais.

💡 Dica 2: Command-Light é até 10x mais barato que Command. Use para tarefas simples.

💡 Dica 3: Cohere tem APIs de Embeddings e Rerank integradas - ótimo para search.

Próximos Nodes

LANGCHAIN_CHAT_OPENAI - Chat com GPT → LANGCHAIN_CHAT_ANTHROPIC - Chat com Claude