Gerenciar finanças pessoais pode ser uma tarefa tediosa, especialmente quando se trata de categorizar centenas de transações. Neste post, exploraremos como utilizar modelos de linguagem, como o ChatGPT e LLMs locais, para automatizar esse processo e simplificar a organização de suas finanças. Acompanhe o passo a passo para implementar essa solução eficiente e otimizar seu controle financeiro.

O primeiro passo é extrair seus extratos bancários no formato OFX, um padrão amplamente suportado pelas instituições financeiras. Criamos um script em Python que utiliza a biblioteca `ofxparse` para processar esses arquivos e o `pandas` para organizar os dados em uma tabela. O script itera por cada extrato mensal, extraindo informações como data, valor, descrição e ID da transação. Este processo inicial nos fornece uma base de dados estruturada para trabalharmos com a IA.
Um detalhe importante para lidar com caracteres especiais ou codificação específica do seu banco é o parâmetro `encoding` na função `open`. Caso encontre problemas, pesquise por diferentes opções de encoding ou tente remover o parâmetro. Após a execução, teremos um DataFrame do pandas contendo todas as transações consolidadas. Para fins de privacidade, no exemplo demonstrado, os valores das transações foram substituídos por "1".
O código Python para essa etapa inclui a importação das bibliotecas necessárias (`ofxparse`, `pandas`, `os`, `datetime`), a criação de um DataFrame vazio, a iteração pelos arquivos OFX na pasta de extratos, a extração das transações e a conversão para um DataFrame do pandas. A conversão dos valores para float e das datas para o formato correto também é realizada.
A categorização manual de transações é a parte mais trabalhosa. Utilizando LLMs, podemos automatizar isso. A biblioteca `langchain` facilita a interação com modelos de linguagem, como o ChatGPT (via `langchain-OpenAI`) ou modelos hospedados na Grok (via `langchain-grok`). Também demonstramos como usar LLMs locais com o `llm-deploy`, que oferece maior controle e velocidade, ideal para projetos maiores. Lembre-se de instalar as bibliotecas necessárias: `langchain`, `langchain-OpenAI`, `langchain-grok`, `langchain-core`, `langchain-community`, `python-dotenv`, `pip install llm-deploy`.
Criamos um prompt para o modelo de linguagem, instruindo-o a atuar como um analista de dados em um projeto de limpeza de dados, com o objetivo de categorizar transações financeiras. Fornecemos uma lista de categorias predefinidas (e.g., Viagem, Alimentação, Saúde, Educação, etc.) e solicitamos que o modelo responda apenas com a categoria correspondente para cada transação. Para usar a Grok, crie uma chave de API no site deles e armazene-a em um arquivo `.env`. Para LLMs locais, utilize o `llm-deploy` para hospedar o modelo em sua máquina, configurando a URL base e a chave de acesso no script.
Com o Langchain, criamos uma cadeia que conecta o prompt ao modelo de linguagem. Em seguida, iteramos pelas transações, enviando as descrições para o modelo e armazenando as categorias retornadas em uma nova coluna no DataFrame. A utilização de LLMs locais com o `llm-deploy` permite o processamento em lote, enviando todas as transações de uma só vez, acelerando significativamente a categorização. Após essa etapa, teremos um DataFrame completo com todas as transações categorizadas, pronto para ser utilizado em dashboards ou análises mais aprofundadas.
Lembre-se que o modelo pode cometer erros. Refine o prompt com instruções mais específicas para melhorar a precisão. Por exemplo, adicione exemplos de transações e suas respectivas categorias, ou regras para lidar com termos específicos. Com o tempo e ajustes, você terá um sistema de categorização automatizado e eficiente para suas finanças pessoais.
Finalmente, para visualizar e analisar os dados categorizados, utilizamos a biblioteca `streamlit`. Criamos um dashboard simples com filtros para mês e categoria, exibindo as transações filtradas em uma tabela e um gráfico de pizza gerado com o `plotly.express`. O código do dashboard inclui a importação das bibliotecas `streamlit` e `plotly.express`, a definição do layout da página, a criação dos filtros, a aplicação dos filtros ao DataFrame e a exibição da tabela e do gráfico. Este dashboard permite uma visualização interativa dos seus gastos, facilitando a identificação de padrões e a tomada de decisões financeiras mais informadas.
O script Python para o dashboard inclui a criação de filtros interativos para mês e categoria, permitindo ao usuário selecionar o período e as categorias que deseja visualizar. Os dados filtrados são exibidos em uma tabela e em um gráfico de pizza, fornecendo uma visão clara e concisa dos gastos. Este dashboard interativo simplifica a análise das finanças pessoais e facilita o acompanhamento do orçamento.