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:
- Raciocínio Avançado: Análises complexas e respostas bem fundamentadas
- Contexto Extenso: Suporta até 200K tokens de contexto (Claude 3)
- Segurança Built-in: Modelo treinado com foco em respostas seguras e éticas
- Análise de Documentos: Ideal para processar documentos longos
- Menos Alucinações: Respostas mais precisas e honestas sobre limitações
- Português Nativo: Excelente compreensão de português brasileiro
- Tarefas Complexas: Superior em programação, matemática e análise crítica
Como funciona internamente?
Quando o LANGCHAIN_CHAT_ANTHROPIC é executado, o sistema:
- Valida Configuração: Verifica se provider (anthropic), model e apiKey estão configurados
- Constrói Mensagens: Separa system prompt (campo dedicado) das user messages
- Configura Parâmetros: Define maxTokens (obrigatório), temperature, topP, topK e stopSequences
- Monta Payload: Cria estrutura específica da API Anthropic com campo "system" separado
- Envia Request: POST para https://api.anthropic.com/v1/messages com header x-api-key
- Processa Resposta: Extrai content[0].text do formato específico da Anthropic
- Calcula Tokens: Soma input_tokens + output_tokens do campo usage
- Retorna Resultado: Devolve conteúdo, tokens usados e tempo de execução
- 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
- Análise Jurídica: "Analisar contratos e identificar cláusulas problemáticas"
- Revisão de Código: "Review detalhado de código com sugestões de melhoria"
- Pesquisa Acadêmica: "Sintetizar papers científicos e extrair conclusões"
- Análise Financeira: "Avaliar relatórios financeiros e identificar riscos"
- Tutoria Avançada: "Explicar conceitos complexos passo a passo"
- Redação Técnica: "Criar documentação técnica detalhada e precisa"
- 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