Este projeto é um mini console interativo em Jupyter Notebook para classificar mensagens típicas de um escritório (estilo WhatsApp) usando uma LLM via OpenRouter.
Você digita uma mensagem e o notebook devolve um JSON enxuto com:
classe:Processual|Financeiro|Comercial|Invalidajustificativa: explicação curta do porquê aquela classe foi escolhida
Eu mantive a saída intencionalmente minimalista pra ficar direta e fácil de integrar em pipeline.
Em escritórios e departamentos jurídicos, chegam mensagens o tempo todo e nem tudo é “pesquisa jurídica”. Esse console faz a triagem inicial, separando o que é:
- Processual: prazos, intimações, audiências, andamento, petições, movimentações
- Financeiro: honorários, boletos, pagamentos, parcelamento, nota fiscal, custos
- Comercial: proposta, contratação, contrato, escopo, agendamento de reunião
- Invalida: mensagem sem conteúdo útil (vazia, só emoji, “kkkk”, ponto, etc.)
Exemplo:
{
"classe": "Financeiro",
"justificativa": "A mensagem pergunta sobre percentual de honorários, indicando tema de pagamento/valores."
}-
Code.ipynb
Notebook principal com:- leitura da chave do
.env - chamada à API do OpenRouter
- prompt com contrato de JSON mínimo
- exemplos (few-shot) para estabilizar a classificação
- parse robusto e validações
- modo interativo (console)
Arquivo com a chave do OpenRouter (não deve ser versionado).
- leitura da chave do
- Python 3.10+ (funciona em 3.11/3.12 também)
- Jupyter Notebook ou JupyterLab
- Bibliotecas:
requestspython-dotenv
Instalação:
pip install requests python-dotenvPara facilitar revisão, foi disponibilizada uma chave temporária com limite de US$0 (sem custo) válida por até 7 dias.
- Entre na pasta do projeto:
cd "/caminho/do/projeto"- Rode o Jupyter:
jupyter notebook-
Abra
Code.ipynbe execute as células. -
Quando o console iniciar, digite mensagens e veja o JSON retornar.
Para sair: sair
Processual
saiu intimação no proc 1234? qual o prazo?
Financeiro
os honorários ficam em 20 por cento?
Comercial
vocês atendem contrato mensal? manda proposta
Invalida
🤔kkkkk.
- Entrada: você digita uma mensagem
- Prompt: o modelo é instruído a:
- escolher uma classe entre as quatro
- escrever uma justificativa curta
- responder somente JSON
- Chamada: o notebook envia
system + userpara o endpoint de chat completions do OpenRouter - Parse: tenta
json.loads; se vier texto a mais, extrai o bloco{...} - Validação:
- garante que
classeestá nas categorias permitidas - garante que
justificativaé texto
- garante que
- Saída: imprime o JSON final no console
- log em
.jsonlcom timestamp - modo “batch” (lista de mensagens)
- API local (FastAPI) para integração com frontend
- RAG para respostas com base documental (quando houver corpus)