Pular para conteúdo

LANGCHAIN_CHAT_ANTHROPIC - Chat com Claude via LangChain

O que é este Node?

O LANGCHAIN_CHAT_ANTHROPIC é o node responsável por integrar os modelos Claude da Anthropic (Claude 3 Opus, Sonnet, Haiku) através do framework LangChain, oferecendo conversas com alta capacidade de raciocínio, análise profunda e respostas contextualizadas.

Por que este Node existe?

Claude da Anthropic é conhecido por respostas mais detalhadas e raciocínio superior. O LANGCHAIN_CHAT_ANTHROPIC existe para:

  1. Raciocínio Avançado: Análises complexas e respostas bem fundamentadas
  2. Contexto Extenso: Suporta até 200K tokens de contexto (Claude 3)
  3. Segurança Built-in: Modelo treinado com foco em respostas seguras e éticas
  4. Análise de Documentos: Ideal para processar documentos longos
  5. Menos Alucinações: Respostas mais precisas e honestas sobre limitações
  6. Português Nativo: Excelente compreensão de português brasileiro
  7. Tarefas Complexas: Superior em programação, matemática e análise crítica

Como funciona internamente?

Quando o LANGCHAIN_CHAT_ANTHROPIC é executado, o sistema:

  1. Valida Configuração: Verifica se provider (anthropic), model e apiKey estão configurados
  2. Constrói Mensagens: Separa system prompt (campo dedicado) das user messages
  3. Configura Parâmetros: Define maxTokens (obrigatório), temperature, topP, topK e stopSequences
  4. Monta Payload: Cria estrutura específica da API Anthropic com campo "system" separado
  5. Envia Request: POST para https://api.anthropic.com/v1/messages com header x-api-key
  6. Processa Resposta: Extrai content[0].text do formato específico da Anthropic
  7. Calcula Tokens: Soma input_tokens + output_tokens do campo usage
  8. Retorna Resultado: Devolve conteúdo, tokens usados e tempo de execução
  9. Se erro 401: Retorna erro de autenticação inválida

Código interno (langchain-chat-executor.service.ts:354-383):

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

  const payload: any = {
    model: data.model,
    max_tokens: data.maxTokens || 1000,
    temperature: data.temperature || 0.7,
    top_p: data.topP,
    top_k: data.topK,
    stop_sequences: data.stopSequences,
    messages: [
      { role: 'user', content: data.userMessage || prompt }
    ]
  };

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

  const response: AxiosResponse = await axios.post(`${baseUrl}/messages`, payload, {
    headers: {
      'x-api-key': data.apiKey,
      'Content-Type': 'application/json',
      'anthropic-version': '2023-06-01'
    },
    timeout: data.timeout || 30000
  });

  return response.data;
}

Quando você DEVE usar este Node?

Use LANGCHAIN_CHAT_ANTHROPIC sempre que precisar de análise profunda e raciocínio complexo com Claude:

Casos de uso

  1. Análise Jurídica: "Analisar contratos e identificar cláusulas problemáticas"
  2. Revisão de Código: "Review detalhado de código com sugestões de melhoria"
  3. Pesquisa Acadêmica: "Sintetizar papers científicos e extrair conclusões"
  4. Análise Financeira: "Avaliar relatórios financeiros e identificar riscos"
  5. Tutoria Avançada: "Explicar conceitos complexos passo a passo"
  6. Redação Técnica: "Criar documentação técnica detalhada e precisa"
  7. Análise de Dados: "Interpretar datasets e gerar insights profundos"

Quando NÃO usar LANGCHAIN_CHAT_ANTHROPIC

  • Tarefas Simples: Use GPT-3.5-turbo para respostas básicas (mais barato)
  • Imagens: Claude ainda não suporta geração de imagens (use DALL-E)
  • Velocidade Crítica: Haiku é rápido, mas GPT-3.5 ainda é mais rápido
  • Web Search: Claude não tem acesso à internet (use Bing/Google tools)

Parâmetros Detalhados

provider (string, obrigatório)

O que é: O provedor de IA. Para este node, deve ser "anthropic".

Padrão: N/A (obrigatório)

model (string, obrigatório)

O que é: Modelo Claude a usar: claude-3-opus-20240229, claude-3-sonnet-20240229, claude-3-haiku-20240307.

Padrão: N/A (obrigatório)

Modelos disponíveis: - claude-3-opus: Mais inteligente, análises profundas (200K contexto) - claude-3-sonnet: Balanceado, bom custo-benefício (200K contexto) - claude-3-haiku: Mais rápido e econômico (200K contexto) - claude-2.1: Versão anterior (200K contexto) - claude-instant-1.2: Rápido e barato (100K contexto)

apiKey (string, obrigatório)

O que é: Chave API da Anthropic. Obtida em https://console.anthropic.com/

Padrão: N/A (obrigatório)

maxTokens (number, obrigatório)

O que é: Número máximo de tokens na resposta. OBRIGATÓRIO para Anthropic (diferente de OpenAI).

Padrão: 1000

Importante: Anthropic exige que você especifique maxTokens. Recomendações: - Respostas curtas: 256-512 - Respostas médias: 1024-2048 - Análises longas: 4096-8192 - Documentos completos: 16000+

systemPrompt (string, opcional)

O que é: Instrução de sistema. Na Anthropic, vai para o campo "system" dedicado (não na lista de mensagens).

Padrão: Nenhum

temperature (number, opcional)

O que é: Controla aleatoriedade (0-1 na Anthropic, diferente de OpenAI que vai até 2).

Padrão: 0.7

topP (number, opcional)

O que é: Nucleus sampling. Use temperature OU topP, não ambos.

Padrão: N/A

topK (number, opcional)

O que é: Limita amostragem aos K tokens mais prováveis. Exclusivo da Anthropic.

Padrão: N/A

stopSequences (array, opcional)

O que é: Sequências que fazem o modelo parar de gerar.

Padrão: Nenhum

Parâmetros

Campo Tipo Obrigatório Descrição
provider string Sim Deve ser "anthropic"
model string Sim claude-3-opus, sonnet, haiku, etc
apiKey string Sim Chave API da Anthropic
maxTokens number Sim Limite de tokens (obrigatório na Anthropic)
systemPrompt string Não Instrução de sistema
userMessage string Não Mensagem do usuário
temperature number Não Aleatoriedade (0-1, padrão: 0.7)
topP number Não Nucleus sampling
topK number Não Limit superior de tokens (exclusivo Anthropic)
stopSequences array Não Sequências de parada
timeout number Não Timeout em ms (padrão: 30000)

Exemplo 1: Análise de Contrato com Claude Opus

Objetivo: Analisar um contrato e identificar cláusulas problemáticas usando o modelo mais avançado.

JSON para Importar

{
  "name": "Análise Jurídica com Claude Opus",
  "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 Contrato",
        "parameters": {
          "message": "📄 Análise Jurídica com Claude Opus\n\nPor favor, cole o texto do contrato que deseja analisar:"
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Capturar Contrato",
        "parameters": {
          "message": "Aguardando texto do contrato...",
          "variable": "contract_text"
        }
      }
    },
    {
      "id": "langchain_1",
      "type": "langchain_chat",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Analisar com Claude Opus",
        "parameters": {
          "provider": "anthropic",
          "model": "claude-3-opus-20240229",
          "apiKey": "{{config.anthropic_key}}",
          "maxTokens": 4096,
          "temperature": 0.2,
          "systemPrompt": "Você é um advogado especialista em análise de contratos. Analise o contrato fornecido e:\n1. Identifique cláusulas problemáticas ou abusivas\n2. Destaque riscos legais\n3. Sugira pontos que devem ser negociados\n4. Avalie o grau de risco geral (baixo/médio/alto)\n\nSeja preciso, objetivo e cite as cláusulas específicas.",
          "userMessage": "Contrato para análise:\n\n{{contract_text}}"
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Apresentar Análise",
        "parameters": {
          "message": "⚖️ ANÁLISE JURÍDICA COMPLETA\n━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n{{langchain_1.content}}\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━\n📊 Tokens utilizados: {{langchain_1.tokensUsed}}\n⏱️ Tempo de análise: {{langchain_1.executionTime}}ms\n\n⚠️ Esta é uma análise automatizada. Consulte um advogado para decisões importantes."
        }
      }
    },
    {
      "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: 📄 Análise Jurídica com Claude Opus

Por favor, cole o texto do contrato que deseja analisar:
Sistema: Aguardando texto do contrato...
Usuário: [usuário cola texto do contrato]
Sistema: ⚖️ ANÁLISE JURÍDICA COMPLETA
━━━━━━━━━━━━━━━━━━━━━━━━━━

**ANÁLISE DO CONTRATO - GRAU DE RISCO: MÉDIO-ALTO**

**1. CLÁUSULAS PROBLEMÁTICAS IDENTIFICADAS:**

**Cláusula 5.2 - Renovação Automática:**
"O contrato será renovado automaticamente por período indeterminado, salvo manifestação expressa com 90 dias de antecedência."

⚠️ PROBLEMA: Prazo de 90 dias é excessivo. O CDC estabelece que em contratos de adesão, o prazo razoável é de 30 dias. Esta cláusula pode ser considerada abusiva.

**Cláusula 8.1 - Multa Rescisória:**
"Em caso de rescisão antecipada, o contratante pagará multa de 100% do valor total do contrato."

⚠️ PROBLEMA GRAVE: Multa de 100% é desproporcional. Jurisprudência estabelece limite de 10-20%. Alta chance de ser questionada judicialmente.

**Cláusula 12.3 - Foro:**
"Fica eleito o foro da comarca de [cidade distante] para dirimir questões."

⚠️ PROBLEMA: Se você é consumidor ou empresa de pequeno porte, esta cláusula pode ser abusiva, aumentando custos de eventual litígio.

**2. RISCOS LEGAIS:**
- Dificuldade de rescisão sem penalidades abusivas
- Exposição financeira desproporcional
- Custos elevados para contestação judicial

**3. PONTOS PARA NEGOCIAÇÃO:**
✓ Reduzir prazo de notificação para 30 dias
✓ Limitar multa rescisória a 10-15% do valor
✓ Alterar foro para sua comarca
✓ Incluir cláusula de rescisão sem justa causa com multa reduzida

**4. RECOMENDAÇÃO:**
NÃO assine sem negociar as cláusulas 5.2, 8.1 e 12.3. Solicite parecer de advogado antes da assinatura.

━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Tokens utilizados: 3.847
⏱️ Tempo de análise: 5621ms

⚠️ Esta é uma análise automatizada. Consulte um advogado para decisões importantes.

Exemplo 2: Comparação de Modelos Claude

Objetivo: Demonstrar diferenças entre Opus (premium), Sonnet (balanceado) e Haiku (econômico).

JSON para Importar

{
  "name": "Comparação Claude: Opus vs Sonnet vs Haiku",
  "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 Complexa",
        "parameters": {
          "message": "Digite uma pergunta complexa (ex: explicação científica, análise filosófica):",
          "variable": "question"
        }
      }
    },
    {
      "id": "langchain_opus",
      "type": "langchain_chat",
      "position": { "x": 500, "y": 50 },
      "data": {
        "label": "Claude Opus",
        "parameters": {
          "provider": "anthropic",
          "model": "claude-3-opus-20240229",
          "apiKey": "{{config.anthropic_key}}",
          "maxTokens": 1024,
          "temperature": 0.7,
          "userMessage": "{{question}}"
        }
      }
    },
    {
      "id": "langchain_sonnet",
      "type": "langchain_chat",
      "position": { "x": 500, "y": 150 },
      "data": {
        "label": "Claude Sonnet",
        "parameters": {
          "provider": "anthropic",
          "model": "claude-3-sonnet-20240229",
          "apiKey": "{{config.anthropic_key}}",
          "maxTokens": 1024,
          "temperature": 0.7,
          "userMessage": "{{question}}"
        }
      }
    },
    {
      "id": "langchain_haiku",
      "type": "langchain_chat",
      "position": { "x": 500, "y": 250 },
      "data": {
        "label": "Claude Haiku",
        "parameters": {
          "provider": "anthropic",
          "model": "claude-3-haiku-20240307",
          "apiKey": "{{config.anthropic_key}}",
          "maxTokens": 1024,
          "temperature": 0.7,
          "userMessage": "{{question}}"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 150 },
      "data": {
        "label": "Comparar Respostas",
        "parameters": {
          "message": "📊 COMPARAÇÃO DOS MODELOS CLAUDE\n\n━━━━ 🥇 CLAUDE OPUS (Premium) ━━━━\n{{langchain_opus.content}}\n⏱️ {{langchain_opus.executionTime}}ms | 🔢 {{langchain_opus.tokensUsed}} tokens\n\n━━━━ 🥈 CLAUDE SONNET (Balanceado) ━━━━\n{{langchain_sonnet.content}}\n⏱️ {{langchain_sonnet.executionTime}}ms | 🔢 {{langchain_sonnet.tokensUsed}} tokens\n\n━━━━ 🥉 CLAUDE HAIKU (Econômico) ━━━━\n{{langchain_haiku.content}}\n⏱️ {{langchain_haiku.executionTime}}ms | 🔢 {{langchain_haiku.tokensUsed}} tokens"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 150 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "langchain_opus" },
    { "source": "input_1", "target": "langchain_sonnet" },
    { "source": "input_1", "target": "langchain_haiku" },
    { "source": "langchain_opus", "target": "message_1" },
    { "source": "langchain_sonnet", "target": "message_1" },
    { "source": "langchain_haiku", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Digite uma pergunta complexa:
Usuário: Explique a teoria da relatividade de Einstein e suas implicações práticas
Sistema: 📊 COMPARAÇÃO DOS MODELOS CLAUDE

━━━━ 🥇 CLAUDE OPUS (Premium) ━━━━
A Teoria da Relatividade de Einstein revolucionou nossa compreensão do universo através de dois pilares fundamentais...

[Resposta detalhada, profunda e bem estruturada com exemplos práticos e analogias]

⏱️ 4523ms | 🔢 856 tokens

━━━━ 🥈 CLAUDE SONNET (Balanceado) ━━━━
A Relatividade de Einstein abrange dois conceitos: Relatividade Especial e Geral...

[Resposta clara e completa, menos detalhada que Opus mas ainda muito boa]

⏱️ 2891ms | 🔢 645 tokens

━━━━ 🥉 CLAUDE HAIKU (Econômico) ━━━━
Einstein propôs que tempo e espaço são relativos...

[Resposta concisa e correta, menos elaborada mas factualmente precisa]

⏱️ 1456ms | 🔢 423 tokens

Resposta do Node

{
  "success": true,
  "data": {
    "content": "Texto da resposta do Claude",
    "raw": {
      "id": "msg_abc123",
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "Texto da resposta do Claude"
        }
      ],
      "model": "claude-3-opus-20240229",
      "stop_reason": "end_turn",
      "usage": {
        "input_tokens": 125,
        "output_tokens": 423
      }
    }
  },
  "tokensUsed": 548,
  "executionTime": 3456,
  "logs": ["LangChain Chat completed with anthropic/claude-3-opus-20240229"]
}

Boas Práticas

SIM:

  • SEMPRE especifique maxTokens (é obrigatório na Anthropic)
  • Use Claude Opus para análises críticas e tarefas complexas
  • Use Claude Sonnet para uso geral (melhor custo-benefício)
  • Use Claude Haiku para tarefas simples e onde velocidade importa
  • Aproveite o contexto de 200K tokens para documentos longos
  • Use temperature baixa (0.2-0.3) para análises técnicas
  • Confie mais nas respostas do Claude sobre suas limitações (menos alucinações)
  • Use topK (exclusivo da Anthropic) para controle fino de geração

NÃO:

  • Não esqueça de definir maxTokens (causará erro)
  • Não use temperature > 1.0 (Anthropic usa escala 0-1, não 0-2)
  • Não espere que Claude acesse a internet (não tem web search)
  • Não compare custos token-por-token com GPT (Claude é mais verbose mas também mais completo)
  • Não use Claude para tarefas triviais (use Haiku no mínimo)

Dicas

💡 Dica 1 - Modelos: Opus é ~15x mais caro que Haiku, mas a qualidade justifica para tarefas críticas. Sonnet é o sweet spot para 90% dos casos.

💡 Dica 2 - maxTokens: Estime generosamente. Claude tende a dar respostas mais completas. Para análises, use 2048-4096.

💡 Dica 3 - Contexto: Claude 3 suporta 200K tokens. Você pode enviar livros inteiros para análise!

💡 Dica 4 - Honestidade: Claude é treinado para admitir quando não sabe. Respostas "não tenho certeza" são mais confiáveis.

💡 Dica 5 - Português: Claude tem excelente compreensão de pt-BR. Melhor que GPT em nuances culturais brasileiras.

Próximos Nodes

LANGCHAIN_CHAT_OPENAI - Chat com GPT usando OpenAI → LANGCHAIN_CHAT_GOOGLE - Chat com Gemini usando Google AI → CONDITION - Criar lógica condicional → VARIABLE - Armazenar respostas