En este tutorial aprenderás:
- Qué es BabyAGI y qué lo convierte en un marco de creación de agentes de IA verdaderamente único.
- Por qué ampliar BabyAGI con los servicios de Bright Data abre la puerta a una amplia gama de escenarios interesantes.
- Cómo integrar Bright Data en BabyAGI a través de funciones personalizadas.
¡Empecemos!
¿Qué es BabyAGI?
BabyAGI es un marco experimental de Python diseñado para crear agentes de IA autónomos y autoconstruidos, capaces de generar, priorizar y ejecutar tareas para alcanzar los objetivos definidos por el usuario.
Funciona como un gestor de tareas minimalista y en constante mejora, que aprovecha los LLM, como los modelos de OpenAI para el razonamiento y las bases de datos vectoriales para la memoria. En general, opera en un bucle inteligente para automatizar flujos de trabajo complejos.
En esencia, BabyAGI introduce un marco basado en funciones llamado functionz para almacenar, gestionar y ejecutar funciones desde una base de datos. Estas funciones también admiten la generación de código, lo que permite al agente de IA registrar nuevas funciones, llamarlas y evolucionar de forma autónoma.
A continuación, un panel de control integrado permite gestionar funciones, supervisar la ejecución y registrar secretos. Cuenta con una estructura basada en gráficos para realizar un seguimiento de las importaciones, las funciones dependientes y los secretos de autenticación, con carga automática y registro detallado.
Lo que hace que BabyAGI sea especialmente interesante es su simplicidad, su capacidad de autoconstrucción y su panel de control web fácil de usar. La idea central es que los agentes autónomos más eficaces son aquellos que pueden ampliarse con una estructura mínima.
BabyAGI es de código abierto y se mantiene activamente, con más de 22 000 estrellas en GitHub.
Potenciar mejores agentes de IA de autoconstrucción mediante el acceso a datos web
Los LLM están intrínsecamente limitados por los datos estáticos con los que se entrenaron, lo que a menudo conduce a alucinaciones y otros problemas comunes de los LLM.
BabyAGI supera estas limitaciones gracias a su marco de funciones de autoconstrucción. Emplea un LLM para escribir funciones personalizadas, que luego se devuelven al agente como herramientas para ampliar sus capacidades.
Sin embargo, la lógica para generar estas funciones sigue estando limitada por los conocimientos obsoletos del LLM. Para abordar esa importante limitación, BabyAGI necesita la capacidad de buscar en la web y recuperar información precisa y actualizada, lo que le permite producir funciones más fiables.
Esto es posible gracias a la conexión con los servicios de Bright Data, tales como:
- API SERP: recopila resultados de motores de búsqueda de Google, Bing y otros a gran escala sin ser bloqueado.
- API Web Unlocker: accede a cualquier sitio web con una sola solicitud y recibe HTML o Markdown limpios, con gestión automática de Proxies, encabezados y CAPTCHAs.
- API de Scraping web: recopila datos estructurados y analizados de plataformas populares como Amazon, LinkedIn, Instagram, Yahoo Finance y otras.
- Y otras soluciones…
Con estas integraciones, combinadas con la arquitectura de autoconstrucción de BabyAGI, la IA puede evolucionar de forma autónoma, añadir nuevas funciones y gestionar flujos de trabajo complejos mucho más allá de lo que un LLM estándar podría lograr por sí solo.
Cómo ampliar BabyAGI con Bright Data para obtener capacidades de recuperación de datos web
En esta sección paso a paso, se le guiará a través de la integración de Bright Data en BabyAGI mediante funciones personalizadas. Estas se conectan a dos productos de Bright Data: la API SERP y la API Web Unlocker.
Siga las instrucciones que se indican a continuación para empezar.
Requisitos previos
Para seguir este tutorial, necesita:
- Python 3.10+ instalado localmente.
- Una clave API de OpenAI.
- Una cuenta de Bright Data configurada con una zona API SERP, una zona API Web Unlocker y una clave API activa.
No se preocupe si aún no ha configurado su cuenta de Bright Data, ya que se le guiará a través de este proceso en un paso específico.
Paso n.º 1: Configurar un proyecto BabyAGI
Abre el terminal y crea una nueva carpeta para tu proyecto BabyAGI. Por ejemplo, llámala babyagi-bright-data-app:
mkdir babyagi-bright-data-app
babyagi-bright-data-app/ contendrá el código Python para iniciar el panel de control de BabyAGI y definir las funciones de integración de Bright Data.
A continuación, entre en el directorio del proyecto e inicialice un entorno virtual dentro de él:
cd babyagi-bright-data-app
python -m venv .venv
Añada un nuevo archivo llamado main.py en la raíz del proyecto, que ahora debería contener:
babyagi-bright-data-app/
├── .venv/
└── main.py
main.py contendrá la lógica de lanzamiento y extensión de BabyAGI.
Cargue la carpeta del proyecto en su IDE de Python favorito, como Visual Studio Code con la extensión Python o PyCharm Community Edition.
Ahora, activa el entorno virtual que has creado anteriormente. En Linux o macOS, ejecuta:
source .venv/bin/activate
De forma equivalente, en Windows, ejecuta:
.venv/Scripts/activate
Con el entorno virtual activado, instala las bibliotecas PyPI necesarias:
pip install babyagi requests
Las dependencias para esta aplicación son:
babyagi: Instala BabyAGI y todos sus requisitos para que puedas iniciar el panel de control.requests: le ayuda a realizar solicitudes HTTP para conectarse a los servicios de Bright Data.
¡Listo! Ahora tienes un entorno Python para el desarrollo de agentes autónomos en BabyAGI.
Paso n.º 2: Inicie el panel de control de BabyAGI
En tu archivo main.py, añade el siguiente código para inicializar e iniciar el panel de control de BabyAGI:
import babyagi
if __name__ == "__main__":
app = babyagi.create_app("/dashboard")
app.run(host="0.0.0.0", port=8080)
Esto le indica a BabyAGI que exponga la aplicación del panel de control en:
http://localhost:8080/dashboard
Comprueba que la aplicación funciona ejecutando:
python main.py
En la terminal, debería ver registros que indican que el panel de control está escuchando en http://localhost:8080/dashboard:
Visite esa URL en su navegador para acceder al panel de control:
La página de inicio del panel de control de BabyAGI muestra todas las funciones disponibles. De forma predeterminada, la biblioteca incluye dos paquetes de funciones precargados:
- Funciones predeterminadas:
- Ejecución de funciones: Ejecute, añada, actualice y recupere funciones y sus versiones.
- Gestión de claves: Añada y recupere claves secretas.
- Desencadenantes: configure desencadenantes para ejecutar funciones basadas en otras funciones.
- Registros: recuperar registros de ejecución con filtros opcionales.
- Funciones de IA:
- Descripciones e incrustaciones de IA: genere automáticamente descripciones e incrustaciones de funciones.
- Selección de funciones: Encuentre o recomiende funciones similares basadas en una indicación.
El panel de control de BabyAGI proporciona una interfaz fácil de usar para gestionar funciones, supervisar ejecuciones, manejar secretos, configurar activadores y visualizar dependencias. Explore las páginas disponibles para familiarizarse con sus características y opciones.
Paso n.º 3: Configurar la gestión de secretos
Su agente BabyAGI se conectará a servicios de terceros como OpenAI y Bright Data. Estas conexiones se autentican mediante claves API externas. Codificar las claves API directamente en su archivo main.py no es una buena práctica, ya que puede dar lugar a problemas de seguridad. En su lugar, debe cargarlas desde variables de entorno.
BabyAGI incluye un mecanismo integrado para leer secretos de variables de entorno o de un archivo .env local, sin necesidad de dependencias adicionales. Para utilizar esta función, añada un archivo .env al directorio de su proyecto:
babyagi-bright-data-app/
├── .venv/
├── .env # <----
└── main.py
Después de añadir sus variables al archivo .env, puede acceder a ellas en su código de la siguiente manera:
import os
ENV_VALUE = os.getenv("ENV_NAME")
¡Eso es todo! Ahora tu script carga de forma segura los secretos de integración de terceros desde variables de entorno en lugar de valores codificados.
También puede configurar estos secretos directamente desde el panel de control. En primer lugar, debe configurar una clave API de OpenAI (esto se explica en el siguiente paso). Una vez hecho esto, vaya a la página «Chat» del panel de control. En el selector de funciones, elija la función add_key_wrapper y solicite que defina su secreto con un mensaje como este:
Defina un secreto ENV_NAME cuyo valor sea ENV_VALUE.
Después de enviar la solicitud, debería ver un resultado similar al siguiente:
Como se muestra, el secreto se ha creado correctamente. Verifique que el secreto existe añadiendo la función get_all_secrets_keys y ejecutándola.
Paso n.º 4: Conecte BabyAGI a un modelo OpenAI
La página «Chat» del panel de control de BabyAGI le permite seleccionar funciones e invocarlas a través de una interfaz conversacional:
Entre bastidores, esta interfaz está respaldada por LiteLLM a través de una integración con OpenAI. Por este motivo, debe configurar una clave API de OpenAI en sus secretos.
Si falta el secreto OPENAI_API_KEY, cualquier mensaje enviado a través de la página Chat fallará con un error similar al siguiente:
{"error":"litellm.AuthenticationError: AuthenticationError: OpenAIException - La opción api_key del cliente debe establecerse pasando api_key al cliente o configurando la variable de entorno OPENAI_API_KEY"}

Para resolverlo, añada la variable de entorno OPENAI_API_KEY a su archivo .env:
OPENAI_API_KEY="<SU_OPENAI_API_KEY>"
Después de guardar el archivo, reinicie BabyAGI. Para confirmar que la integración funciona, vuelva a abrir la página «Chat» en el panel de control. Seleccione la función get_call, que invoca directamente el modelo OpenAI configurado, y envíe un mensaje sencillo, como «¡Hola!».
Deberías recibir una respuesta similar a la siguiente:
En este punto, la capa LiteLLM subyacente puede conectarse correctamente al modelo OpenAI predeterminado. Esto funciona porque LiteLLM lee automáticamente la clave API de OpenAI de la variable de entorno OPENAI_API_KEY.
¡Increíble! Tu aplicación BabyAGI ahora está correctamente conectada a un modelo OpenAI.
Alternativamente, puede lograr el mismo resultado definiendo la clave directamente en el código:
babyagi.add_key_wrapper("openai_api_key", "<YOUR_OPENAI_API_KEY>")
Esto llama a la función add_key_wrapper, que es equivalente a definir la clave a través de ella en el panel de control. Sin embargo, tenga en cuenta que no puede utilizar el enfoque del panel de control antes de configurar la integración de OpenAI, ya que el propio panel de control depende de la conexión de OpenAI para funcionar.
Paso n.º 5: Empieza a utilizar Bright Data
Para utilizar los servicios API SERP y Web Unlocker en BabyAGI, primero necesita una cuenta de Bright Data con una zona API SERP y una zona Web Unlocker API configuradas, junto con una clave API. ¡Vamos a configurarlo todo!
Si no tiene una cuenta de Bright Data, cree una. De lo contrario, inicie sesión y vaya a su panel de control. A continuación, vaya a la página «Proxies y scraping» y revise la tabla «Mis zonas»:
Si la tabla ya contiene una zona API de Web Unlocker (en este ejemplo, unlocker) y una zona API de SERP (en este ejemplo, serp), ya está listo. Esos dos servicios se utilizarán para llamar a los servicios Web Unlocker y API SERP a través de funciones personalizadas de BabyAGI.
Si falta una o ambas zonas, deberá crearlas. Desplácese hacia abajo hasta las tarjetas «Unblocker API» y «API SERP» y, a continuación, haga clic en los botones «Crear zona». Siga las instrucciones del asistente para añadir ambas zonas:
Para obtener instrucciones paso a paso, consulte las siguientes páginas de documentación:
A continuación, añada los nombres de sus zonas Web Unlocker API y API SERP a su archivo .env de la siguiente manera:
SERP_API_ZONE="serp"
WEB_UNLOCKER_ZONE="unlocker"
Importante: En este ejemplo, suponemos que la zona API SERP se llama «serp» y la zona Web Unlocker API se llama «unlocker». Reemplace estos valores por los nombres reales de sus zonas (si son diferentes).
Por último, debe generar su clave API de Bright Data y almacenarla como variable de entorno en .env:
BRIGHT_DATA_API_KEY="<SU_CLAVE_API_BRIGHT_DATA>"
Estas tres variables de entorno serán leídas por las funciones personalizadas de BabyAGI y se utilizarán para conectarse a los servicios API SERP y Web Unlocker de su cuenta de Bright Data. ¡Ya está listo para definirlas y utilizarlas en BabyAGI!
Paso n.º 6: definir la función API SERP
Comience por definir una función BabyAGI para realizar búsquedas web utilizando la API SERP de Bright Data:
@babyagi.register_function(
imports=["os", "urllib", "requests"],
key_dependencies=["bright_data_api_key", "serp_api_zone"],
metadata={"description": "Buscar en la web una consulta determinada utilizando la API SERP de Bright Data."}
)
def bright_data_serp_api(query: str) -> str:
import requests
import os
import urllib
# Lee la clave API de Bright Data desde el entorno
BRIGHT_DATA_API_TOKEN = os.getenv("bright_data_api_key")
# Realizar una solicitud a la API SERP de Bright Data
url = "https://api.brightdata.com/request"
data = {
"zone": os.getenv("serp_api_zone"),
"url": f"https://www.google.com/search?q={urllib.parse.quote_plus(query)}&brd_json=1",
"format": "raw"
}
headers = {
"Authorization": f"Bearer {BRIGHT_DATA_API_TOKEN}",
"Content-Type": "application/json"
}
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
return response.text
Esa función se basa en el cliente HTTP Requests para realizar una solicitud HTTP POST a su zona API SERP. En concreto, envía una consulta a Google y recupera los resultados SERP analizados a través de Bright Data. Para obtener más detalles, consulte la documentación de Bright Data API SERP.
Ten en cuenta que una función BabyAGI debe registrarse utilizando el decorador @babyagi.register_function. Este acepta los siguientes campos:
importaciones: una lista de bibliotecas externas de las que depende la función. Son necesarias porque las funciones BabyAGI se ejecutan en un entorno aislado.dependencies: una lista de otras funciones BabyAGI de las que depende esta función.key_dependencies: una lista de claves secretas necesarias para que la función opere. En este caso, los secretos necesarios son«bright_data_api_key»y«serp_api_zone», que corresponden a las variables de entornoBRIGHT_DATA_API_KEYySERP_API_ZONEdefinidas anteriormente en su archivo.env.metadata["description"]: Una descripción legible para los humanos de lo que hace la función. Esto ayuda al modelo OpenAI a comprender su propósito.
¡Fantástico! Su aplicación BabyAGI ahora incluye la función bright_data_serp_api, a través de la cual puede buscar en la web mediante la API SERP de Bright Data.
Paso n.º 7: definir la función API Web Unlocker
Del mismo modo, define una función personalizada para llamar a la API Web Unlocker:
@babyagi.register_function(
imports=["os", "requests"],
key_dependencies=["bright_data_api_key", "web_unlocker_zone"],
metadata={"description": "Obtener el contenido de la página web a través de la API Bright Data Web Unlocker."}
)
def bright_data_web_unlocker(page_url: str, data_format: str = "markdown") -> str:
import requests
import os
# Leer la clave API de Bright Data desde el entorno
BRIGHT_DATA_API_TOKEN = os.getenv("bright_data_api_key")
# Realizar una solicitud a la API de Bright Data Web Unlocker
url = "https://api.brightdata.com/request"
data = {
"zone": os.getenv("web_unlocker_zone"),
"url": page_url,
"format": "raw",
"data_format": data_format
}
headers = {
"Authorization": f"Bearer {BRIGHT_DATA_API_TOKEN}",
"Content-Type": "application/json"
}
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
return response.text
Esto funciona igual que la función bright_data_serp_api, con la diferencia principal de que llama a la API Web Unlocker. Para obtener más información sobre los parámetros y opciones disponibles para esa API, consulte la documentación de Bright Data.
Tenga en cuenta que esta función se basa en el secreto web_unlocker_zone, que corresponde a la variable de entorno WEB_UNLOCKER_ZONE definida en el paso n.º 5. Además, el argumento data_format se establece automáticamente en markdown. Esto habilita la función especial«Scrape as Markdown» (Rastrea como Markdown) para devolver el contenido rastreado de una página web determinada en un formato Markdown optimizado, ideal para la ingestión de LLM.
Consejo: Mediante una configuración similar, puede ampliar BabyAGI para integrar otras soluciones de Bright Data basadas en API, como las API de Scraping web.
¡Misión completada! Se han añadido a BabyAGI las funciones deseadas impulsadas por Bright Data.
Paso n.º 8: Código completo
El código final de su archivo main.py será:
import babyagi
@babyagi.register_function(
imports=["os", "urllib", "requests"],
key_dependencies=["bright_data_api_key", "serp_api_zone"],
metadata={"description": "Busca en la web una consulta determinada utilizando la API SERP de Bright Data."}
)
def bright_data_serp_api(query: str) -> str:
import requests
import os
import urllib
# Lee la clave API de Bright Data desde el entorno
BRIGHT_DATA_API_TOKEN = os.getenv("bright_data_api_key")
# Realizar una solicitud a la API SERP de Bright Data
url = "https://api.brightdata.com/request"
data = {
"zone": os.getenv("serp_api_zone"),
"url": f"https://www.google.com/search?q={urllib.parse.quote_plus(query)}&brd_json=1",
"format": "raw"
}
headers = {
"Authorization": f"Bearer {BRIGHT_DATA_API_TOKEN}",
"Content-Type": "application/json"
}
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
return response.text
@babyagi.register_function(
imports=["os", "requests"],
key_dependencies=["bright_data_api_key", "web_unlocker_zone"],
metadata={"description": "Obtener el contenido de la página web a través de la API Bright Data Web Unlocker."}
)
def bright_data_web_unlocker(page_url: str, data_format: str = "markdown") -> str:
import requests
import os
# Leer la clave API de Bright Data desde el entorno
BRIGHT_DATA_API_TOKEN = os.getenv("bright_data_api_key")
# Realizar una solicitud a la API Bright Data Web Unlocker
url = "https://api.brightdata.com/request"
data = {
"zone": os.getenv("web_unlocker_zone"),
"url": page_url,
"format": "raw",
"data_format": data_format
}
headers = {
"Authorization": f"Bearer {BRIGHT_DATA_API_TOKEN}",
"Content-Type": "application/json"
}
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
return response.text
if __name__ == "__main__":
app = babyagi.create_app("/dashboard")
app.run(host="0.0.0.0", port=8080)
En su lugar, el archivo .env contendrá:
OPENAI_API_KEY="<TU_CLAVE_API_OPENAI>"
SERP_API_ZONE="<TU_NOMBRE_ZONA_API_SERP>"
WEB_UNLOCKER_ZONE="<TU_NOMBRE_ZONA_WEB_UNLOCKER>"
BRIGHT_DATA_API_KEY="<TU_CLAVE_DE_API_DE_BRIGHT_DATA>"
Inicie el panel de control de BabyAGI con:
python main.py
Abre http://localhost:8080/dashboard en el navegador, ve a la página «Chat» y busca «bright_data». Verás las dos funciones definidas en el código para la integración de Bright Data:
¡Genial! Las dos funciones personalizadas se han registrado correctamente.
Paso n.º 9: Prueba la integración de BabyAGI + Bright Data
Compruebe que su aplicación BabyAGI funciona probando las funciones de Bright Data con la función predeterminada chat_with_functions. Esto inicia una interacción de chat que se conecta con LiteLLM y ejecuta las funciones seleccionadas de su base de datos de funciones.
Por lo tanto, comience por elegir las funciones bright_data_serp_api y bright_data_web_unlocker. A continuación, seleccione chat_with_functions:
A continuación, debe utilizar un comando que active tanto las búsquedas web como la extracción de datos. Por ejemplo, pruebe con:
Busca en la web los últimos anuncios de IA de Google (2025), selecciona las tres noticias o artículos de blog más fiables, accede a cada uno de ellos y resume las ideas clave sobre el futuro de la IA de Google (mencionando las URL de los artículos originales).
Nota: Un LLM básico sin herramientas externas para acceder a la web no podría completar esta tarea.
Ejecute la indicación en el chat y debería ver un resultado similar a este:
Observe cómo el resultado contiene información fundamentada obtenida mediante la búsqueda en Google a través de la API SERP y el rastreo de información de las páginas de noticias seleccionadas a través de la API Web Unlocker.
Ahora que ha verificado que el agente puede interactuar con el contenido web actual y aprender de él, significa que el agente tiene la capacidad de crear funciones por sí mismo que pueden interactuar con otros servicios accediendo a su documentación para aprender detalles técnicos que inicialmente no conocía. Pruébelo a través de la función self_build para la creación de agentes de IA autónomos, tal y como se explica en la documentación de BabyAGI.
No dude en experimentar con diferentes indicaciones de entrada y otras funciones de BabyAGI. Gracias a las funciones de Bright Data, sus agentes de autoconstrucción BabyAGI pueden manejar una variedad de casos de uso del mundo real.
¡Et voilà! Acaba de experimentar el poder de combinar Bright Data con BabyAGI.
Conclusión
En esta entrada del blog, ha visto cómo habilitar las capacidades de Bright Data en BabyAGI a través de funciones personalizadas que llaman a la API SERP y a la API Web Unlocker.
Esta configuración permite recuperar contenido de cualquier página web y realizar búsquedas web en tiempo real. Para ampliar aún más la funcionalidad, como acceder a feeds web en directo y automatizar las interacciones web, integra BabyAGI con el conjunto completo de servicios de Bright Data para IA.
¡Desbloquea todo el potencial de los agentes de IA autoconstruidos!
¡Regístrese hoy mismo para obtener una cuenta gratuita de Bright Data y comience a experimentar con nuestras soluciones de datos web preparadas para la IA!