| Equipe | GitHub |
|---|---|
| Leôncio Ferreira Flores Neto | @LeoncioFerreira |
| Alan Mendes Vieira | @alan-mendes-ufca |
| Grazielly Bibiano do Nascimento | @graziellybn |
| Antônio Pereira da Luz Neto | @netoo-444 |
Este projeto é um chatbot educativo desenvolvido em Python com Streamlit que ensina sobre reciclagem de materiais. Além disso, o bot possui personalidades diferentes (formal, engraçada e rude), que afetam o tom da resposta, mas não o conteúdo.
- Ensinar de forma interativa como reciclar diferentes tipos de materiais.
- Incentivar a conscientização ambiental através da tecnologia.
- Demonstrar conceitos de programação aplicada a um caso real.
- ✅ Python 3
- ✅ Streamlit (Interface gráfica)
- ✅ Dicionário de dados
- ✅ Manipulação de arquivos
.txt - ✅ Programação Orientada a Objetos (POO)
O EcoBot pode responder de diferentes formas, dependendo da personalidade escolhida pelo usuário:
- Fornece respostas educadas e detalhadas.
- Ideal para contextos acadêmicos ou explicativos.
- Exemplo: “Para reciclar uma garrafa PET, lave-a, retire o rótulo e leve a um ponto de coleta adequado.”
- Responde de maneira leve, com humor e gírias.
- Torna a interação mais descontraída.
- Exemplo: “Dá um banho na PET, tira a roupinha (rótulo) e manda pro ponto de coleta. Simples assim!”
- Responde de forma direta e impaciente.
- Curtas e objetivas, sem rodeios.
- Exemplo: “Lava, tira o rótulo e leva pra reciclagem. Pronto.”
O usuário escolhe a personalidade ao iniciar o sistema e pode trocá-la durante a execução. O sistema mantém um contador de uso de cada personalidade e registra em arquivo.
📦 Ecobot
├── 📂 chatbot_data
│ ├── 🕓 history.txt # Histórico das interações anteriores
│ ├── 🧠 learning_responses.json # Base de conhecimento aprendida pelo bot
│ ├── ❓ questions.json # Perguntas e respostas predefinidas
│ └── 📄 relatorio.txt # Relatório final da sessão do usuário
│
├── 🧩 classes
│ ├── 📊 chatbot_analytics.py # Coleta estatísticas de uso do EcoBot
│ ├── 💬 chatbot_frequent_questions.py # Gerencia perguntas mais frequentes
│ ├── 🧠 chatbot_learning.py # Sistema de aprendizado (modo ensinar)
│ ├── 🧾 chatbot_memory.py # Armazena e lê o histórico de conversas
│ ├── 🤖 chatbot.py # Classe principal do chatbot
│ ├── 💭 chatbot_reply.py # Define respostas por personalidade
│ ├── 📃 chatbot_report.py # Gera relatório detalhado de interações
│ └── ⚙️ __init__.py # Indica módulo Python
│
├── 🧰 helpers.py # Funções auxiliares e utilitárias
├── 🚀 main.py # Arquivo principal para execução no terminal
├── 📋 requirements.txt # Dependências do projeto
│
├── 🧪 test
│ └── 🧩 test_reply.py # Testa respostas conforme personalidade
│
└── 📘 README.md # Documentação principal do projeto
-
Clone este repositório:
1.1 git clone https://github.com/ufca-es/Eco-bot.git 1.2 cd ecobot/Ecobot exemplo: cd "/home/pc/Desktop/teste_final/Eco-bot/Ecobot"
-
Criar ambiente virtual (recomendado)
2.1python3 -m venv venv 2.2 source venv/bin/activate # Linux/Mac 2.2 venv\Scripts\activate # Windows (PowerShell)
-
Instalar dependências
3.1 pip install -r requirements.txt- Executar a versão com Streamlit (interface gráfica)
4.1 streamlit run app.pyLeôncio → Task 05 → Configuração do repositório no GitHub (estrutura básica, README inicial ) e interface
Alan + Leôncio → Task 09 (respostas aleatórias para mesma pergunta)
Alan → Task 08 (mudança de personalidade durante a execução)
Neto → Task 10 (persistência de aprendizado)
Grazy → Task 11 (ler histórico anterior ao iniciar o programa) + Task 12 (salvar histórico da sessão)
Alan → Task 13 (coletar estatísticas: total de interações, pergunta mais feita, uso de personalidades) + Task 16 (organização final das classes/módulos)
Neto → Task 14 (gerar relatório legível – relatorio.txt)
Grazy → Task 15 (exibir sugestões de perguntas frequentes)
-
As demais tasks todos contribuíram.
-
Após executar o "python main.py", irá aparecer as personalidade e qual o usuário pode escolher.
- Após a sua escolha de personalidade, o EcoBot mostrará as 5 interações anteriores, junto com as perguntas mais frequentes.
- Exemplos de uso da personalidade "engracada" após digitar "Olá"
- Caso o usuário queira mudar a personalidade durante a execução do bot, ele deve digitar algo relacionado a "Mudar personalidade", e logo após aparecerá a escolha inical de personalidade do EcoBot, segue o exemplo:
-
Após o usuário terminar suas internações, e escrevera palavra "sair" (ou palavras relacionadas a se despedir) o ChatBot irá gerar um resumo das interações do usuário com o ChatBot
-
Você pode acessar esse relatório que ficará salvo dentro da pasta responses em um arquivo .txt
- Relatório Gerado:
- No canto superior esquerdo, o usuário pode estar alterando a personalidade do bot para engraçada,formal ou rude. (Segue objeto citado circundado de vermelho na imagem)
- Ao lado esquerdo o EcoBot mostrará as 5 interações anteriores.
-
Na parte de conversa com o bot, o usuário deve colocar sua pergunta na lacuna escrita "Digite sua pergunta" (circundado de vermelho na foto abaixo)
-
Logo após a interação aparecerá um bloco com o nome "Pergunta: "sua pergunta" " (circundado de verde na foto abaixo)
-
Depois, aparecerá a resposta do EcoBot. (circundado de amarelo na foto abaixo)
- Ao clicar na lacuna escrita com "💡 Ver sugestões de perguntas" o bot baixará uma aba com as perguntas frequentes realizadas pelo usuário, o usuário pode clicar na pergunta frequente e o bot o responderá (circundado de azul na foto abaixo)
- No canto inferior esquerdo, haverá um ícone de uma lixeira que serve para limpar a conversa após o usuário clicar nela.(seguue na foto abaixo)
- Após limpar a conversa, será limpa a interação no chat com o bot(segue na foto)
- No canto inferior esquerdo, acima do ícone da lixeira, há um ícone de um Disket seguido com a frase "Salvar conversa"
- Após o usuário clicar em salvar, aparecer a interação do usuário na parte de Downloads (destacado em verde na foto abaixo)
- o .txt gerado:
- Caso o usuário pergunte algo que o bot não saiba, ele entrará no modo aprendizado. No qual o usuário pode digitar uma resposta e ensiná-lo, ou não. Ao clicar em "ensinar" o bot aprende uma resposta para aquela pergunta (circulado em azul na foto abaixo) E ao clicar em "Esquecer" o bot desconsidera o aprendizado.(Circulado de verde na foto abaixo)
This project is licensed under the MIT License - see the LICENSE file for details.