Descrição • Tecnologias • Como rodar • Decisões Técnicas • Sobre
A AluMind é uma startup que oferece um aplicativo focado em bem-estar e saúde mental, proporcionando aos usuários acesso a meditações guiadas, sessões de terapia, e conteúdos educativos sobre saúde mental. Os Feedbacks vindo dos usuários em diferentes plataformas (canais de atendimento ao cliente; comunidades no Discord; redes sociais) são analisados, classificados por sentimentos e extraídas as possíveis melhorias contidas neles.
Você precisa ter instalado na sua máquina Git, Java 17 e o MySQL 8.1 ou mais recente.
git clone https://github.com/crisleymarques/alumind.git
- Crie uma conta gratuita no Groq.
- Crie uma API Key e copie.
- No arquivo
src/resources/application.properties
, procure a linha que declara a API Key do GROQ e insira a sua que foi gerada:
spring.ai.openai.api-key=your_api_key
No arquivo src/resources/application.properties
, procure a linha que declara a senha do database e insira a sua:
spring.datasource.password=your-password-here
- Não é necessário executar scripts SQL, pois o Flyway faz isso ao executar o projeto.
- Execute o projeto na IDE de sua preferência
Acesse os endpoints no Swagger: http://localhost:8080/swagger-ui/index.html
Aproveite! 🎉
- Os feedbacks são armazenados em uma tabela junto com seu ID e a sua classificação de sentimento.
- As Requested Features são armazenadas em uma tabela com seu ID, Code e Reason.
- Uma tabela auxiliar conecta Feedback e Requested Features através de suas PKs.
- O relacionamento escolhido foi N:N pois foi considerado que:
- Um feedback pode ter 0 ou mais requested_features associadas
- Uma requested_feature pode estar em 1 ou mais feedbacks
Foi utilizado o modelo para analisar o sentimento do feedback e estrturar a informação em formato JSON para ser posteriormente salva no banco.
Técnicas de Engenharia de Prompt foram aplicadas para conseguir o resultado esperado.
- Uma das técnicas utilizadas foi o Few-Shot Prompting, que consiste em passar exemplos para o modelo no prompt para que ele consiga raciocinar com base neles e fazer analogias.
A implementação foi análoga a de classificação dos feedbacks.
A análise de SPAM é feita antes da classificação de sentimentos.
A classificação só é executada quando o sistema identifica que o feedback não é SPAM.
- Note que os LLMs não são determinísticos, então é possível que haja erros na identificação do SPAM.
Minha sugestão de funcionalidade para a AluMind é a criação de um Diário Emocional Inteligente usando LLMs. Tem como objetivo ajudar os usuários a monitorar seu bem-estar emocional ao longo do tempo, proporcionando uma plataforma para que eles possam registrar suas emoções, reflexões e experiências diárias.
A funcionalidade seria útil porque incentiva os usuários a refletirem sobre suas emoções, promovendo o autoconhecimento e ajudando-os a compreender melhor seus sentimentos. Com a identificação dos padrões de sentimentos e comportamentos, pode atuar como uma ferramenta preventiva ao sugerir ações quando detectar sinais de alerta. Além disso, o sistema ofereceria recomendações personalizadas, como meditações ou conteúdos educativos, aumentando a relevância do aplicativo e proporcionando suporte emocional imediato.
A implementação consistiria em uma interface em que os usuários podem registrar suas reflexões diárias, com o LLM processando esses textos em segundo plano. O sistema usaria o modelo de análise de sentimentos para categorizar as emoções e fornecer respostas e recomendações personalizadas. Além disso, seriam gerados relatórios de bem-estar com gráficos baseados nas emoções registradas, oferecendo uma visão geral do estado emocional ao longo do tempo.
Foi utilizado o mesmo endpoint para retornar as respostas personalizadas, pois acredito que faz sentido ter a resposta assim que o feedback é inserido e no mesmo lugar.
Também foi levado em consideração que retornar as informações que foram extraídas no feedback não fosse interessante, dado que podem ser acessadas através do banco de dados.
Para a implementação da funcionalidade foi feita uma abordagem similar às demais, fazendo requisições ao modelo e usando técnicas de Engenharia de Prompt.