Enviar pregunta a OpenAI vía Spring AI y mostrar la respuesta

Crear clave OpenAI
https://platform.openai.com/settings/organization/api-keys

Luego, establecer la clave como variable de entorno: OPENAI_API_KEY

Crear nuevo proyecto Spring Boot:
https://start.spring.io/

Dentro de la aplicación Spring Boot, es decir, en el archivo “application.properties”, referenciar la clave de OpenAI o la variable de entorno (OPENAI_API_KEY).

Después de crear la interfaz y las clases, la estructura del proyecto debería verse así:

Después de ejecutar la prueba unitaria, la respuesta a la pregunta “Who would win in a fight between Superman and Chuck Norris?” debería mostrarse. En este caso:

“Respuesta: En una pelea hipotética entre Superman y Chuck Norris, es importante considerar sus respectivos atributos. Superman, siendo un personaje ficticio de DC Comics, posee fuerza sobrehumana, velocidad, vuelo, invulnerabilidad y varios otros poderes, incluyendo la visión de calor y aliento congelante. Estas habilidades lo convierten en uno de los superhéroes más poderosos.

Chuck Norris, por otro lado, es una persona real conocida por su experiencia en artes marciales y sus papeles en películas de acción. Aunque tiene un estatus legendario en la cultura popular, a menudo exagerado en chistes y memes sobre su dureza, sigue siendo humano y carece de las habilidades sobrehumanas que tiene Superman.

En un contexto puramente ficticio, la amplia gama de superpoderes de Superman probablemente le daría ventaja en un enfrentamiento físico. Sin embargo, el resultado de tal pelea dependería en última instancia del contexto y las reglas establecidas dentro de ese escenario ficticio.”

Usar REST-Controller

Crear REST-Controller.
Por ejemplo, se puede acceder al endpoint via Postman con la siguiente URL localhost:8080/ask.

La estructura del proyecto debería verse así:

Invocar el endpoint vía Postman:

Usar Prompt-Template

Un Prompt-Template en Spring AI es una plantilla que contiene marcadores de posición para entradas dinámicas, con el fin de crear prompts estructurados para modelos de IA. Permite la generación flexible de solicitudes al insertar variables como entradas de usuario o información de contexto.

En este caso, via Postman solo quiero enviar el nombre “Superman” al nuevo endpoint “template”. En segundo plano, la palabra “Superman” se inserta en el siguiente Sazt/pregunta/plantilla y se responde: “What is the real name of {value}?”.

La estructura del proyecto debería verse así:

Usar System-Prompt