Tecnologías que utilizaremos
- Java 21.
- Spring Boot 3.4.4.
- Maven.
- Spring Web.
- Spring Reactive Web.
- Lombok.
- Python.
- Streamlit.
- IDE (IntelliJ, VSCode, TRAE.ai, etc.).
Inicialización del proyecto
Comenzaremos iniciando nuestro proyecto en Spring Boot con Spring Initializr. Para empezar, he añadido cinco dependencias; puedes ajustarlas según las necesidades de tu proyecto.
Cómo obtener una clave API de Gemini
Gemini es el modelo de lenguaje extenso más reciente y avanzado desarrollado por Google, con soporte para procesamiento multimodal: texto, imágenes, audio, video y más. Integrar Gemini en tus aplicaciones o productos internos puede transformar la manera en que los empleados interactúan con el software y cómo los clientes experimentan tus servicios.
Antes de poder realizar solicitudes a la API de Gemini, necesitas generar una clave de API. Esta clave actuará como tu identificador y medio de autenticación para acceder al modelo desde tus aplicaciones.
A continuación, te mostramos paso a paso cómo obtener tu clave de API.
Paso 1: Inicia sesión en tu cuenta de Google.
Paso 2: Accede a “Google AI Studio”.
Paso 3: Haz clic en «Get API Key» en Google AI Studio.
Paso 4: Crear la clave API, puedes hacer clic en “Crear clave de API”.
Otras consideraciones al construir con la API de Gemini
Antes de desarrollar con la API de Gemini, también debes comprender y dominar los siguientes aspectos:
Gemini 2.5 Pro, Gemini 2.0 Flash, y Gemini 2.0 Flash-Lite tienen planes de precios únicos, que incluyen un plan gratuito y uno de pago por uso.
Las principales diferencias entre estos planes incluyen los límites de velocidad, el precio de entrada y salida, la disponibilidad del almacenamiento en caché de contexto y si se utilizan para mejorar el producto.
Backend con Spring Boot y Gemini API
Para crear una aplicación que interactúe con Gemini LLM desde Java, organizamos nuestro proyecto siguiendo una estructura limpia basada en el patrón MVC (Modelo-Vista-Controlador), con la potencia de Spring Boot y WebClient para facilitar la integración con APIs externas.
📁 Estructura de carpetas
src/
└── main/
├── java/
│ └── com.gemini/
│ ├── GeminiChatAppApplication.java
│ ├── config/
│ │ └── WebClientConfig.java
│ ├── controller/
│ │ └── AIController.java
│ ├── model/
│ │ └── Question.java
│ └── service/
│ ├── GeminiService.java
│ └── GeminiServiceImpl.java
└── resources/
├── application.properties
└── META-INF/
└── additional-spring-configuration-metadata.json
Componentes principales
- application.properties - Incluye configuraciones clave como el puerto del servidor, URL de la API de Gemini y la clave de autenticación (que puedes manejar con variables de entorno).
- GeminiChatAppApplication.java - Punto de entrada de la aplicación, con la anotación @SpringBootApplication.
- WebClientConfig.java - Define una instancia de WebClient que se reutiliza para realizar solicitudes HTTP de forma reactiva.
- AIController.java - Expone un endpoint /chat que recibe una pregunta y devuelve una respuesta generada por Gemini.
- Question.java - Clase de modelo simple con un solo atributo question, utilizada para transportar datos entre el cliente y el servidor.
- GeminiService.java y GeminiServiceImpl.java - Estos archivos contienen la lógica de negocio que conecta con la API de Gemini.
- GeminiService.java - Define una interfaz con el método:
- GeminiServiceImpl.java - Contiene la implementación real. Aquí se construye el body con la estructura esperada por la API Gemini, y se hace la llamada POST con WebClient:
Pruebas con Postman
Una forma sencilla de probar el backend de nuestra aplicación Gemini Chat App es usando Postman, una herramienta popular para realizar solicitudes HTTP y probar APIs REST. Si todo está configurado correctamente, recibirás una respuesta con formato similar al siguiente:
Frontend en Python con Streamlit
Para mantener el frontend simple y accesible, hemos creado una interfaz minimalista utilizando Streamlit, una librería de Python para construir interfaces web rápidas sin necesidad de conocimientos avanzados de frontend.
📁 Estructura del proyecto
eliabdiel-python-chat-app/
├── chat-app.py
└── requirements.txt
chat-app.py - Este archivo es el corazón del frontend. A continuación, se describe su funcionamiento:
- Carga de variables de entorno.
Se utiliza dotenv para cargar la URL de la API de Spring Boot desde un archivo .env, lo cual permite mantener la configuración separada del código fuente.
- Entrada y visualización del chat.
Muestra un campo de entrada estilo chat y muestra los mensajes del usuario y del asistente.
- Comunicación con el backend.
Envía la consulta del usuario al backend Java y muestra la respuesta generada por Gemini.
- Crea un archivo .env en la raíz del proyecto con la URL del backend.
- Instala las dependencias.
- Ejecuta la aplicación y abre tu navegador en http://localhost:8501 para probar la aplicación.
Interfaz de Usuario del Chatbot
Una vez que el backend y la API de Gemini están funcionando correctamente, puedes visualizar la interfaz web del chatbot desarrollada con Streamlit y comenzar a interactuar con la AI de manera sencilla.
¿Qué puedes hacer desde la interfaz?
- Escribir cualquier pregunta o mensaje en la caja de texto inferior.
- Ver tus mensajes y las respuestas generadas por Gemini en tiempo real.
- Tener una conversación fluida gracias a la conexión entre Streamlit y tu backend en Spring Boot.
Conclusión
El proyecto Gemini Chat App demuestra cómo integrar de forma efectiva una interfaz de usuario interactiva desarrollada con Python y Streamlit, junto con un backend robusto en Java usando Spring Boot, que se conecta a la API de Gemini para generar respuestas inteligentes mediante AI.
Gracias a una arquitectura bien definida y una separación clara de responsabilidades (modelo, controlador, servicio y configuración), este sistema permite:
Interacción fluida entre usuario y asistente.
Consumo seguro y eficiente de la API de Gemini.
Un diseño escalable que facilita futuras mejoras, como autenticación de usuarios, historial de conversaciones o multilenguaje.
Además, el uso de variables de entorno para almacenar claves API y endpoints garantiza buenas prácticas de seguridad y portabilidad del sistema.
Gemini Chat App es un excelente punto de partida para construir aplicaciones inteligentes conversacionales que aprovechen lo mejor de los ecosistemas Spring Boot, Streamlit y la inteligencia artificial de Google.
Referencias
https://docs.spring.io/spring-boot/documentation.html
https://docs.spring.io/spring-framework/reference/web/webflux-webclient/client-body.html
https://ai.google.dev/gemini-api/docs
Código del backend: https://github.com/EliAbdiel/gemini-chat-app.git
Código del frontend: https://github.com/EliAbdiel/python-chat-app.git