Paul Cortes
Alejandro Ramírez
ProfesorDomina cómo crear un endpoint REST en Java con Spring Boot y potenciarlo rápidamente con inteligencia artificial utilizando LangChain4j. Aquí exploramos paso a paso cómo lograr que tu aplicación responda a peticiones y, además, integre respuestas impulsadas por IA usando OpenAI, todo dentro de un entorno organizado y moderno como IntelliJ IDEA.
¿Cómo crear un endpoint REST en Java con Spring Boot?
Primero, asegúrate de tener tu proyecto cargado y corriendo en IntelliJ IDEA; si puedes ver una respuesta desde el navegador, vas por buen camino.
HelloController dentro del paquete com.platzi.play.@RestController, lo que le indica a Spring Boot que aceptará y gestionará peticiones HTTP.@GetMapping para especificar que este método responderá a peticiones GET.Así queda tu primer endpoint operativo en un proyecto Java con Spring Boot.
¿Cómo integrar inteligencia artificial a un proyecto Spring Boot con LangChain4j?
El siguiente paso es sumar inteligencia artificial a tu proyecto. Para esto, sigue estos puntos:
LangChain4j, especialmente diseñada para conectar APIs de inteligencia artificial con tus servicios Java.build.gradle. Incluye las dependencias para OpenAI y Spring Boot usando la versión 1.0.0-beta1, que permite el uso de una demo API key gratuita.application.properties dentro de la carpeta Resources, configura los parámetros necesarios para LangChain4j:
langchain4j.openai.chatmodel.apikey=demolangchain4j.openai.chatmodel.model-name=gpt-4ominiEsto habilita a tu aplicación para procesar solicitudes de IA fácilmente.
¿Cómo crear y consumir un servicio de inteligencia artificial personalizado en Spring Boot?
PlatziPlayAIService.@AIServices para indicar que será usada como servicio de IA.generateGreeting anotado con @UserMessage. Usa triple comilla para definir el prompt: pide un saludo de bienvenida, con menos de 120 caracteres y el estilo de Platzi.HelloController. Decláralo como final, agréga una instancia en el constructor para permitir la inyección por Spring.generateGreeting() en vez de Hello world.¿Te imaginas otros casos de uso para esta integración? ¿Qué otras funciones de IA podrías probar con LangChain4j? Comparte tus ideas en los comentarios y sigue explorando el potencial de estas herramientas.
Paul Cortes
Alejandro Ramírez
ProfesorHusiel Manuel Ruiz Huaranca
Alejandro Ramírez
Profesorcristian mosquera trullo
Gerson Augusto Rosales Jauregui
Wilber Larris Carranza Campos
Juan Diego Moncaleano Quiñones
Daniel Del Rio Cruz
Cristian Damaso Calderon Rojas
DAVID ENRIQUE SÁNCHEZ SIERRA
Eliezer Romero
Denis Alberto Cosi Vasquez
Luis Fernando Chacha Montenegro
Luis Alfredo Navarro Albarracin
Cesar Eduardo Valle Pino
Jesús Patricio Pereira Matus
Alejandro Ramírez
ProfesorDiego Ivan Cundapi Leon
Alexander Flores Rayme
Will Carlo
JUAN DAVID CORRALES AGUILAR
José Ángel Arreola González
Leonardo Cueva
ALEXANDER CARDONA ALZATE
Angie Leticia Gil Lopez
Alejandro Ramírez
ProfesorKristhian Lizcano
Ingenieria Resuelve
Luis Fernando Chacha Montenegro
Ana Maria Gómez
Juan David Grijalba
Juan Gabriel Ballesteros Villacrés
juan.restrepoa
Si no quieren descargar el archivo de application.properties entonces aqui les dejo el texto que deben pegar en ese archivo:
langchain4j.open-ai.chat-model.api-key=demo langchain4j.open-ai.chat-model.model-name=gpt-4o-mini
Y tambien por si acaso el del build.gradle :
// LangChain4j implementation 'dev.langchain4j:langchain4j-open-ai-spring-boot-starter:1.0.0-beta1' implementation 'dev.langchain4j:langchain4j-spring-boot-starter:1.0.0-beta1'
Gracias Paul!
En mi caso trabajo con maven y gemini, para lo que requieran les dejo las dependencias:
<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-google-ai-gemini-spring-boot-starter</artifactId> <version>1.3.0-beta9</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-spring-boot-starter</artifactId> <version>1.3.0-beta9</version> </dependency>
Tambien necesitan las propiedades
langchain4j.google-ai-gemini.chat-model.api-key=<<Aqui colocar la Apikey generada por gemini>> langchain4j.google-ai-gemini.chat-model.model-name=gemini-2.5-flash #Esta version es la gratuita
Aqui pueden generar la api key:
Saludos,
Genial! La ventaja de LangChain4j es esa, que puedes usar cualquier LLM.
muchas gracias
Aqui esta el promt
"Genera un saludo de bienvenida a la plataforma de gestión de películas PlatziPlay. Usa menos de 120 caracteres y hazlo con un estilo amigable."
2026 - Lo que a mi me funciono con Gradle:
En el Build:
implementation 'dev.langchain4j:langchain4j-open-ai-spring-boot-starter:1.0.0-beta1 'implementation 'dev.langchain4j:langchain4j-spring-boot-starter:1.0.0-beta1'
En application properties:
langchain4j.open-ai.chat-model.api-key=demo langchain4j.open-ai.chat-model.model-name=gpt-4o-mini
gracias amigo
Muchas gracias
Maven:
<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId> <version>1.0.0-beta1</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-spring-boot-starter</artifactId> <version>1.0.0-beta1</version> </dependency>
application.properties:
# Configuración simple para desarrollo - no requiere API keys langchain4j.open-ai.chat-model.api-key=demo langchain4j.open-ai.chat-model.model-name=gpt-4o-mini
Muchas gracias!
yo tuve que agregar una configuración
package com.platzi.play; import dev.langchain4j.service.AiServices;import dev.langchain4j.model.openai.OpenAiChatModel;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration; @Configurationpublic class AiServiceConfig { @Bean public PlatziPlayAiService platziPlayAiService() { // OpenAiChatModel model = OpenAiChatModel.builder() // .apiKey(System.getenv("OPENAI_API_KEY")) // .build(); OpenAiChatModel model = OpenAiChatModel.builder() .baseUrl("http://langchain4j.dev/demo/openai/v1") .apiKey("demo") .modelName("gpt-4o-mini") .build(); return AiServices.create(PlatziPlayAiService.class, model); } }
con lo del property no funcionó del todo
A la fecha de hoy, no está disponible LangChain4j para Spring Boot 4. Utilicen la versión 3.5.
A mi me funcionó con la versión:
id 'org.springframework.boot' version '4.0.5'
Es verdad, el demo no funciona para la versión:
implementation 'dev.langchain4j:langchain4j-open-ai-spring-boot4-starter:1.13.0-beta23'implementation 'dev.langchain4j:langchain4j-spring-boot4-starter:1.13.0-beta23'
Para quienes utilicen Maven, hay que copiar las siguientes líneas en las dependencias del archivo pom.xml
Con la versión 1.0.0-beta1, funciona tal como lo muestra Alejandro en la clase, y no olviden presionar el botón para que se actualicen las dependencias del proyecto.
eh estado viendo y probando el tema de @Restcontroller y @GetMapping y bueno pude definir lo siguiente restcontroller es para que el codigo o la clase en java se comporte en rest a que me refiero con esto, poder hacer que devuelva cosas en base a una peticion o endpoint, getmapping defines el endpoint entre parentesis la / define el root o punto de inicio de la api y lo que este debajo de esta anotacion sera lo que se ejecutara al entrar a ese endpoint, corriganme si estoy mal o si estoy bien acepto recomendaciones son mis primeros 20 o 30 min viendo spring :cc
Tu explicación es correcta Jesús: @RestController le indica a Spring que esa clase va a exponer endpoints REST (las respuestas se devuelven directamente en formato JSON o similar). Y @GetMapping("/...") define la ruta que va a responder a una petición GET en ese endpoint.
La recomendación es que poco a poco explores otras anotaciones como @PostMapping, @PutMapping o @DeleteMapping, que siguen la misma idea pero para otros verbos HTTP. Vas excelente para llevar solo unos minutos con Spring! 🚀
Me hubiera gustado iniciar conociendo el sistema de carpetas, para ubicar donde se cargan las clases, dependencias, etc.
UPDATE HOLA!!!! hay version ya disponible con spring-boot con maven:
usen la version:
0.36.0
para ambos (maven):
langchain4j-spring-boot-starter
langchain4j-open-ai-spring-boot-starter
Por un momento creí que era para ayudar al autocompletado del código, increible que ahora podeamos generar cosas como los LoremIpsums con IA directamente desde el código súper fácil.
Si nos les funciona, consejo: Revisen los demás comentarios. Algunos compañeros han publicado las dependencias que funcionan según su caso. Para el mío fueron las siguientes:
implementation 'dev.langchain4j:langchain4j-spring-boot-starter:0.31.0'
implementation 'dev.langchain4j:langchain4j-open-ai-spring-boot-starter:0.31.0'
Hola al equipo de Platzi! 👋🏻 El valor "demo" ya no funciona en la API KEY, deberian añadir un Disclaimer en la descripcion de este video o antes de empezar, mencionando que ahora si o si debes de fondear tu cuenta de OpenAI Platform y generar tu propia API-KEY. Un saludo! 🫡
pues a mi si me funciono con estas dependencies:
implementation 'dev.langchain4j:langchain4j-spring-boot-starter:0.31.0'implementation 'dev.langchain4j:langchain4j-open-ai-spring-boot-starter:0.31.0'
Excelente curso, muy chevere la funcionalidad de IA
Esta Clase me encanto!
Angie, te imaginas un curso completo de LangChain4j? 👀
Dependiendo de las preferencias del usuario mostrarle sus peliculas favoritas
Hola buen dia, mi duda es que funcion esta teniendo esta variable
String generateGreeting();
Es el método invocado desde el Controller al endpoint /. Recordemos que ese método tiene la anotation @UserMessage("""
Genera un saludo de bienvenida a la plataforma de Gesti�n de Pel�culas PlatziPlay.
Usa menos de 120 caracteres y hazlo con el estilo de Platzi.
""") y dispara el prompt a la IA y nos devuelve el saludo aleatorio....
Hola! Me salta un dev.langchain4j.exception.HttpException: 401 Unauthorized. He creado una key desde gpt y la he agregado en .properties con langchain4j.openai.api-key pero aún no funciona. Alguien sabe como puedo solucionarlo?
Me paso lo mismo, lograste solucionarlo?, no quiero quedarme estancado.
Para usar el api-key: demo
debes agregar tambien la siguiente propiedad en al archivo aplication.properties:
langchain4j.open-ai.chat-model.base-url=http://langchain4j.dev/demo/openai/v1
Al menos deberías tener las tres propiedades siguientes:
langchain4j.open-ai.chat-model.api-key=demo
langchain4j.open-ai.chat-model.model-name=gpt-4o-mini
langchain4j.open-ai.chat-model.base-url=http://langchain4j.dev/demo/openai/v1
Para los que mencionan que no les funciona la parte del iaService, me funcionó de esta manera:
Dentro del mismo paquete me tocó crear una clase que le puse LangChainConfig
package com.platzi.play; import dev.langchain4j.model.chat.ChatLanguageModel;import dev.langchain4j.model.openai.OpenAiChatModel;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class LangChainConfig { @Bean public ChatLanguageModel chatLanguageModel() { return OpenAiChatModel.builder() .apiKey("demo") .modelName("gpt-4o-mini") .baseUrl("http://langchain4j.dev/demo/openai/v1") .build(); }}
En el application.properties me quedó asi:
langchain4j.open-ai.chat-model.api-key=demolangchain4j.open-ai.chat-model.model-name=gpt-4o-minilangchain4j.open-ai.chat-model.base-url=http://langchain4j.dev/demo/openai/v1langchain4j.open-ai.chat-model.enabled=true
En el build.gradle:
implementation 'dev.langchain4j:langchain4j-open-ai:0.35.0'implementation 'dev.langchain4j:langchain4j:0.35.0'implementation 'dev.langchain4j:langchain4j-spring-boot-starter:0.35.0'