commit 3e5864162edcdb305e9b25b6fcc573e4914a2436 Author: IsidoroNM Date: Fri Feb 13 19:57:04 2026 +0100 Commit inicial diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..51a6fca --- /dev/null +++ b/.classpath @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..93e00af --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/bin/ +*.class +/target/ diff --git a/.project b/.project new file mode 100644 index 0000000..a2b9b2b --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + aadd_ia_rest + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bfac099 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=24 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=24 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=24 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d0928d3 --- /dev/null +++ b/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + org.lapaloma.aadd.ia + prueba_ia_rest + 0.0.1-SNAPSHOT + + + + + tools.jackson.dataformat + jackson-dataformat-xml + 3.0.1 + + + \ No newline at end of file diff --git a/src/main/java/org/lapaloma/aadd/ai/AppClienteIARest.java b/src/main/java/org/lapaloma/aadd/ai/AppClienteIARest.java new file mode 100644 index 0000000..5ce67a1 --- /dev/null +++ b/src/main/java/org/lapaloma/aadd/ai/AppClienteIARest.java @@ -0,0 +1,91 @@ +package org.lapaloma.aadd.ai; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +/** + * + * ExtractorCine: Clase que realiza .... + * + * @author Isidoro Nevares Martín - IES Virgen de la Paloma + * @date 5 ene 2026 + * + * + */ + +public class AppClienteIARest { + public static void main(String[] args) throws Exception { + AppClienteIARest app = new AppClienteIARest(); + + String contenidoPromptCliente = "Extrae la información completa, precisa y ordenada de las lineas del metro de Madrid"; + + app.cargarDatosIARest(contenidoPromptCliente); + + } + + private void cargarDatosIARest(String contenidoPromptCliente) { + + String urlProveedorIA = "https://api.groq.com/openai/v1/chat/completions"; + String apiKey = "aquí_colocas_el_contenido_de_tu_api_key"; + String modeloIA = "openai/gpt-oss-120b"; + + try { + + // Se define el prompt del contexto sistema + // para así fijar un comportamiento específico a la IA) + String contextoInicialIA = "Actúa como un extractor de datos JSON. " + "Analiza el contexto proporcionado. " + + "Devuelve exclusivamente un objeto JSON con esta estructura: " + + "{ 'lineas': [{'nombre_linea': '', 'color':'', 'numero': '', 'kilometros': xx.yy}] }. " + + "No escribas nada de texto antes o después del JSON. " + + "Extrae solo información de las lineas del metro de Madrid, no de otras ciudades ni transportes."; + + // Se construye el cuerpo de la petición (Payload) + String jsonInformacionEntrada = """ + { + "model": "%s", + "messages": [ + { "role": "system", "content": "%s" }, + { "role": "user", "content": "%s" } + ], + "response_format": { "type": "json_object" } + } + """.formatted(modeloIA, contextoInicialIA, contenidoPromptCliente); + + // 3. Creamos el cliente y la petición HTTP + HttpClient client = HttpClient.newHttpClient(); + HttpRequest request = HttpRequest.newBuilder().uri(URI.create(urlProveedorIA)) + .header("Authorization", "Bearer " + apiKey).header("Content-Type", "application/json") + .POST(HttpRequest.BodyPublishers.ofString(jsonInformacionEntrada)).build(); + + // Se envía petición + System.out.println("Consultando a Groq..."); + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + + // Se obtiente el resultado + if (response.statusCode() == 200) { + System.out.println("Datos extraídos con éxito:"); + + // Aquí se llama a un método para procesar el JSON recibido, por ejemplo: + procesarRespuestaJSON(response.body()); + + } else { + System.out.println("❌ Error: " + response.statusCode()); + System.out.println(response.body()); + } + + } catch (Exception e) { + e.printStackTrace(); + } + + } + + private void procesarRespuestaJSON(String textoJsonResputa) { + + System.out.println(textoJsonResputa); + + // Aquí podrías usar una librería como Jackson para convertir el JSON a objetos + + } +}