Sí, yo también he usado alguna de los famosos plataformas de GenAI para generar fotos, para crear copys publicitarios, para estudiar para exámenes y hasta para consultar por la salud de mi perrita. Sin embargo, a inicios de febrero me pregunté: ¿será posible que yo pueda crear este aplicativo web loco que me quita el sueño desde hace meses con la ayuda de GenAI?
En principio, me negé a creerlo. Les doy más contexto: yo me gradué como administrador en 2015, no como programador. No obstante esta decisión, si es cierto que me reconozco como un entusiasta y autodidacta de la tecnología desde hace mucho. He trabajado doce años en el mundo digital, y en mi experiencia como Senior Product Manager estoy capacitado para liderar y tomar decisiones sobre proyectos tecnológicos complejos (Cloud, ML, etc). Claro, pero cuando se trata de ‘codear’, la anécdota más cercana que recuerdo es la de editar un archivo CSS con algunas nociones de HTML.
Con algo de dudas encima, decidí embarcarme en el reto. El objetivo era relativamente simple: crear ‘Hey DJ Fer’, un aplicativo web fullstack (con back y front end) que le permita a un usuario promedio de Spotify colocar el link de una canción y obtener como resultado una predición del género musical que le corresponde basado en una clasificacion personal de 50 categorías. Básico, pero con algunas complejidades no tan explícitas.


Si bien en este post me concentraré en los aprendizajes del uso de GenAI, antes de continuar les compartó unas breves líneas sobre las exigencias que me planteé para este proyecto. Primero, me propusé utilizar la data disponible de la API pública de Spotify como insumo para las predicciones de mi modelo. Segundo, decidí armar mi modelo ML a partir de una base de datos propia (10,000 registros, 20 variables) donde he clasificado en 50 etiquetas (géneros) la música que escucho (esta base la armé entre 2012 y 2023). Finalmente, y no menos importante, busqué que las predicciones realizadas por el modelo se ejecuten en tiempo real (esto implicaba exponer el modelo en Cloud).

Aquí arriba también tienen un esquema de la arquitectura de mi aplicativo. Para los más geeks, al final del artículo les dejaré los links a los recursos de mi proyecto. En adelante, este artículo buscará enfocarse en los aprendizajes que tuve a partir del uso de plataformas de GenAI (ChatGPT-4-turbbo, Deepseek-V3, Vercel-v0) durante estos 5 días en los que abordé el proyecto.
1) El arte de los prompts: ir de lo macro a lo micro
Ya saben lo que dicen: mientras más contexto les des a los chatbots de AI mejor. Esto es 100% cierto, pero además agregaría un detalle relevante. Al enfrentar un proyecto de esta magnitud creo sirve muchísimo iniciar con un prompt que defina claramente el plan/flujo de tu proyecto. No tiene que ser 100% preciso, pero si le ayudará a ChatGPT o Deepseek a recomendar un stack de herramientas y pasos que sean útiles para tus fines. Tras este primer prompt general puedes ir pidiendole abordar una etapa a la vez. Finalmente, no te olvides de confesar tu nivel de expertise («no se programar») a las herramientas de GenAI, ellas sabrán lo mejor para ti.
Ejemplo personal: empecé el proyecto solo describiendo la necesidad de «crear un modelo para clasificar canciones», pero luego me percaté que hubiera sido más ordenado empezar con un prompt que brinde un panorama general del proyecto, y luego abordar cada etapa en específico. Debido a que omití estos otros datos relevantes, me tocó iterar la arquitectura del aplicativo web al menos un par de veces.

2) Si se te acaban los tokens, visita el chatbot AI del frente
Una parte clave de este proyecto era mi intención por realizarlo con herramientas gratuitas. Esto se convirtió en una restricción importante con el pasar de las horas, pues al hacer un uso intensivo de estas plataformas me encontré varias veces con el llamado «límite de tokens». Como es conocido, ChatGPT tiene una limitación respecto a la cantidad de textos o data que puedes utilizar para interactuar con este (ver más detalle aquí). Lo cierto es que en medio del revuelo generado por Deepseek, no pude evitar irme a «la tienda de enfrente» una vez que me encontré con el tope de la versión gratuita de OpenAI. Felizmente para mi, Deepseek mostró un rendimiento comparable y parecía nunca llegar al tope de «tokens usados». Eso sí, cada tanto recibia respuestas de que «el servidor estaba ocupado». En suma, si deseas mantener tu costo en cero, asegurate de tener a la mano a los primos hermanos de estos LLMs: Perplexity, Claude, o Gemini.
Ejemplo personal: intente narrar todos los prompts de mi proyecto en solo una ventana de ChatGPT, pero al llegar al limite de tokens, me tocó copiar la última respuesta del chatbot y saltar hacia Deepseek con un poco de contexto para no partir de cero. Sé que esto de saltar de chatbot puede marear a algunos: les recomienda evaluar la versión pagada si buscan trabajar sin interrupciones.

3) Antes que pedir solo código, enfócate en aprender
Por fin había llegado el momento de empezar a programar. Por sugerencia de ChatGPT, utilicé Python para poder armar el back end del aplicativo, a pesar que mi experiencia con este lenguaje de programación era limitada. Así fue que comencé a escribir mis primeros prompts para solicitarle al chatbot el código de python que me permitiría crear mis primeras APIs. No les voy a mentir: al inicio parecía demasiado denso para comprender; sin embargo, con el pasar de las horas comencé a detectar patrones en la forma en como se planteaban las funciones y variables. Enseguida comencé a hacerle preguntas conceptuales a ChatGPT para entender la lógica del código y a los dos días ya había empezado a detectar los errores que el chatbot cometía al entregarme el código. Por todo esto, mi sugerencia es que no solo vean a las plataforma de GenAI como meras fábricas de código, sino como potenciales profesores.
Ejemplo personal: me encantó como ChatGPT explicaba con «manzanitas» la lógica detrás del código que generaba. Esto fue vital para estimular mi aprendizaje. Asimismo, tras varios horas de práctica, me atreví a corregirle la definición de algunas funciones o incluso señalarle omisiones que estaban impidiendo que el código funcionara bien.

4) GenAI es tu mejor aliado en el debugging
Como buen product manager, la intensidad la llevo en la sangre: yo también pido los entregables ‘para ayer’ y busco que el aplicativo llegué a producción lo más rápido posible. Sin embargo, al enfrentar este reto de ‘codear’ con la ayuda de los chatbots GenAI tuve que aprender la virtud de la paciencia. En efecto, desde ya les advierto que el código que genera ChatGPT o Deepseek no funcionará bien al primer intento. Esto sucede debido a que, por más contexto que les proporciones, estas herramientas pueden confundirse en su intento de responder tu solicitud. La buena noticia es que las plataforma de GenAI destacan mucho por ser los mejores aliados en el debugging: es decir te ayudan a encontrar errores en tu código. No lo pienses más y pásales el error para que ellos te asesoren.
Ejemplo personal: después de compartirles varios de mis errores, Deepseek empezó a señalar posibles soluciones en mi código de Python e incluso a sugerir que incorpore más lineas que me permita grabar data en los logs y así tener más pistas del error. Después de algunos intentos, comencé a ver la salida y pude solucionar el código errado. Es simplemente maravilloso.

5) Activar la opción de consulta web te puede ahorrar muchísimas horas
Los chatbots de AI son muy poderosos pero no siempre han incorporado la última información disponible dentro de su modelo de aprendizaje. Al momento de escribir este artículo, la versión de uso libre de ChatGPT esta actualizada hasta junio 2024; mientras que Deepseek, lo esta hasta julio 2024. En ese sentido, si es verdad que los chatbot de IA pueden omitir detalles relevantes que podrían ahorrarte varias horas de trabajo. Por este motivo les recomiendo activar la opción de «Search Web» en la plataforma de GenAI que esten utilizando.
Ejemplo personal: al consultar la API pública de Spotify en vivo para obtener las variables de una canción pude notar que algunas veces obtenía una respuesta «403 Forbidden Response». Después de apoyarme en ChatGPT y Deepseek para el debugging, noté que ninguna de las soluciones que me planteaban funcionaban. Tras 1 día entero de pruebas, decidi probar más suerte con una búsqueda simple en Google. ¡Y BINGO, hallé el error! No era mi culpa, sino la de Spotify que había bloqueado parcialmente el uso de sus APIs en noviembre último. Me tocó replantear.

6) El orden es clave cuando escalas en tamaño de prompts
Con el pasar de las horas, mi aplicativo web se volvía cada vez más complejo. Asimismo, como lo comentaba en líneas anteriores, me vi en la obligación de iterar entre ChatGPT y Deepseek para no incurrir en costos. Frente a este escenario, empecé a tener un miedo justificado: al pasarme de una plataforma a otra era probable que comenzará a omitir contexto relevante del aplicativo que estaba construyendo. Aquí es donde todo pudo ir cuesta abajo. Sin embargo, la solución que me propuse fue la de extremar el orden con el cual realizaba los prompts asignando «etiquetas» a los módulos de la arquitectura que estaba armando. Así también, empecé a ser más preciso (pe. «paso 1», «paso 2») en referencia a las largas respuestas que a veces los chatbots me brindaban.
Ejemplo personal: cuando me tocó consultar por el código para crear una API orquestadora (una que llama a varias APIs a la vez) plantee asignar un nombre para cada API de acuerdo a la función que cumplían (pe. «Extract Data From Spotify Track» y «Use Data to Call Vertex Endpoint»). De esta manera, cada vez que queria hacer referencia a la misma, solo tenía que mencionar su nombre en el chat para facilitarle el trabajo al modelo.

7) Armar el Front End es brutalmente rápido (y más aún publicarlo)
Al final del día 4, cuando terminé el Back End estaba en la gloria, y pensé que armar la parte Front tomaría igual muchas horas. La realidad fue distinta. Con la ayuda del chatbot de Vercel pude armar una página web sencilla y a la medida de lo que esta buscando. Desde el lenguaje sugerido (Node.js) hasta los archivos requeridos, todo fluyó rápidamente. Es más, la funcionalidad de integración con GitHub hizo posible que pudiera publicar mi aplicativo web en una URL pública con algunos pocos clics. Mi sugerencia es que dejes la parte Front para el final, ya que es muy probable que te ocupe poco tiempo del proceso.
Ejemplo personal: esta era mi primera vez usando Vercel así que traté de ser lo más específico desde el arranque indicando el objetivo general de mi proyecto. Luego, tras un par de interacciones, pedi instrucciones específicas para poder levantar la web en una URL pública.

***
Reflexión final
Literalmente, este proyecto pasó de 0% a 100% en cuestión de horas o días. En verdad me ha quedado corto este artículo para contarles sobre los aprendizajes que obtuve con todo este procedimiento. «Hey DJ Fer» ha sido un experimento para reencontrarme con mi lado más autodidacta y explorar un caso de uso que demuestra (otra vez) la potencia de los modelos de LLM. Y tú, ¿también estas experimentando con GenAI? Contacta conmigo y cuéntame tu experiencia.
***
Recursos usados en Hey DJ Fer
Proyecto en Github: https://github.com/fperezt30/heydjferv3.0
Url pública del proyecto: https://v0-hey-dj-fer.vercel.app/ (de momento apague el API del proyecto porque me quedé sin crédito gratuitos en Google Cloud Platform)
Google Cloud Platform: https://cloud.google.com/(Te regalan cerca de $300 para que uses la plataforma de forma gratuita, super práctico)
Documentación API Spotify: https://developer.spotify.com/documentation/web-api ( y aca la noticia donde indican el deprecamiento de «Audio Features»)
Integración Vercel con Github: https://vercel.com/docs/deployments/git (te permiten publicar tu web de forma gratuita)