package com.ejemplo.productos;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/productos")
public class CategorizadorDeProductosController {
private final ChatClient chatClient;
public CategorizadorDeProductosController(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder.build();
}
@GetMapping("/categorizar")
public String categorizarProducto(@RequestParam String descripcion) {
String system = """
Eres un asistente especializado en categorización de productos.
Debes responder solo con una categoría válida.
""";
String userPrompt = """
Clasifica el siguiente producto en una sola categoría.
Categorías permitidas:
- Electrónica
- Ropa
- Hogar
- Deportes
- Belleza
- Juguetes
- Alimentos
- Libros
- Mascotas
- Otros
Reglas:
- Responde solo con una categoría.
- No expliques tu respuesta.
- Si hay duda, responde: Otros.
Producto: %s
""".formatted(descripcion);
return this.chatClient.prompt()
.advisors(new SimpleLoggerAdvisor())
.system(system)
.user(userPrompt)
.options(OpenAiChatOptions.builder()
.model("gpt-4o-mini")
.temperature(0.2)
.build())
.call()
.content();
}
}