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:
- RAG Nativo: Retrieval Augmented Generation integrado nativamente
- Multilíngue Expert: Suporte premium para 100+ idiomas incluindo pt-BR
- Enterprise Ready: Focado em casos de uso corporativo
- Document Search: Busca semântica em documentos integrada
- Embeddings: Integração nativa com Cohere Embeddings
- Compliance: Opções self-hosted e dados não usados em treinamento
- Custo-Benefício: Command Light é extremamente econômico
Como funciona internamente?
Quando o LANGCHAIN_CHAT_COHERE é executado, o sistema:
- Valida Configuração: Verifica provider (cohere), model e apiKey
- Monta Payload: Estrutura com message, preamble (system), chat_history
- Configura Parâmetros: temperature, max_tokens, p (topP), k (topK), stop_sequences
- Envia Request: POST para https://api.cohere.ai/v1/chat
- Processa Resposta: Extrai campo text da resposta
- Calcula Tokens: Soma meta.tokens.input_tokens + output_tokens
- 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
- Suporte Multilíngue: "Atendimento em 100+ idiomas com alta qualidade"
- RAG Empresarial: "Busca semântica em base de conhecimento corporativa"
- Document Q&A: "Perguntas e respostas sobre documentos internos"
- Classificação: "Categorização de tickets, emails, feedbacks"
- Summarização: "Resumos de reuniões, relatórios, documentos"
- Semantic Search: "Busca inteligente em catálogos de produtos"
- 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