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 e python-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/BibliotecaFunção
Python 3.9+Linguagem principal
MySQLBanco relacional, principal repositório
mysql-connector-pythonConexão Python-MySQL
pdfminer.sixLer PDF
python-docxLer Word
OpenAI (API)ChatGPT (fallback)
UnstructuredLer 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!