¿Por qué un desarrollador Java necesita ChatGPT? O cómo dejar de temerle y amar las redes neuronales
\n¡Hola, colega! Si estás leyendo esto, significa que, como yo, estás harto de escribir respuestas repetitivas para el soporte técnico, generar descripciones aburridas de productos o analizar reseñas manualmente. ¿Y si te dijera que en solo una tarde puedes darle vida a tu aplicación Java conectándole inteligencia artificial de verdad? Sí, sí, me refiero a ese ChatGPT que sabe contar chistes, escribir código e incluso explicarle el teorema de Pitágoras a un gato.
\nEn este artículo no vamos a analizar teoría de probabilidades ni a enseñar transformadores. Simplemente tomaremos Java, añadiremos una pizca de peticiones HTTP y haremos que GPT-4 (o 3.5, si el presupuesto aprieta) trabaje para nosotros. ¿Suena a magia? En realidad es pura ingeniería. ¡Allá vamos!
\n\n¿Qué necesitamos? El kit básico indispensable
\nAntes de escribir código, asegúrate de tener:
\n- \n
- JDK 11 o superior (usaremos el nuevo
HttpClient, que apareció precisamente en la versión 11); \n - Clave API de OpenAI — puedes obtenerla en la plataforma de OpenAI. No olvides recargar saldo (literalmente unos pocos dólares, para pruebas es suficiente); \n
- Cualquier IDE — IntelliJ IDEA, Eclipse o incluso un bloc de notas, si eres un hardcore; \n
- Maven o Gradle — para conectar dependencias de forma cómoda (pero nos limitaremos al mínimo). \n
Por cierto, si piensas que la integración de ChatGPT en Java es algo complicado que requiere aprendizaje automático, me apresuro a alegrarte: todo se resuelve con una simple petición HTTP. Nada de redes neuronales en tiempo de ejecución, solo REST API.
\n\nPreparación del proyecto: Maven y dependencias
\nCrea un nuevo proyecto Maven y añade en pom.xml una sola librería — Jackson para trabajar con JSON. Sin ella no podemos avanzar, porque ChatGPT se comunica con el mundo exclusivamente en este idioma.
<dependency>\n <groupId>com.fasterxml.jackson.core</groupId>\n <artifactId>jackson-databind</artifactId>\n <version>2.15.2</version>\n</dependency>\n\n¡Eso es todo! Sin SDK, sin envoltorios, solo Java puro y nuestro ingenio. Si usas Gradle, simplemente añade implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'.
Estructura de la petición a la API de OpenAI
\nAntes de escribir código, analicemos qué espera el servidor de nosotros. La API de ChatGPT acepta una petición POST en el endpoint https://api.openai.com/v1/chat/completions. El cuerpo de la petición es un JSON con esta estructura:
{\n "model": "gpt-3.5-turbo",\n "messages": [\n {"role": "system", "content": "Eres un asistente útil."},\n {"role": "user", "content": "Cuenta un chiste sobre desarrolladores Java."}\n ],\n "temperature": 0.7\n}\n\nAnalicemos los campos:\n
- \n
- model — qué modelo responde. Para ahorrar, usa
gpt-3.5-turbo; para respuestas increíbles,gpt-4; \n - messages — array de mensajes. El mensaje del sistema establece el tono, y el de user es nuestra consulta; \n
- temperature — de 0 a 2. Cuanto más alto, más creativa la respuesta (y más probabilidades de que la red neuronal comience a alucinar). \n
La respuesta también llega en JSON, y nos interesa el campo choices[0].message.content. Ahí es donde se esconde el texto que mostraremos al usuario.
Escribimos el código: Cliente Java para ChatGPT
\nCrearemos la clase ChatGPTClient. Se encargará de enviar peticiones y procesar respuestas. Todo el código en un solo archivo, para no multiplicar entidades.
import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpRes