Um chatbot inteligente desenvolvido com Spring AI que integra com modelos de IA local através do Ollama, oferecendo uma interface web para conversas e gerenciamento de usuários.
- Interface Web Intuitiva: Interface limpa e responsiva para interação com o chatbot
- Autenticação e Autorização: Sistema completo de login/registro com Spring Security
- Histórico de Conversas: Armazenamento e visualização do histórico completo de conversas
- Integração com IA Local: Utiliza Ollama para processamento de linguagem natural e Spring AI
- Arquitetura RESTful: APIs REST para operações CRUD de conversas
- Persistência de Dados: Banco de dados para usuários e conversas
- Java 17+
- Spring Boot 3.x
- Spring AI - Integração com modelos de IA (LLMs) locais ou externos
- Spring Security - Autenticação e autorização
- Spring Data JPA - Persistência de dados
- Thymeleaf - Template engine para frontend
- Lombok - Redução de boilerplate code
- ModelMapper - Mapeamento entre DTOs e entidades
- BCrypt - Criptografia de senhas
- Ollama - Integração com modelos de IA local
- Banco de dados H2/MySQL (configurável)
Antes de executar o projeto, certifique-se de ter instalado:
- Java 17 ou superior
- Maven 3.6+
- Ollama instalado e configurado
- Git
- Instale o Ollama seguindo as instruções em ollama.ai
- Baixe um modelo de sua preferência:
ollama pull llama2 # ou ollama pull mistral
- Certifique-se de que o Ollama está rodando na porta padrão (11434)
-
Clone o repositório:
git clone <url-do-repositorio> cd Inteligente
-
Configure o arquivo
application.properties
:# Configuração do Ollama spring.ai.ollama.base-url=http://localhost:11434 spring.ai.ollama.model=llama2 # Configuração do banco de dados (exemplo com H2) spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password # JPA/Hibernate spring.jpa.database-platform=org.hibernate.dialect.H2Dialect spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true # Configurações do servidor server.port=8080
-
Instale as dependências:
mvn clean install
-
Inicie o Ollama (se não estiver rodando):
ollama serve
-
Execute a aplicação:
mvn spring-boot:run
-
Acesse a aplicação:
- URL:
http://localhost:8080
- Para fazer login, primeiro registre um usuário em
/register
- URL:
- Registro de usuários (
/register
) - Login seguro (
/login
) - Logout
- Criptografia de senhas com BCrypt
- Conversas em tempo real com IA
- Processamento de linguagem natural via Ollama
- Respostas contextualizadas
- Visualização do histórico de todas as conversas
- Busca por conversa específica
- Exclusão de conversas
GET /api/conversation/{id}
- Buscar conversa por IDDELETE /api/conversation/{id}
- Deletar conversa
src/main/java/com/chatbot/Inteligente/
├── DTO/ # Data Transfer Objects
│ ├── ConversationResponseDTO.java
│ ├── UserRequestDTO.java
│ └── UserResponseDTO.java
├── config/ # Configurações
│ ├── mapper/ModelMapperConfig.java
│ ├── rest/RestTemplateConfig.java
│ └── security/SecurityConfig.java
├── controllers/ # Controladores REST e Web
│ ├── AuthController.java
│ └── ConversationController.java
├── entities/ # Entidades JPA
│ ├── Conversation.java
│ └── User.java
├── exceptions/ # Tratamento de exceções
│ └── RecursoNaoEncontradoException.java
├── repositories/ # Repositórios de dados
│ ├── ConversationRepository.java
│ └── UserRepository.java
└── services/ # Lógica de negócio
├── ChatbotService.java
└── UserService.java
- Autenticação baseada em formulário
- Criptografia de senhas com BCrypt (10 rounds)
- Proteção CSRF desabilitada para APIs REST
- Controle de acesso baseado em rotas
- Validação de entrada nos endpoints
A aplicação possui uma interface web moderna construída com Thymeleaf, oferecendo:
- Página de login responsiva
- Formulário de registro com validação
- Interface de chat intuitiva
- Histórico de conversas organizador
- Design responsivo para dispositivos móveis
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE
para mais detalhes.
- Certifique-se de que o Ollama está rodando antes de iniciar a aplicação
- A primeira resposta pode demorar mais devido ao carregamento do modelo
- Em caso de timeout, verifique a conectividade com o serviço Ollama
Se você encontrar algum problema ou tiver dúvidas:
- Verifique se o Ollama está rodando corretamente
- Consulte os logs da aplicação para erros específicos
- Abra uma issue no repositório do projeto
Gabriel lucas rodrigues souza
LinkedIn: https://www.linkedin.com/in/gabriellglrs/
Desenvolvido com ❤️ usando Spring AI e Ollama