Ir al contenido principal

Spring AI: First application

¡Hola! 👋 Si estás aquí, seguramente te pica la curiosidad sobre cómo integrar Inteligencia Artificial en tus aplicaciones Java sin complicarte la vida. Spring AI ha llegado para facilitarnos enormemente esta tarea, ofreciendo una abstracción unificada para interactuar con modelos como OpenAI, Azure, o incluso modelos locales con Ollama.

En este tutorial, vamos a crear juntos un ejemplo muy sencillo: un endpoint REST que te permitirá charlar con una IA. ¡Verás que con muy pocas líneas de código tienes algo funcionando!


¿Qué necesitamos antes de empezar?

Para seguir este tutorial sin problemas, asegúrate de tener a mano:

  • Java 17 o superior (Spring Boot 3 lo requiere).
  • Tu IDE favorito (IntelliJ, Eclipse, VS Code...).
  • Una API Key de OpenAI (puedes conseguirla en platform.openai.com). Si prefieres no gastar créditos, al final te cuento cómo hacerlo gratis con Ollama.

1. Creando los cimientos del proyecto

Lo más rápido es ir a start.spring.io y generar un nuevo proyecto. Selecciona:

  • Project: Maven
  • Language: Java
  • Spring Boot: 3.2.x o superior
  • Dependencies: Busca y añade:
    • Spring Web (para hacer nuestra API).
    • OpenAI (dentro de la sección "AI").

¿Prefieres configurar el pom.xml a mano?

Si ya tienes un proyecto y quieres añadirle "superpoderes", asegúrate de incluir el BOM (Bill of Materials) de Spring AI y el starter correspondiente. Tu pom.xml debería lucir algo así:

<properties>
    <java.version>17</java.version>
    <spring-ai.version>1.0.0-SNAPSHOT</spring-ai.version> <!-- ¡Ojo! Revisa la última versión -->
</properties>

<dependencies>
    <!-- Necesario para crear nuestro endpoint REST -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- La magia de Spring AI para OpenAI -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- Importante: Spring AI aún puede estar en repositorios milestone -->
<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

2. Configurando la "Llave Maestra"

Ahora necesitamos decirle a nuestra aplicación cómo autenticarse con OpenAI. Abre tu archivo application.properties (o application.yml) y añade lo siguiente:

spring.application.name=spring-ai-demo

# Aquí va tu API Key. ¡No la compartas con nadie!
spring.ai.openai.api-key=${OPENAI_API_KEY}
spring.ai.openai.chat.options.model=gpt-3.5-turbo

Consejo Pro: En lugar de pegar tu API Key directamente en el archivo (y subirla por error a GitHub 😱), defínela como una variable de entorno en tu sistema: export OPENAI_API_KEY=tu-clave-secreta. Spring la recogerá automáticamente.


3. ¡A programar! 

Aquí viene la mejor parte. Gracias a Spring AI, interactuar con el modelo es trivial. Vamos a usar ChatClient, una interfaz fluida que simplifica mucho las llamadas.

Crea una clase llamada AIController.java:

package com.ejemplo.springai;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class AIController {

    private final ChatClient chatClient;

    // Spring Boot es tan listo que nos inyecta el ChatClient ya configurado
    public AIController(ChatClient.Builder chatClientBuilder) {
        this.chatClient = chatClientBuilder.build();
    }

    @GetMapping("/chat")
    public String chat(@RequestParam(value = "message", defaultValue = "Cuéntame un dato curioso sobre programación") String message) {
        
        // ¡Mira qué sencillo! Le enviamos el mensaje al usuario y pedimos el contenido
        return chatClient.prompt()
                .user(message)
                .call()
                .content();
    }
}

¿Has visto? Solo 5 líneas de código real para tener un chatbot funcional.


4. El momento de la verdad 

Vamos a ver si esto funciona.

  1. Inicia tu aplicación Spring Boot:

    ./mvnw spring-boot:run
    
  2. Abre tu navegador o una terminal y prueba tu nuevo endpoint:

    curl "http://localhost:8080/chat?message=Explica+Spring+AI+como+a+un+niño+de+5+años"
    

¿Qué debería pasar?

Si todo ha ido bien, recibirás una respuesta generada por la IA, algo como:

"Imagina que Spring AI es como un traductor mágico. Tú le hablas en el idioma de Java (que es el que usas para construir tus juguetes de software) y él se encarga de hablar con los robots súper listos (las IAs) para que hagan lo que tú quieras, ¡sin que tengas que aprender a hablar robot!"


Bonus Track: ¿Y si quiero usar modelos locales (gratis)? 

Si no quieres depender de OpenAI o quieres privacidad total, puedes usar Ollama.

  1. Descarga e instala Ollama.
  2. En tu pom.xml, cambia spring-ai-openai-... por spring-ai-ollama-spring-boot-starter.
  3. En application.properties, apunta a tu local:
    spring.ai.ollama.base-url=http://localhost:11434
    spring.ai.ollama.chat.model=llama3
    
  4. ¡No toques el código Java! Gracias a la abstracción de Spring AI, tu AIController funcionará exactamente igual. Magia pura. ✨

¡Y eso es todo! Ya tienes tu primera aplicación con Inteligencia Artificial. ¿A que ha sido fácil?

Comentarios

Entradas populares de este blog

Android Studio, el nuevo entorno de desarrollo (I/O 2013)

Una de las novedades que nos ha dejado la conferencia Google I/0 2013 ha sido la publicación de un nuevo entorno de desarrollo que pasará a sustituir a Eclipse + SDK + ADT . El nuevo entorno pretende simplificar el desarrollo de aplicaciones, estando todo mucho más integrado y pensado para desarrollar específicamente para Android. Android Studio está basado en  IntelliJ IDEA (El cual para muchos desarrolladores está considerado el mejor IDE del mercado). El principal objetivo es hacerlo todo más usable y orientado a la programación en Android, por lo que para ello se han incluido nuevas refactorizaciones y quick fixes (soluciones rapidas) para corregir errores comunes, así como recomendaciones varias. Se ha incluido un nuevo editor gráfico mucho más potente (basado en drag-and-drop) que mejorará la experiencia y la edición de las pantallas (dicho sea de paso, el que teníamos hasta ahora era bastante mejorable). Este nuevo editor nos dará una vista previa más real del resul...

Android acapara 9 de cada 10 'smartphones' vendidos en España

El lanzamiento del  iPhone 5S  y del  iPhone 5C  previsto para la semana próxima (10 de septiembre) viene a completar una estrategia aparentemente de transición de la firma de la manzana.  Apple  mantiene una imagen de marca impoluta, pero las cifras del mercado avalan al sistema  Android  como la apuesta segura de la telefonía móvil en estos momentos. El anuncio esta semana de la compra de  Nokia  por parte de  Microsoft  es una brizna de esperanza para la reactivación de un mercado dominado por el sistema operativo del robotijo. Según datos de Worldpanel ComTech, la cuota de ventas de Android en España fue de un apabullante 89,9% del mercado entre mayo y julio. Apple se conforma con un 6,1% de los nuevos móviles, Windows se queda con un 1,8% y  BlackBerry  (que llegó a ser objeto de moda-culto entre jóvenes hace pocos años) se queda en un alarmante 0,7% del mercado.