Una guía práctica para crear aplicaciones LLM en Java con Gemini

Publicado por ELI el 06/04/2025 a las 01:53

Introducción

 

Java es un lenguaje de programación increíblemente sólido y confiable. Millones de desarrolladores lo utilizan a diario, y muchas aplicaciones críticas en sectores como la banca, las bolsas de valores e incluso la industria aeroespacial se ejecutan en Java. Su madurez, rendimiento y ecosistema lo han convertido en una opción predilecta en el desarrollo de software empresarial.

Con la llegada de los Modelos de Lenguaje Grandes (LLM), se han abierto nuevas oportunidades para crear aplicaciones más inteligentes y capaces. Aunque Python ha dominado el desarrollo con inteligencia artificial por razones bien conocidas, existe un mito persistente: que todo lo relacionado con LLM debe desarrollarse exclusivamente en Python.

Esto no es del todo cierto. La mayoría de las integraciones con modelos LLM se realizan a través de APIs REST, lo que significa que cualquier lenguaje con buenas capacidades para trabajar con APIs —como Java— puede aprovechar estas tecnologías. De hecho, Java cuenta con un ecosistema de integración muy robusto, respaldado por años de experiencia en el desarrollo de sistemas distribuidos y escalables.

Spring Boot: Tu aliado para construir APIs con LLM.

Gracias a la comunidad de desarrolladores de Spring Boot, tenemos acceso a un conjunto de herramientas increíblemente útil para integrar modelos LLM en nuestras aplicaciones Java. Si aún no has explorado Spring Boot, este es el momento perfecto para hacerlo.

Spring Boot simplifica el desarrollo de APIs RESTful gracias a su configuración automática, su poderosa anotación de clases y métodos, y su arquitectura extensible. Esto lo convierte en una excelente elección para exponer servicios web que se comuniquen con modelos como Gemini de Google.

 

Una guía práctica para crear aplicaciones LLM en Java con Gemini

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.

 

Captura de pantalla de un celular

El contenido generado por IA puede ser incorrecto.

 

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”.

 

Captura de pantalla de computadora

El contenido generado por IA puede ser incorrecto.

 

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:

Planes de precios.

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).

 

Interfaz de usuario gráfica, Aplicación

El contenido generado por IA puede ser incorrecto.

 

  • GeminiChatAppApplication.java - Punto de entrada de la aplicación, con la anotación @SpringBootApplication.

 

Interfaz de usuario gráfica, Sitio web

El contenido generado por IA puede ser incorrecto.

 

  • WebClientConfig.java - Define una instancia de WebClient que se reutiliza para realizar solicitudes HTTP de forma reactiva.

 

Interfaz de usuario gráfica

El contenido generado por IA puede ser incorrecto.

 

  • AIController.java - Expone un endpoint /chat que recibe una pregunta y devuelve una respuesta generada por Gemini.

 

Interfaz de usuario gráfica, Texto

El contenido generado por IA puede ser incorrecto.

 

  • Question.java - Clase de modelo simple con un solo atributo question, utilizada para transportar datos entre el cliente y el servidor.

 

Interfaz de usuario gráfica, Aplicación

El contenido generado por IA puede ser incorrecto.

 

  • GeminiService.java y GeminiServiceImpl.java - Estos archivos contienen la lógica de negocio que conecta con la API de Gemini.

 

  1.  GeminiService.java - Define una interfaz con el método:

 

Una captura de pantalla de un celular con texto e imagen

El contenido generado por IA puede ser incorrecto.

 

  1. 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:

 

Pantalla de computadora

El contenido generado por IA puede ser incorrecto.

 

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.

Pantalla de computadora con letras

El contenido generado por IA puede ser incorrecto.

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.

Pantalla de un computador

El contenido generado por IA puede ser incorrecto.

Muestra un campo de entrada estilo chat y muestra los mensajes del usuario y del asistente.

 

  • Comunicación con el backend.

Interfaz de usuario gráfica, Aplicación, Sitio web

El contenido generado por IA puede ser incorrecto.

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.

Pantalla de computadora con letras

El contenido generado por IA puede ser incorrecto.

 

  • Instala las dependencias.

Interfaz de usuario gráfica

El contenido generado por IA puede ser incorrecto.

 

  • Ejecuta la aplicación y abre tu navegador en http://localhost:8501 para probar la aplicación.

Interfaz de usuario gráfica

El contenido generado por IA puede ser incorrecto.

 

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.

 

Captura de pantalla de un celular

El contenido generado por IA puede ser incorrecto.

 

¿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://start.spring.io/

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

https://docs.streamlit.io/

 

Código del backend: https://github.com/EliAbdiel/gemini-chat-app.git

Código del frontend: https://github.com/EliAbdiel/python-chat-app.git