¡Hola, agente en entrenamiento! Emma aquí, de nuevo en agent101.net. Hoy quiero hablar sobre algo que ha estado sonando en mis canales de Slack y proyectos personales durante los últimos meses: conseguir que un agente de IA realmente haga algo útil para ti, de manera consistente, sin necesidad de un doctorado en ingeniería de indicaciones o una granja de servidores en tu armario. Específicamente, vamos a explorar cómo construir un agente de IA super simple, de tarea única, que recupere y resuma noticias específicas para ti – un pequeño buscador de noticias personal, si lo prefieres.
Lo sé, lo sé. “Agente de IA” todavía suena como algo sacado de una película de ciencia ficción, ¿verdad? O tal vez has probado ChatGPT y te has preguntado: “Está bien, pero ¿cómo hago que esta cosa funcione por su cuenta sin que yo tenga que escribir cada comando?” Ese es exactamente el vacío que vamos a llenar hoy. Mi objetivo con este artículo es desmitificar el proceso y mostrarte que construir un pequeño agente de IA enfocado no es tan aterrador como parece. Piénsalo como enseñarle a tu asistente digital un truco muy específico y repetible.
Mi propia experiencia con los agentes comenzó, honestamente, por pura frustración. Estaba pasando demasiado tiempo revisando noticias tecnológicas, tratando de encontrar menciones de actualizaciones de modelos de IA específicos o nuevos marcos de agentes. Había configurado alertas de Google, pero a menudo eran demasiado amplias o lentas. Quería algo que entendiera el contexto, pudiera filtrar el ruido y me diera un resumen conciso. Así que, como cualquier buen programador perezoso (de lo cual me enorgullezco), pensé: “Tiene que haber una forma de automatizar esto con una IA.”
¡Y la hubo! Después de algunos falsos comienzos, cierto desconcierto con las claves API y bastante ensayo y error con diferentes modelos de lenguaje grande (LLMs), encontré un patrón que funciona. No es un sistema multi-agente coordinando tareas complejas, ni va a escribir tu próxima novela. Pero es un punto de entrada perfecto para entender cómo encajan estas piezas para crear algo genuinamente útil.
¿Por qué un Agente “Buscador de Noticias”?
Cuando estás comenzando, elegir un proyecto que sea demasiado ambicioso es una forma segura de desanimarse. Por eso recomiendo comenzar con un agente de tarea única. Nuestro agente “Buscador de Noticias” es perfecto por varias razones:
- Objetivo Claro: Encontrar noticias específicas, resumirlas. Simple.
- Salida Tangible: Obtienes un resumen que realmente puedes leer.
- Depende de Datos Externos: Te enseña cómo los agentes interactúan con el mundo exterior (recopilando información).
- Utiliza LLMs para la Interpretación: El núcleo de la mayoría de los agentes es un LLM que entiende y genera texto.
- Repetible: Una vez construido, puedes ejecutarlo diariamente, semanalmente o cuando quieras.
Imagina despertarte y que tu agente ya te haya preparado un breve resumen de todos los últimos avances en “ética de IA en modelos de lenguaje grande” o “nuevos desarrollos en sensores de conducción autónoma.” No más desplazamientos infinitos por blogs tecnológicos genéricos. Ese es el sueño, y es totalmente alcanzable.
La Anatomía de Nuestro Simple Agente Buscador de Noticias
Cada agente de IA, por simple que sea, generalmente tiene algunos componentes fundamentales. Para nuestro Buscador de Noticias, esto es lo que necesitaremos:
- El “Cerebro” (LLM): Este es nuestro modelo de lenguaje grande. Entenderá lo que buscamos y resumirá la información. Usaré los modelos de OpenAI para este ejemplo porque son ampliamente accesibles y tienen buena documentación, pero podrías usar Claude de Anthropic o incluso un modelo local de código abierto si te sientes aventurero.
- Los “Ojos” (Recopilador de Información): Nuestro agente necesita una forma de obtener información de internet. Para noticias, un lector de feeds RSS o una simple biblioteca de scraping web harán el truco. Lo mantendremos simple con una API de noticias para consistencia.
- Las “Instrucciones” (Prompt): Así es como le decimos al LLM qué hacer. Es crucial para obtener buenos resultados.
- El “Orquestador” (Script en Python): Un script simple para unir todo, diciendo al agente cuándo recoger, cuándo y dónde mostrar los resultados.
No te preocupes si esos términos suenan un poco complicados en este momento. Desglosaremos cada pieza.
Lo que Necesitarás Antes de Comenzar
- Python: Asegúrate de tener Python 3.8 o superior instalado.
- Una Clave de API de OpenAI: Puedes obtener una en la plataforma de OpenAI. Hay un nivel gratuito para pruebas iniciales, pero probablemente necesitarás agregar un método de pago para su uso sostenido. ¡Mantén esta clave en secreto!
- Una Clave de API de Noticias (Opcional pero Recomendado): Servicios como NewsAPI.org o GNews API ofrecen niveles gratuitos que son perfectos para esto. Facilita la obtención de datos de noticias estructurados mucho más que el scraping web en bruto. Para este tutorial, asumiré que tienes una clave de NewsAPI.org.
- Editor de Texto Básico: VS Code, Sublime Text o incluso Notepad estarán bien.
Paso 1: Configurando Tu Entorno
Primero lo primero, vamos a crear un nuevo directorio para nuestro proyecto e instalar las bibliotecas necesarias. Abre tu terminal o símbolo del sistema:
mkdir news_hound_agent
cd news_hound_agent
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
pip install openai requests python-dotenv
Estamos instalando:
openai: Para interactuar con los modelos de OpenAI.requests: Para hacer solicitudes HTTP a la API de noticias.python-dotenv: Para almacenar nuestras claves API de manera segura.
A continuación, crea un archivo llamado .env en tu directorio news_hound_agent y agrega tus claves API:
OPENAI_API_KEY="tu_clave_api_de_openai_aqui"
NEWS_API_KEY="tu_clave_api_de_newsapi_aqui"
Reemplaza los marcadores de posición con tus claves reales. ¡Asegúrate de añadir .env a tu archivo .gitignore si alguna vez pones este proyecto en un repositorio Git!
Paso 2: Construyendo el Recopilador de Información (Los “Ojos”)
Vamos a crear un archivo Python llamado news_fetcher.py. Este módulo será responsable de obtener los artículos de noticias.
# news_fetcher.py
import requests
import os
from dotenv import load_dotenv
load_dotenv() # Cargar variables de entorno desde el archivo .env
NEWS_API_KEY = os.getenv("NEWS_API_KEY")
NEWS_API_URL = "https://newsapi.org/v2/everything"
def fetch_news(query, language='en', sort_by='relevancy', page_size=10):
"""
Recupera artículos de noticias de NewsAPI.org basados en una consulta.
"""
if not NEWS_API_KEY:
print("Error: NEWS_API_KEY no encontrada en el archivo .env.")
return []
params = {
'q': query,
'language': language,
'sortBy': sort_by,
'pageSize': page_size,
'apiKey': NEWS_API_KEY
}
try:
response = requests.get(NEWS_API_URL, params=params)
response.raise_for_status() # Lanza una excepción para errores HTTP (4xx o 5xx)
data = response.json()
articles = data.get('articles', [])
return articles
except requests.exceptions.RequestException as e:
print(f"Error al recuperar noticias: {e}")
return []
if __name__ == "__main__":
# Ejemplo de uso al ejecutar este script directamente
search_term = "Agentes de IA para productividad personal"
articles = fetch_news(search_term, page_size=5)
if articles:
print(f"Encontrados {len(articles)} artículos para '{search_term}':")
for i, article in enumerate(articles):
print(f"{i+1}. {article.get('title', 'Sin Título')} - {article.get('url', 'Sin URL')}")
else:
print(f"No se encontraron artículos para '{search_term}'.")
Este script define una función fetch_news que toma una consulta (por ejemplo, “ética de IA”) y devuelve una lista de diccionarios de artículos. Cada diccionario contiene información como el título, la descripción y la URL. El bloque if __name__ == "__main__": es solo para probar este módulo de forma aislada.
Paso 3: Creando el Prompt (Las “Instrucciones”)
Aquí es donde entra la magia del LLM. Cuanto mejor sea tu prompt, mejor será tu resumen. Vamos a crear un archivo llamado summarizer.py.
# summarizer.py
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def summarize_articles(articles, specific_focus="general overview"):
"""
Resume una lista de artículos de noticias utilizando un LLM de OpenAI.
El parámetro specific_focus ayuda a guiar el resumen.
"""
if not articles:
return "No se proporcionaron artículos."
# Prepara los artículos para el LLM
article_texts = []
for i, article in enumerate(articles):
title = article.get('title', 'Sin Título')
description = article.get('description', 'Sin Descripción')
url = article.get('url', 'Sin URL')
article_texts.append(f"Artículo {i+1}:\nTítulo: {title}\nDescripción: {description}\nURL: {url}\n---")
combined_text = "\n\n".join(article_texts)
# El aviso para nuestro LLM
prompt = f"""
Eres un analista de noticias experto. Tu tarea es revisar los siguientes artículos de noticias y proporcionar un resumen conciso.
El resumen debe centrarse específicamente en "{specific_focus}".
Extrae los desarrollos clave, tendencias y anuncios importantes relacionados con este enfoque.
Mantén el resumen por debajo de 300 palabras, utilizando un lenguaje claro y profesional.
Si un artículo no es relevante para el enfoque específico, puedes mencionarlo brevemente o omitirlo.
Artículos de Noticias:
{combined_text}
Resumen centrado en "{specific_focus}":
"""
try:
response = client.chat.completions.create(
model="gpt-3.5-turbo", # Puedes usar "gpt-4" para mejor calidad, pero es más costoso
messages=[
{"role": "system", "content": "Eres un resumidor de noticias útil y conciso."},
{"role": "user", "content": prompt}
],
max_tokens=500, # Ajustar según sea necesario
temperature=0.7 # Un poco creativo, pero aún factual
)
summary = response.choices[0].message.content.strip()
return summary
except Exception as e:
print(f"Error al resumir artículos: {e}")
return "No se pudo generar el resumen debido a un error."
if __name__ == "__main__":
# Ejemplo de artículos de prueba
dummy_articles = [
{"title": "La IA en la atención médica recibe nueva financiación", "description": "El aumento de inversiones en startups que aplican IA para diagnósticos.", "url": "http://example.com/ai-health"},
{"title": "Nuevo modelo de coche eléctrico lanzado", "description": "La marca de EV de lujo presenta su último vehículo con mayor autonomía.", "url": "http://example.com/ev-car"},
{"title": "Directrices de IA ética propuestas por la UE", "description": "La Unión Europea redacta estrictas reglas para el desarrollo responsable de la IA.", "url": "http://example.com/eu-ai"},
]
focus = "Ética y regulación de la IA"
summary_result = summarize_articles(dummy_articles, focus)
print(f"\n--- Resumen para '{focus}' ---\n{summary_result}")
En este script:
- Cargamos la clave de API de OpenAI.
summarize_articlestoma una lista de artículos y una cadenaspecific_focus. ¡Estespecific_focuses clave! Le dice al LLM qué perspectiva usar al resumir, evitando salidas genéricas.- El aviso está cuidadosamente construido para darle al LLM un rol (“analista de noticias experto”), instrucciones claras (resumen conciso, enfoque específico, límite de palabras) y el contenido con el que trabajar.
- Usamos
gpt-3.5-turboya que es un buen equilibrio entre costo y rendimiento para esta tarea. Siéntete libre de experimentar congpt-4si quieres resúmenes más matizados.
Paso 4: El Orquestador (Uniendo Todo)
Finalmente, crearemos nuestro script principal de agente, main_agent.py, que llamará a nuestro fetcher y resumidor.
# main_agent.py
from news_fetcher import fetch_news
from summarizer import summarize_articles
import datetime
def run_news_hound_agent(search_query, summary_focus):
"""
Orquesta el proceso de obtención y resumen de noticias.
"""
print(f"[{datetime.datetime.now()}] Iniciando el Agente News Hound...")
print(f"Buscando: '{search_query}' con enfoque en '{summary_focus}'")
# Paso 1: Obtener los artículos de noticias
print("Recuperando artículos de noticias...")
articles = fetch_news(search_query, page_size=10) # Recupera 10 artículos
if not articles:
print("No se encontraron artículos o ocurrió un error durante la recuperación. Saliendo.")
return
print(f"Se encontraron {len(articles)} artículos relevantes.")
# Paso 2: Resumir los artículos
print("Resumiendo artículos con LLM...")
summary = summarize_articles(articles, summary_focus)
# Paso 3: Mostrar los resultados
print("\n--- Resumen Diario de Noticias ---")
print(f"Fecha: {datetime.date.today()}")
print(f"Consulta: {search_query}")
print(f"Enfoque: {summary_focus}")
print("\nResumen:")
print(summary)
print("\n--- Fin del Resumen ---")
# Opcional: Guardar en un archivo
output_filename = f"news_digest_{datetime.date.today().isoformat()}.txt"
with open(output_filename, "w", encoding="utf-8") as f:
f.write(f"Resumen Diario de Noticias para {datetime.date.today()}\n")
f.write(f"Consulta: {search_query}\n")
f.write(f"Enfoque: {summary_focus}\n\n")
f.write("Resumen:\n")
f.write(summary)
f.write("\n\nTítulos de Artículos Originales (para referencia):\n")
for article in articles:
f.write(f"- {article.get('title', 'Sin Título')}\n")
print(f"\nResumen guardado en {output_filename}")
if __name__ == "__main__":
# Define lo que tu agente debe buscar y en qué enfocarse
my_search_query = "Marcos de agentes de IA O orquestación de LLM"
my_summary_focus = "nuevas herramientas y métodos para construir agentes de IA"
run_news_hound_agent(my_search_query, my_summary_focus)
Este script orquesta todo el proceso:
- Define una función
run_news_hound_agentque toma unasearch_query(qué buscar en títulos/descripciones de noticias) y unsummary_focus(lo que el LLM debe resaltar específicamente). - Hace una llamada a
fetch_newspara obtener los artículos en bruto. - Luego pasa esos artículos y el enfoque a
summarize_articles. - Finalmente, imprime el resumen en la consola y lo guarda en un archivo de texto para facilitar la lectura más tarde.
¡Ejecutando tu Agente News Hound!
Ahora, abre tu terminal, asegúrate de que tu entorno virtual esté activo y ejecuta:
python main_agent.py
Deberías ver una salida que indica que el agente está recuperando noticias, luego resumiendo y, finalmente, tu digest personalizado de noticias impreso en la consola y guardado como un archivo. La primera ejecución puede tardar unos segundos mientras el LLM procesa la solicitud.
Lo que me encanta de esto es lo inmediato del feedback. Ingresas una consulta, especificas un enfoque y boom: obtienes un resumen personalizado. No más titulares genéricos. Para mí, fue un gran momento de “¡ajá!”. No solo estaba hablando con una IA; estaba haciendo que una IA realizara una tarea específica y valiosa en mi nombre.
Ajustando y Ampliando tu Agente
¡Esto es solo el comienzo! Aquí hay algunas ideas para mejorar tu News Hound:
- Consultas/Enfoques Múltiples: Modifica
main_agent.pypara ejecutar varias consultas o enfoques diferentes y generar múltiples resúmenes. - Programación: Utiliza herramientas como
cron(Linux/macOS) o el Programador de tareas de Windows para ejecutarmain_agent.pyautomáticamente cada mañana. - Diferentes LLMs: Experimenta con otros LLMs. Tal vez Claude 3 Opus de Anthropic para contextos más largos o Llama 3 para procesamiento local.
- Formatos de Salida: En lugar de un archivo de texto, guarda la salida como HTML, un archivo Markdown, o incluso envíalo a tu correo electrónico o a un canal de Slack (tendrías que integrarte con esas APIs).
- Filtrado Contextual: Antes de resumir, podrías agregar un paso intermedio donde el LLM (o un clasificador de texto más simple) determine si cada artículo recuperado es realmente relevante para tu enfoque específico, filtrando aún más el ruido.
- Fuentes de Noticias Avanzadas: Explora otras APIs de noticias o incluso el web scraping de sitios específicos (¡aunque ten cuidado con los términos de servicio!).
Mi propio News Hound evolucionó a partir de esta configuración básica. Ahora lo tengo funcionando cada noche, escaneando actualizaciones sobre marcos específicos de agentes que estoy observando, y me envía un resumen todas las mañanas. Me ha ahorrado horas de revisión de feeds RSS y hilos de Twitter. Realmente se ha convertido en mi asistente de investigación digital.
Conclusiones Accionables
Entonces, ¿qué deberías llevarte de todo esto?
- Comienza Pequeño, Piensa en Grande: No trates de construir la próxima AGI en tu primer intento. Un agente de un solo propósito es una herramienta de aprendizaje fantástica.
- Los Avisos son Poder: La calidad de tu salida está directamente relacionada con la claridad y especificidad de tus avisos. Dedica tiempo a refinarlos.
- Las APIs Son Tus Amigos: Los LLMs son poderosos, pero necesitan datos. Aprender a interactuar con APIs externas (como NewsAPI) es fundamental.
- El Código es el Pegamento: Python (o cualquier lenguaje de script) es lo que convierte una colección de potentes componentes en un agente funcional.
- Itera y Experimenta: No tengas miedo de cambiar modelos, ajustar avisos o probar diferentes fuentes de datos. Así es como aprendes lo que mejor funciona para tus necesidades específicas.
Construir este agente News Hound es una forma práctica y directa de entender los conceptos centrales detrás de los agentes de IA. Te muestra cómo conectar un LLM a herramientas externas y automatizar una tarea útil. Este conocimiento fundamental es lo que construirás a medida que explores sistemas multi-agente más complejos o integres agentes en aplicaciones más grandes.
¡Adelante, inténtalo! Podrías sorprenderte de lo rápido que puedes tener tu propio asistente digital en funcionamiento. Y como siempre, si te encuentras con un obstáculo o descubres una nueva forma interesante de extender esto, deja un comentario abajo o encuéntrame en las redes sociales. ¡Feliz construcción de agentes!
Artículos Relacionados
- Aprende IA: Tu Ruta Completa para Principiantes en IA 2026
- Agentes de IA para Principiantes: Tu Guía Amigable
- Tutoriales de Agentes de IA con Ejemplos del Mundo Real
🕒 Published: