Crear un agente de IA personalizado que recomiende y reproduzca música según tu estado de ánimo es posible con herramientas open source como Strands y Ollama. Esta guía muestra cómo diseñar paso a paso un DJ personal que se conecta con Spotify, pensada para desarrolladores que quieren entender cómo funciona un agente más allá de un simple modelo.
¿Qué diferencia hay entre un modelo y un agente de IA?
Un modelo responde con la información con la que fue entrenado y tiene una fecha de corte. Un agente, en cambio, realiza acciones: usa herramientas, consulta APIs y decide qué hacer para cumplir tu petición.
Piensa en este ejemplo del minuto [0:30]: si le preguntas a un modelo cuál es el último éxito de Shakira, probablemente te responda con una canción del Mundial de Catar porque no tiene datos recientes. Un agente, con las herramientas correctas, puede salir a buscar esa información actualizada.
¿Qué es un agente de IA? Es un modelo conectado a herramientas que le permiten ejecutar acciones, consultar APIs y validar respuestas antes de devolverlas al usuario.
¿Cómo se construye un agente básico con Strands y Ollama?
El primer paso es declarar un agente que se comunique con un modelo. Para este proyecto se eligieron tecnologías gratuitas y open source: Python como lenguaje, Strands como SDK creado por Amazon Web Services y Ollama como modelo corriendo local para no pagar por tokens [4:30].
La implementación inicial es mínima. Se importa el SDK de Strands, se declara el modelo Ollama corriendo localmente, se instancia el agente y se le envía un prompt como “¿Cuál fue el último éxito de Queen?”. El agente devuelve The Show Must Go On de 1991 porque esa información ya vive dentro del modelo.
La fórmula mental queda así: agente = modelo + análisis iterativo hasta que la respuesta cumpla con la pregunta.
¿Para qué sirve el system prompt en un agente?
Un agente sin restricciones responde cualquier cosa, incluso recetas de sopa de pollo si se las pides. Para evitarlo se usa el system prompt, que define personalidad y reglas [6:45].
En el caso del DJ, el prompt fue: “Eres un DJ y curador musical experto y respondes en español con onda y buen gusto. Recomiendas música basándote en el mood, la ocasión y los gustos del usuario.” Con esa instrucción, el agente deja de dar respuestas genéricas y empieza a contar la historia de la banda, el contexto de la canción y sugerencias relacionadas.
¿Qué hace un system prompt? Le da personalidad al agente y establece reglas que delimitan qué puede y qué no puede responder.
¿Cómo se agregan herramientas a un agente?
Las herramientas le dan al agente capacidades que el modelo no tiene por sí solo. En Strands se usa el decorador @tool sobre una función de Python, se documenta qué hace y dentro se coloca la lógica: una llamada a una API, una consulta a un MCP o una búsqueda local [8:20].
En el agente, basta con agregar una línea tools=[nombre_funcion] en la declaración. Cuando el usuario pide “ármame un playlist para una fiesta en casa”, el agente ya no responde desde el conocimiento general del modelo: ejecuta la herramienta buscar_canciones y devuelve solo música de la biblioteca personal.
¿Cómo se le da memoria a un agente?
Los agentes sufren de memoria a corto plazo, como el pez de aquella película famosa. Para resolverlo, Strands ofrece el FileSessionManager, que guarda las conversaciones en archivos locales [10:15].
La configuración es directa: se importa el FileSessionManager, se le indica dónde almacenar la memoria por usuario y se asigna en la definición del agente con la línea session_manager. A partir de ese momento, si le dices que te gusta el indie rock, el rock en español y el clásico, las siguientes recomendaciones se construyen sobre esos gustos sin tener que repetirlos.
La equivalencia es simple: memoria = que el agente te recuerde y personalice respuestas.
¿Cuándo conviene mover el modelo a la nube?
Un modelo local funciona bien con pocas herramientas, pero después de cinco herramientas empieza a alucinar [12:40]. Por eso, cuando el agente necesitó conectarse a Spotify y manejar más acciones, el modelo se movió a AWS Bedrock usando Claude Opus 4.6.
El cambio fue una sola línea de código: reemplazar el modelo de Ollama local por un BedrockModel apuntando a Claude. Todas las herramientas existentes siguieron funcionando sin modificaciones.
¿Por qué cambiar de modelo en un agente? Modelos pequeños alucinan al manejar muchas herramientas. Un modelo más potente en la nube soporta agentes más complejos sin perder coherencia.
¿Cómo se conecta el agente con la API de Spotify?
La arquitectura final conecta una página web con el agente, y el agente con la API de Spotify para reproducir música en cualquier dispositivo. Se agregó la autenticación de Spotify con sus llaves y se ampliaron las herramientas a siete: buscar en Spotify, crear playlist, reproducir canción, entre otras [14:30].
Lo interesante es que el agente decide qué herramienta usar según la petición. Si le pides un playlist de Green Day, ejecuta tres herramientas: buscar, crear playlist y reproducir. Si solo le pides reproducir Sweet Child O’ Mine de Guns N’ Roses, usa una sola herramienta. Esa decisión no se programa: la toma el agente.
¿Qué conceptos clave deja construir un agente desde cero?
Estos son los aprendizajes que quedan después de armar el DJ personal:
- Un agente es un modelo que itera hasta responder correctamente.
- El system prompt le da personalidad y dirección.
- Las herramientas son acciones concretas que puede ejecutar.
- Las multiherramientas dejan que el modelo elija cuál usar.
- La memoria permite personalización a lo largo de las conversaciones.
- Cambiar de model provider requiere modificar una sola línea.
¿Ya tienes una idea de qué agente construirías tú? Cuéntala en los comentarios y comparte cómo lo conectarías con tus propias APIs.