Projeto: Chatbot Inteligente para Processos e Procedimentos com Atualização Automática e Fallback para ChatGPT (Base MySQL)
1. Introdução
Este projeto propõe o desenvolvimento de um chatbot inteligente voltado para dúvidas sobre processos e procedimentos, utilizando exclusivamente um banco de dados relacional (MySQL) como fonte principal de consulta, sem uso de bancos vetoriais como ChromaDB. O sistema será capaz de pesquisar documentos, apresentar respostas, registrar feedback dos usuários e, em caso de respostas insuficientes, recorrer à API do ChatGPT como fallback.
2. Objetivos
- Automatizar o atendimento a dúvidas sobre processos e procedimentos documentados.
- Permitir atualização automática diária do conhecimento do chatbot com novos documentos.
- Garantir precisão e cobertura das respostas, recorrendo ao ChatGPT em caso de dúvidas não solucionadas localmente.
- Permitir avaliação do usuário e contínua evolução do sistema.
3. Arquitetura e Frameworks Utilizados
3.1 Principais Frameworks e Bibliotecas
- Python 3.9+: Linguagem principal do sistema.
- MySQL: Banco relacional para armazenar documentos, textos extraídos, logs, feedback e metadados.
- mysql-connector-python ou SQLAlchemy: Conexão e manipulação do MySQL em Python.
- pdfminer.six: Extração de texto de PDFs.
- python-docx: Extração de texto de arquivos Word.
- OpenAI (API): Integração com ChatGPT para fallback.
- Unstructured (opcional): Para leitura flexível de múltiplos formatos.
- Streamlit ou Flask (opcional): Interface web para interação com usuário e avaliação de respostas.
- Agendador de tarefas (cron, Task Scheduler): Para automação da ingestão e atualização diária de documentos.
4. Metodologias Utilizadas
- Busca textual clássica (SQL): As perguntas dos usuários são tratadas como consultas de texto, usando buscas por palavra-chave (LIKE, FULLTEXT).
- Fallback Inteligente: Caso nenhuma resposta relevante seja localizada no MySQL, a pergunta é repassada ao ChatGPT via API.
- Ciclo de Aprendizagem Contínua: Feedback do usuário para identificar perguntas mal respondidas e melhorar a base.
- Automação de atualização diária: Script agendado para processar novos documentos e atualizar o banco de dados.
5. Etapas do Projeto
5.1 Planejamento e Levantamento de Requisitos
- Definição dos tipos de documentos a serem processados (PDF, DOCX, TXT).
- Estruturação das pastas:
/docs_novos/
para documentos a indexar,/docs_indexados/
para documentos já processados. - Estruturação do banco MySQL: tabelas para documentos, logs, feedback, usuários.
5.2 Ambiente e Infraestrutura
- Instalação do Python e bibliotecas necessárias.
- Instalação e configuração do MySQL Server.
- Criação do banco de dados e tabelas.
5.3 Processamento e Indexação de Documentos
- Extração de texto de PDFs e Word usando
pdfminer.six
epython-docx
. - Inserção dos textos extraídos na tabela de documentos do MySQL, com campos como: ID, nome do arquivo, texto, data, usuário, etc.
5.4 Desenvolvimento do Chatbot
- Recebimento da pergunta do usuário via interface CLI, Web ou API.
- Consulta ao MySQL utilizando SQL FULLTEXT SEARCH (ou LIKE) para encontrar o(s) documento(s) mais relevante(s).
- Exibição da resposta ao usuário.
- Caso a resposta seja vazia ou não satisfatória, consulta à API do ChatGPT.
- Registro da interação e da avaliação do usuário.
5.5 Automatização da Atualização Diária
- Script automatizado, agendado, para processar novos documentos diariamente:
- Extração do texto.
- Inserção no banco de dados.
- Movimentação dos arquivos para pasta de processados.
5.6 Interface com o Usuário e Feedback
- (Opcional) Interface web para consulta e avaliação das respostas.
- Registro do feedback do usuário em tabela específica para análise futura.
5.7 Testes e Validação
- Testes unitários dos scripts de processamento.
- Testes de busca e precisão de respostas.
- Testes de fallback e integração com ChatGPT.
5.8 Documentação e Treinamento
- Documentação detalhada do sistema, scripts e uso.
- Treinamento dos usuários e administradores do sistema.
6. Considerações Técnicas
6.1 Limitações da Busca no MySQL
- Busca por palavra-chave: O MySQL não realiza buscas semânticas, ou seja, depende da correspondência exata ou parcial das palavras da pergunta com o texto dos documentos.
- Alternativa: É possível usar o recurso FULLTEXT do MySQL para buscas em campos grandes (LONGTEXT), mas não substitui a busca vetorial.
- Melhoria futura: Caso necessário, pode-se integrar futuramente um banco vetorial para busca semântica avançada.
7. Estrutura Sugerida de Tabelas MySQL
sqlCopiarEditarCREATE TABLE documentos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome_arquivo VARCHAR(255),
texto LONGTEXT,
data_upload DATETIME,
usuario VARCHAR(100)
);
CREATE TABLE interacoes (
id INT AUTO_INCREMENT PRIMARY KEY,
id_documento INT,
pergunta TEXT,
resposta TEXT,
foi_fallback BOOLEAN,
data DATETIME,
FOREIGN KEY (id_documento) REFERENCES documentos(id)
);
CREATE TABLE feedback (
id INT AUTO_INCREMENT PRIMARY KEY,
id_interacao INT,
avaliacao ENUM('boa','ruim'),
comentario TEXT,
data DATETIME,
FOREIGN KEY (id_interacao) REFERENCES interacoes(id)
);
8. Resumo dos Frameworks e Bibliotecas
Framework/Biblioteca | Função |
---|---|
Python 3.9+ | Linguagem principal |
MySQL | Banco relacional, principal repositório |
mysql-connector-python | Conexão Python-MySQL |
pdfminer.six | Ler PDF |
python-docx | Ler Word |
OpenAI (API) | ChatGPT (fallback) |
Unstructured | Ler múltiplos formatos (opcional) |
Streamlit/Flask (opcional) | Interface web |
9. Metodologias
- Busca textual clássica (FULLTEXT/LIKE)
- Fallback Inteligente
- Aprendizagem Contínua (feedback)
- Automação de ingestão de dados
10. Considerações Finais
O projeto propõe uma solução prática, fácil de gerenciar e com requisitos tecnológicos acessíveis, usando o MySQL como núcleo do sistema. Garante automatização da base de conhecimento, integração com IA de ponta (ChatGPT), avaliação do usuário e flexibilidade para futuras expansões.
Se quiser o documento em .docx
, com capa e sumário, ou se precisar de exemplos de código Python integrando essas partes, é só pedir!