Este é o README do projeto ConnectCity Chatbot. Ele será atualizado com informações detalhadas sobre a estrutura do projeto, como executar o chatbot e uma representação visual da árvore de pastas.
.
├── README.md
├── __init__.py
├── app.py
├── chatbot
│ ├── __init__.py
│ ├── aprendizado.py
│ ├── chatbot.py
│ ├── estatisticas.py
│ ├── historico.py
│ ├── relatorio.py
│ └── report_generator.py
├── config
│ ├── __init__.py
│ ├── configuracoes.py
│ └── perguntas_respostas.json
├── data
│ ├── aprendizado.txt
│ ├── historico.txt
│ └── relatorio.txt
├── interface_web
│ ├── __init__.py
│ ├── estilos.py
│ ├── gerenciador_estado.py
│ └── interface.py
├── requirements.txt
└── run.py
- Python 3.x
- pip (gerenciador de pacotes do Python)
-
Clone o repositório (se aplicável):
git clone <URL_DO_REPOSITORIO> cd connectcity
-
Crie e ative um ambiente virtual (recomendado):
python3 -m venv .venv source .venv/bin/activate # No Linux/macOS .venv\Scripts\activate # No Windows
-
Instale as dependências listadas em
requirements.txt:pip install -r requirements.txt
As principais dependências incluem:
streamlit: Para a construção da interface web interativa.python-dotenv: Para carregar variáveis de ambiente.requests: Para fazer requisições HTTP.typing-extensions: Extensões para o módulotyping.validators: Para validação de dados.
Para iniciar o chatbot, execute o arquivo run.py:
python run.pyApós a execução, o chatbot estará acessível através da interface web. Abra seu navegador e navegue para http://localhost:8501 (ou a porta indicada no console).
- Chatbot Interativo: Responde a perguntas com base em um conjunto de dados pré-definido e aprendizado.
- Aprendizado Contínuo: Capacidade de aprender novas perguntas e respostas.
- Geração de Relatórios: Gera relatórios sobre o uso e desempenho do chatbot.
- Interface Web: Uma interface amigável para interagir com o chatbot.
O arquivo config/configuracoes.py contém as configurações principais do chatbot. O arquivo config/perguntas_respostas.json armazena as perguntas e respostas para o aprendizado do chatbot.
Para contribuir com o projeto, siga os passos abaixo:
- Faça um fork do repositório.
- Crie uma nova branch para sua feature (
git checkout -b feature/minha-nova-feature). - Faça suas alterações e commit (
git commit -m 'Adiciona nova feature'). - Envie para o repositório remoto (
git push origin feature/minha-nova-feature). - Abra um Pull Request.
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
O chatbot é uma aplicação web construída com Streamlit. Ao executar run.py, o Streamlit é iniciado em segundo plano na porta 8501. Para encerrar a aplicação e gerar um relatório de uso, pressione Ctrl+C no terminal onde o run.py está sendo executado.
O ConnectCity Chatbot é uma aplicação interativa projetada para fornecer informações e aprender continuamente com as interações do usuário. Abaixo, detalhamos suas principais funcionalidades:
O chatbot é acessível através de uma interface web amigável, desenvolvida utilizando o framework Streamlit. Esta interface permite aos usuários:
- Interagir com o chatbot: Enviar perguntas e receber respostas em tempo real.
- Visualizar histórico de conversas: Acompanhar o fluxo da interação, com as perguntas do usuário e as respostas do bot exibidas de forma clara.
- Modo de Aprendizado: Quando o chatbot não consegue responder a uma pergunta, ele entra em um modo de aprendizado, solicitando ao usuário que forneça a resposta correta. Isso permite que o bot expanda sua base de conhecimento dinamicamente.
- Seleção de Personalidade: Os usuários podem escolher a personalidade do chatbot através de uma barra lateral, influenciando o tom e o estilo das respostas.
O coração do chatbot reside em sua capacidade de gerar respostas de forma inteligente, seguindo uma lógica de prioridade:
- Base de Conhecimento Principal: O chatbot primeiramente busca respostas em uma base de dados pré-definida (
perguntas_respostas.json). Esta base é otimizada com um índice de busca (_criar_indice_busca) para garantir a recuperação rápida e eficiente das informações mais relevantes, mesmo com variações na formulação das perguntas. - Aprendizado Contínuo: Caso a pergunta não seja encontrada na base principal, o chatbot consulta um histórico de aprendizados (
data/aprendizado.txt). As respostas ensinadas pelos usuários são armazenadas e priorizadas em futuras interações, garantindo que o bot se torne mais inteligente e útil ao longo do tempo. - Normalização de Texto: Para melhorar a precisão da busca, o chatbot normaliza o texto das perguntas (removendo acentos e pontuações) antes de compará-las com sua base de conhecimento e aprendizados.
Uma das características mais poderosas do ConnectCity é sua capacidade de aprender com os usuários:
- Identificação de Lacunas: Se o chatbot não conseguir fornecer uma resposta satisfatória, ele informará ao usuário e oferecerá a oportunidade de ensinar uma nova resposta para aquela pergunta específica.
- Armazenamento Persistente: As novas perguntas e respostas aprendidas são salvas no arquivo
data/aprendizado.txt, garantindo que o conhecimento adquirido seja persistente entre as sessões do chatbot. - Personalização do Aprendizado: O aprendizado também leva em consideração a personalidade selecionada, permitindo que o bot aprenda respostas específicas para diferentes estilos de interação.
O chatbot inclui um módulo de geração de relatórios (chatbot/report_generator.py) que é ativado ao encerrar a aplicação (pressionando Ctrl+C). Este módulo é responsável por:
- Análise de Uso: Coletar e processar dados sobre as interações do chatbot, como perguntas frequentes, respostas fornecidas e o volume de aprendizado.
- Relatórios Abrangentes: Gerar relatórios detalhados que podem ser utilizados para monitorar o desempenho do chatbot, identificar áreas de melhoria e entender melhor as necessidades dos usuários.
- Histórico de Interações: O histórico de todas as conversas é mantido em
data/historico.txt, servindo como base para a análise e geração de relatórios.
Feito com empenho por:
| Equipe | GitHub | Cargos/Funções |
|---|---|---|
| David Josué Vital Santos | @davidvital-dev | Gerente de Projeto e Integrador |
| Salomão Rodrigues Silva | @salomaosilvaa | Desenvolvedor Back-End |
| Carlos Eduardo Bezerra Santos | @carlossan25c | Testador e QA |
| Dorian Dayvid Gomes Feitosa | @OtherDinosaur | Desenvolvedor Front-End |