DominiChat é um assistente de IA conversacional construído com Python, Flask e a API do Google Gemini. Este projeto demonstra a integração de um grande modelo de linguagem (LLM) com ferramentas externas em tempo real, permitindo que o chatbot acesse informações como data, hora e previsão do tempo, além de analisar arquivos como imagens e PDFs enviados pelo usuário.
A comunicação entre o frontend e o backend é feita em tempo real usando WebSockets, proporcionando uma experiência de chat fluida e interativa.
Este projeto foi desenvolvido por mim mesmo Lincoln Matheus, aluno do curso de Análise e Desenvolvimento de Sistemas no Instituto Federal do Piauí (IFPI), como parte do trabalho final da disciplina de Inteligência Artificial, ministrada pelo Prof. Dr. Otílio Paulo.
O nome DominiChat é uma homenagem a Brenda Dominique, meu grande amor, inspiração e companheira.
- Chat Conversacional: Interaja com a IA de forma natural e fluida.
- Análise de Arquivos: Envie imagens ou documentos PDF para que a IA os analise e responda a perguntas sobre eles.
- Ferramentas em Tempo Real:
- Hora Certa: Pergunte "que horas são?" e receba a data e hora atuais no fuso horário de Brasília.
- Previsão do Tempo: Peça a temperatura de qualquer cidade do mundo e receba uma estimativa atualizada.
- Interface Neumórfica: Design moderno e limpo com suporte a tema claro e escuro.
- Persona Personalizada: O chatbot tem uma personalidade definida, sendo prestativo e amigável, mas com um toque de sarcasmo se o usuário for repetitivo.
O diagrama abaixo ilustra o fluxo de comunicação entre os componentes do sistema, cobrindo tanto uma resposta de texto direta quanto uma resposta que requer o uso de ferramentas (Function Calling).
sequenceDiagram
participant Usuário
participant Frontend
participant Backend
participant "Gemini API"
participant "API Externa"
Usuário->>Frontend: Digita e envia mensagem
activate Frontend
alt Resposta de Texto Direta
Frontend->>Backend: socket.emit('enviar_mensagem')
activate Backend
Backend->>"Gemini API": send_message(prompt)
activate "Gemini API"
"Gemini API"-->>Backend: Retorna resposta com texto
deactivate "Gemini API"
loop Stream de dados para o Frontend
Backend-->>Frontend: emit('stream_chunk')
end
deactivate Backend
else Resposta com Ferramenta (Function Calling)
Frontend->>Backend: socket.emit('enviar_mensagem')
activate Backend
Backend->>"Gemini API": send_message(prompt)
activate "Gemini API"
"Gemini API"-->>Backend: Retorna com function_call
deactivate "Gemini API"
Backend->>"API Externa": Busca dados da ferramenta (ex: clima)
activate "API Externa"
"API Externa"-->>Backend: Retorna dados da ferramenta
deactivate "API Externa"
Backend->>"Gemini API": send_message(resultado da ferramenta)
activate "Gemini API"
"Gemini API"-->>Backend: Retorna resposta final em texto
deactivate "Gemini API"
loop Stream de dados para o Frontend
Backend-->>Frontend: emit('stream_chunk')
end
deactivate Backend
end
Frontend-->>Usuário: Exibe resposta completa
deactivate Frontend
- Backend:
- Python: Linguagem principal do projeto.
- Flask: Micro-framework web para servir a aplicação.
- Flask-SocketIO: Para comunicação em tempo real (WebSockets).
- Inteligência Artificial:
- Google Gemini 1.5 Flash/Gemini 2.5 Flash (
gemini-1.5-flash-latest,gemini-2.5-flash): Modelos de linguagem utilizado para gerar as respostas e utilizar as ferramentas.
- Google Gemini 1.5 Flash/Gemini 2.5 Flash (
- APIs Externas:
- Open-Meteo: API gratuita para obter dados de previsão do tempo.
- Frontend:
- HTML5: Estrutura da página.
- CSS3: Estilização, incluindo o design neumórfico e o modo escuro.
- JavaScript: Manipulação do DOM e comunicação com o backend via Socket.IO.
- Deployment:
- Railway: Plataforma de hospedagem da aplicação.
Siga os passos abaixo para rodar o projeto na sua máquina.
- Python 3.8 ou superior
- Uma chave de API para o Google Gemini. Você pode obter uma no Google AI Studio.
-
Clone o repositório:
git clone `https://github.com/LincolnMatheus97/domini-chatbot.git` cd api_gemini
-
Crie e ative um ambiente virtual:
# Para Windows python -m venv .venv .\.venv\Scripts\activate # Para macOS/Linux python3 -m venv .venv source .venv/bin/activate
-
Instale as dependências:
pip install -r requirements.txt
-
Configure as variáveis de ambiente:
- Crie um arquivo chamado
.envna raiz do projeto. - Adicione as seguintes linhas ao arquivo, substituindo pelos seus valores:
API_KEY_GEMINAI="SUA_CHAVE_DE_API_DO_GEMINI" SECRET_KEY="UMA_CHAVE_SECRETA_FORTE_PODE_SER_QUALQUER_COISA"
- Crie um arquivo chamado
-
Execute a aplicação:
python app.py
Acesse
http://127.0.0.1:8080no seu navegador para ver a aplicação funcionando.
- Acesse em DominiChat
/
├── .gitignore
├── app.py # Arquivo principal do backend (Flask, SocketIO, Gemini)
├── requirements.txt # Lista de dependências Python
├── static/
│ ├── css/
│ │ └── style.css # Folha de estilos principal
│ ├── images/ # Imagens estáticas para o frontend
│ └── script/
│ └── script.js # Lógica do frontend (JavaScript)
└── templates/
└── index.html # Estrutura HTML da página de chat
- Lincoln Matheus - GitHub

