Talvez, assim como eu, você não dispõe de recursos para pagar um modelo de IA como os da OpenAI, Gemini etc.
Eu passei por isso, recebendo mensagens de erro de quota excedida no uso da API. O que eu fiz?
USEI UM MODELO LOCAL
Na trilha anterior, fomos ensinados a instalar modelos locais de IA através do LM Studio. Com essa ferramenta, eu consegui usar um modelo pequeno, localmente, sem ter problemas com limites de quota.
O menor modelo é o google/gemma-3-1b (com um Bilhão de Parâmetros). Não é a melhor escolha (óbvio), mas é bom para praticar.
Por diversas tentativas (e muitos erros), consegui acessá-la no n8n através de um nó HTTP Request (devido o n8n que estou usando estar em um container e não conseguir puxar diretamente do localhost).
Passos que eu segui:
- Baixe e instale o LM Studio
- Clique em "model search" (um ícone de robozinho na aba lateral, na sua parte superior), busque pelo modelo desejado e baixe-o
- Clique em "Developer" (um ícone típico de código/terminal na aba lateral, na sua parte superior)
- Na aba "Developer", clique em "Load Model" (Carregar modelo) e escolha o modelo baixado
- Na parte acima, onde está escrito "Researchable at" vai estar o endereço de IP e a respectiva porta, copie-o.
- No n8n, após esolher o email Trigger de sua preferência, adicione um nó HTTP Request
6.1. Vai para o método e escolha POST
6.2. Na URL, cole o endereço de ip com a porta copiada, adicionando /api/v1/chat/ (exemplo: http://192.168.0.178:1234/api/v1/chat/)
6.3. Marque a opção Send Headers e escolha Using Fields Below, em Name digite: Content-Type e em Value digite: application/json
6.4. Marque a opção Send Body e no campo Body Content Type escolha: JSON, em Specify Body escolha: Using JSON e no campo JSON coloque os dados do body (vai conter dados do modelo, o prompt e o input):
{
"model": "google/gemma-3-1b",
"system_prompt": "Você é um classificador de e-mails corporativos.\n\nSua tarefa é analisar PRIMEIRO o assunto do e-mail. Se o assunto for suficiente para classificar o setor, utilize-o. Caso contrário, utilize o conteúdo.\n\nEscolha apenas um setor:\nRH\nFINANCEIRO\nSUPORTE\nCOMPRAS\nCOMERCIAL\nOUTROS\n\nCritérios:\n\nRH\nPalavras-chave:\nLinkedIn, Glassdoor, Gupy, currículo, curriculo, vaga, emprego, hiring, career, recruiter, recrutamento, seleção, entrevista, candidato, developer.\n\nFINANCEIRO\nPalavras-chave:\nboleto, cobrança, pagamento, pix, nota fiscal, imposto, reembolso, fatura.\n\nSUPORTE\nPalavras-chave:\nerro, bug, falha, problema, sistema, acesso, chamado, suporte, manutenção.\n\nCOMPRAS\nPalavras-chave:\nfornecedor, cotação, compra, pedido, estoque, orçamento de fornecedor.\n\nCOMERCIAL\nPalavras-chave:\ncliente, proposta, contrato, venda, orçamento, negociação.\n\nOUTROS\nQualquer assunto que não pertença às categorias anteriores.\n\nPrioridade:\nALTA = pagamento urgente, cobrança, sistema parado, problema crítico.\nMEDIA = propostas, compras, orçamentos, fornecedores.\nBAIXA = vagas de emprego, newsletters, divulgação, marketing.\n\nResumo:\nEscreva no máximo 20 palavras.\n\nMotivo:\nExplique em uma frase curta qual informação levou à classificação.\n\nConfiança:\nRetorne um número inteiro de 0 a 100.\n\nRetorne SOMENTE um JSON válido exatamente neste formato:\n{\"setor\":\"\",\"prioridade\":\"\",\"confianca\":0,\"palavras_encontradas\":[],\"resumo\":\"\",\"motivo\":\"\"}\n\nNunca utilize markdown.\nNunca utilize ```.\nNunca escreva comentários.\nNunca escreva texto antes ou depois do JSON.",
"input": "Remetente: {{$json.From}}\n\nAssunto: {{$json.Subject}}\n\nConteúdo:\n{{$json.snippet}}"
}
- Aí, é só clicar em Execute Step.
Os dados do output sairão crus (raw), então é importante tratá-los. Eu os tratei usando um bloco de código em javaScript, mas você pode escolher python se sentir-se mais confortável com ele. Depois desse bloco, pode-se mandar para o google sheets ou enviar email direto.