O Spring AI Vertex é uma aplicação de exemplo que demonstra a integração entre Spring AI e o Google Vertex AI (Gemini).
O projeto foi desenvolvido com foco educacional e prático, com o objetivo de mostrar como:
- Integrar aplicações Spring com modelos Gemini
- Utilizar prompts dinâmicos com templates
- Converter respostas da IA em objetos Java tipados
- Trabalhar com respostas estruturadas em JSON
- 🤖 Integração com Google Vertex AI (Gemini)
- 🧠 Geração de respostas baseadas em IA
- 🌍 Consulta de capitais de países/estados
- 📊 Retorno estruturado com informações completas:
- Cidade
- População
- Região
- Idioma
- Moeda
- 🔄 Conversão automática de resposta para DTOs
- 🧩 Uso de templates
.stpara prompts reutilizáveis - 📦 Collection Postman disponível para testes
Antes de executar o projeto, você precisa:
- ☕ Java 25
- 📦 Maven 3.9+
- ☁️ Conta no Google Cloud
- 🔑 Credenciais do Vertex AI (
credentials.json)
Coloque o arquivo de credenciais em:
src/main/resources/credentials.json
Configuração no application.yaml:
spring:
ai:
vertex:
ai:
gemini:
project-id: seu-project-id
location: us-central1
credentials-uri: classpath:credentials.json# Clone o repositório
git clone https://github.com/JuhMaran/spring-ai-vertex.git
# Acesse o projeto
cd spring-ai-vertex
# Compile
mvn clean install
# Execute
mvn spring-boot:runA aplicação estará disponível em:
http://localhost:8080
- Java 25
- Spring Boot 4.1 (Snapshot)
- Spring AI
- Google Vertex AI (Gemini)
- Maven
curl -X POST http://localhost:8080/ask \
-H "Content-Type: application/json" \
-d '{"question": "Qual a capital do Brasil?"}'curl -X POST http://localhost:8080/capital \
-H "Content-Type: application/json" \
-d '{"stateOrCountry": "Chile"}'curl -X POST http://localhost:8080/capitalWithInfo \
-H "Content-Type: application/json" \
-d '{"stateOrCountry": "Brasil"}'Uma collection pronta está disponível em:
Ela inclui exemplos de:
- ✔️ Requisições válidas
- ❌ Erros (500)
- 📊 Respostas estruturadas
sequenceDiagram
participant Client
participant Controller
participant Service
participant Gemini
Client ->> Controller: HTTP Request
Controller ->> Service: Processa entrada
Service ->> Gemini: Envia prompt
Gemini -->> Service: Resposta gerada
Service -->> Controller: Conversão para DTO
Controller -->> Client: JSON Response
flowchart TD
A[Client] --> B[Controller]
B --> C[VertexAiService]
C --> D[Prompt Templates .st]
C --> E[Spring AI ChatModel]
E --> F[Vertex AI Gemini]
- 🔐 Necessário configurar credenciais do Google Cloud corretamente
⚠️ Respostas podem variar conforme o modelo Gemini- 📡 Dependência de serviço externo (Vertex AI)
- 🧪 Testes dependem de credenciais válidas
✅ Concluído
Contribuições são bem-vindas! 💡
-
Fork do projeto
-
Crie uma branch:
git checkout -b minha-feature
-
Commit:
git commit -m "feat: nova funcionalidade" -
Push:
git push origin minha-feature
-
Abra um Pull Request
- Diagramas feitos com Mermaid (compatível com GitHub)
- Estrutura com headings claros e organizados
- Uso moderado de emojis para melhor leitura
- Exemplos práticos com cURL e Postman
Este projeto não possui licença definida no momento.
Desenvolvido por Juh Maran
🔗 https://github.com/JuhMaran