A lightweight REST-based Chat API built with Spring Boot and Spring AI, integrating with Google Gemini 2.5 Flash Lite to generate intelligent responses for user queries.
- ✅ Simple REST API for chat interaction
- ✅ Integrated with Google GenAI (Gemini) via Spring AI
- ✅ Clean layered architecture (Controller → Service → Config)
- ✅ Environment-based API key configuration
- ✅ Production-ready structure for extensibility
- Java 25
- Spring Boot 4.0.6
- Spring AI (2.0.0-M4)
- Google Gemini 2.5 Flash Lite
- Maven
curl --location 'http://localhost:8080/api/chat' \
--header 'Content-Type: application/json' \
--data 'what is java. explain in 1 line'{
"explanation": "Java is a high-level, class-based, object-oriented programming language designed to have minimal implementation dependencies."
}spring:
application:
name: spring-ai-chat
ai:
google:
genai:
api-key: ${GOOGLE_GENAI_API_KEY}
chat:
options:
model: gemini-2.5-flash-liteSet your API key:
export GOOGLE_GENAI_API_KEY=your_api_key_herecom.vijay.spring.boot.ai.spring_ai_chat
│
├── api/ → REST Controllers
├── service/ → Business Logic (Gemini integration)
├── config/ → AI / App Configuration
└── (main) → Application bootstrap
- Client sends POST request with message
- Controller receives request
- Service layer calls Spring AI
- Spring AI invokes Gemini model
- Response is returned to client
git clone https://github.com/vijay-backend-lab/spring-ai-chat.git
cd spring-ai-chatmvn clean installmvn spring-boot:runspring-boot-starter-webmvcspring-ai-starter-model-google-genai- Spring AI BOM for dependency management
- Uses Spring AI abstraction for model integration
- Model configurable via
application.yaml - Clean separation of concerns (Controller, Service, Config)
- Ready for extension (multi-model, streaming, etc.)
- 🔄 Streaming responses (real-time chat)
- 🧵 Conversation memory support
- ⚡ Rate limiting & caching
- 🔐 Authentication & API security
- 📊 Observability (metrics, logging)
- Ensure
GOOGLE_GENAI_API_KEYis set before running - Input is currently treated as raw text (can be enhanced to JSON payload)
- Uses Gemini Flash Lite for low latency responses
Licensed under Apache License 2.0
Contributions are welcome! Feel free to fork, raise issues, or submit PRs.
Vijay Kumar Backend Engineer | AI | Java | System Design