Este repositório contém o relatório e o código-fonte da aplicação do"Recomenda-aí Livros", um chatbot focado em recomendações literárias utilizando inteligência artificial generativa.
O projeto foi construído seguindo um fluxo de trabalho estruturado: Prototipação ➔ Desenvolvimento Local ➔ Versionamento ➔ Lançamento.
Optei por utilizar a API do Groq para a inferência do modelo, para trazer as seguintes vantagens:
-
Acesso a modelos robustos sem a necessidade de hardware caro (GPUs locais).
-
Processamento integralmente na nuvem.
-
Monitoramento simplificado de consumo dos tokens gerados.
Prompt Engineering.
Nota sobre limitações: O uso da API possui algumas restrições comuns em requisições (RPM/RPD) e quantidade de tokens (TPM), que foram monitoradas durante o desenvolvimento e foram estabelecidas pela própria plataforma do Groq.
A aplicação utiliza o Meta LLaMA 3.1 8B, um modelo grande de linguagem (LLM) ajustado por instruções e focado na otimização de diálogos multilíngues (text-in/text-out).
O modelo utiliza uma arquitetura similar aos Transformers clássicos, mas com três modificações cruciais que o tornam mais eficiente:
-
Decoder Only: Diferente da arquitetura Encoder-Decoder tradicional, utiliza apenas blocos de decodificação para um processo de geração autoregressiva (gerando e retroalimentando um token por vez).
-
Grouped Query Attention (GQA): Em substituição ao Multi-Head Attention, o GQA compartilha consultas entre as cabeças de atenção, otimizando muito o custo computacional, usando menos memória e acelerando a inferência.
-
Rotary Positional Embeddings (RoPE): Substitui o Positional Encoding tradicional para um melhor mapeamento da relação de distância entre os tokens.
O texto é construído iterativamente passando pelas seguintes etapas em 32 camadas do decoder:
- Entrada no Decoder ➔ Blocos de Atenção (GQA, Masked Attention) ➔ Adição de Resíduos e Normalização ➔ MLPs (Redes Feedforward) ➔ Saída Linear com função Softmax para calcular a probabilidade da próxima palavra. O processo se repete até o modelo gerar o token final (End of Sentence - EOS).
A interface e a integração do modelo foram construídas utilizando a biblioteca Streamlit em Python. Todo o comportamento especializado do chatbot foi alcançado por meio de manipulação de parâmetros e configuração de prompt dentro dessa aplicação.
- System Prompt: Foi instruído para o modelo generalista uma persona: atuar como um rigoroso especialista em livros. Ele foi configurado para redirecionar perguntas fora do tema, sempre responder em PT-BR e estruturar a saída num formato padronizado:
Título + Autor + Justificativa. - Ajuste de Hiperparâmetros:
- Quantidade Máxima de Tokens: Foi limitada inicialmente em 200 para garantir a objetividade da resposta e minimizar os custos de consumo da API.
- Temperatura: Ajustada inicialmente em 0.7 para encontrar o equilíbrio perfeito entre coerência (respostas precisas) e criatividade (recomendações originais).
A publicação da aplicação foi realizada no Streamlit Community Cloud, garantindo acesso fácil para o usuário final.
- A chave da API do Groq e outras possíveis credenciais foram mantidas estritamente confidenciais.
- No ambiente de desenvolvimento local: Utilizamos a biblioteca
dotenve protegemos a chave com um arquivo.gitignore, garantindo que ela não fosse exposta no versionamento de código (GitHub). - Em produção: A configuração foi replicada diretamente no painel de Deployment do Streamlit, na área segura designada para
secrets.
Acesse a aplicação online: recomenda-ai-livros.streamlit.app
Este projeto está licenciado sob a Licença MIT. Você tem permissão para usar, copiar, modificar e distribuir o software, desde que mantenha os avisos de direitos autorais originais.
