\n\n\n\n Comparación de SDK de Agentes: Un Tutorial Práctico para Construir Aplicaciones Inteligentes - AgntKit \n

Comparación de SDK de Agentes: Un Tutorial Práctico para Construir Aplicaciones Inteligentes

📖 19 min read3,669 wordsUpdated Mar 26, 2026

Introducción: El Auge de los Agentes Inteligentes y Sus SDKs

En el espacio de la inteligencia artificial, que evoluciona rápidamente, los agentes inteligentes se están convirtiendo en una parte cada vez más integral de una amplia gama de aplicaciones. Desde chatbots de servicio al cliente y asistentes personales hasta herramientas sofisticadas de análisis de datos y sistemas autónomos, los agentes están diseñados para percibir su entorno, razonar sobre sus observaciones y tomar acciones para alcanzar objetivos específicos. Sin embargo, construir estos agentes requiere marcos y herramientas sólidas, a menudo proporcionadas en forma de Kits de Desarrollo de Software (SDK).

Un SDK de Agente típicamente ofrece una colección de bibliotecas, APIs y herramientas de desarrollo que agilizan el proceso de creación, implementación y gestión de agentes inteligentes. Estos SDKs abstraen gran parte de la complejidad subyacente, permitiendo a los desarrolladores centrarse en la lógica del agente, la representación del conocimiento y los patrones de interacción. Con una multitud de SDKs disponibles, elegir el adecuado para tu proyecto puede ser una tarea abrumadora. Este tutorial tiene como objetivo desmitificar este proceso comparando algunos SDKs de Agentes populares a través de ejemplos prácticos, ayudándote a tomar una decisión informada.

Exploraremos las funcionalidades, fortalezas y casos de uso ideales de varios SDKs destacados, proporcionando fragmentos de código y explicaciones para ilustrar su aplicación práctica. Nuestro objetivo es equiparte con el conocimiento para seleccionar y utilizar de manera efectiva un SDK de Agente para dar vida a tus aplicaciones inteligentes.

Consideraciones Clave al Elegir un SDK de Agente

Antes de explorar SDKs específicos, es crucial entender los criterios que deberían guiar tu selección:

  • Soporte de Lenguaje de Programación: ¿El SDK soporta tu lenguaje preferido (Python, Java, JavaScript, etc.)?
  • Paradigma del Agente: ¿Se alinea con el tipo de agente que estás construyendo (por ejemplo, reactivo, deliberativo, BDI)?
  • Escalabilidad y Rendimiento: ¿Puede manejar la carga y complejidad esperadas de tu sistema de agente?
  • Facilidad de Uso y Curva de Aprendizaje: ¿Qué tan sencillo es comenzar y desarrollar con el SDK?
  • Comunidad y Documentación: ¿Hay soporte comunitario activo y documentación exhaustiva?
  • Capacidades de Integración: ¿Qué tan bien se integra con otras herramientas y servicios (bases de datos, plataformas en la nube, bibliotecas de PNL)?
  • Extensibilidad: ¿Puedes extender fácilmente sus funcionalidades o integrar componentes personalizados?
  • Licenciamiento y Costo: ¿Es de código abierto, comercial, o tiene términos de licencia específicos?

SDK 1: Rasa – La Potencia de la IA Conversacional

Descripción General

Rasa es un marco de aprendizaje automático de código abierto para conversaciones automatizadas basadas en texto y voz. Es particularmente adecuado para construir chatbots sofisticados y asistentes virtuales. Rasa proporciona un conjunto completo de herramientas para la comprensión del lenguaje natural (NLU), gestión del diálogo y generación de respuestas, permitiendo a los desarrolladores crear agentes conversacionales altamente contextuales e inteligentes.

Características Clave

  • Comprensión del Lenguaje Natural (NLU): Extrae intenciones y entidades de los mensajes del usuario.
  • Gestión del Diálogo: Administra el flujo de la conversación, rastreando el contexto y decidiendo la próxima acción.
  • Acciones Personalizadas: Permite la integración con APIs y bases de datos externas.
  • Gestión de Datos de Entrenamiento: Herramientas para crear y gestionar ejemplos de entrenamiento.
  • Escalabilidad: Diseñado para implementaciones en producción.

Ejemplo Práctico: Un Bot de Clima Simple

Creemos un bot de clima básico usando Rasa. Primero, necesitarás instalar Rasa:

pip install rasa

Luego, inicializa un nuevo proyecto de Rasa:

rasa init --no-prompt

Esto crea una estructura básica del proyecto. Modificaremos data/nlu.yml, data/stories.yml y domain.yml.

data/nlu.yml (Datos de Entrenamiento de NLU)

version: "3.1"
nlu:
- intent: greet
 examples: |
 - hi
 - hello
 - good morning
- intent: ask_weather
 examples: |
 - what's the weather like
 - tell me the weather
 - is it sunny in [London](city)
 - how's the weather in [Paris](city)
- intent: thank_you
 examples: |
 - thank you
 - thanks
- intent: goodbye
 examples: |
 - goodbye
 - bye

data/stories.yml (Historias de Diálogo)

version: "3.1"
stories:
- story: happy path
 steps:
 - intent: greet
 - action: utter_greet
 - intent: ask_weather
 - action: utter_ask_city
 - intent: ask_weather
 entities:
 - city: "New York"
 - action: action_fetch_weather
 - intent: thank_you
 - action: utter_you_welcome
 - intent: goodbye
 - action: utter_goodbye

domain.yml (Dominio del Agente)

version: "3.1"
intents:
 - greet
 - ask_weather
 - thank_you
 - goodbye

entities:
 - city

slots:
 city:
 type: text
 influence_conversation: true
 mappings:
 - type: from_entity
 entity: city

responses:
 utter_greet:
 - text: "¡Hola! ¿Cómo puedo ayudarte hoy?"
 utter_ask_city:
 - text: "¿En qué ciudad estás interesado?"
 utter_you_welcome:
 - text: "¡De nada!"
 utter_goodbye:
 - text: "¡Adiós! Que tengas un gran día."

actions:
 - action_fetch_weather

session_config:
 session_expiration_time: 60
 carry_over_slots_to_new_session: true

actions.py (Acción Personalizada)

from typing import Any, Text, Dict, List

from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk.events import SlotSet

import requests # Para obtener datos reales del clima, o simular por simplicidad

class ActionFetchWeather(Action):

 def name(self) -> Text:
 return "action_fetch_weather"

 def run(self, dispatcher: CollectingDispatcher, tracker: Tracker,
 domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

 city = tracker.get_slot("city")

 if not city:
 dispatcher.utter_message(text="No capté la ciudad. ¿Podrías decirme en qué ciudad?")
 return []

 # En una aplicación real, aquí llamarías a una API del clima.
 # Para este ejemplo, usaremos una respuesta simulada.
 weather_data = {
 "London": "Está nublado con posibilidades de lluvia.",
 "Paris": "Soleado y cálido.",
 "New York": "Un poco fresco, alrededor de 10 grados Celsius."
 }

 response = weather_data.get(city, f"Lo siento, no tengo información del clima para {city} en este momento.")
 dispatcher.utter_message(text=response)

 return [SlotSet("city", None)] # Limpiar el slot de la ciudad después de proporcionar el clima

Para ejecutar esto, entrena el modelo de Rasa:

rasa train

Luego, inicia el servidor de Rasa y el servidor de acciones (en terminales separadas):

rasa run -m models --enable-api --cors "*"
rasa run actions

Luego puedes interactuar con tu bot a través de la línea de comandos:

rasa shell

Fortalezas: Excelente para IA conversacional, fuerte NLU y gestión de diálogos, de código abierto, comunidad activa.
Debilidades: Curva de aprendizaje más pronunciada para tareas no conversacionales, centrado principalmente en interacción de texto/voz.
Caso de Uso Ideal: Chatbots, asistentes virtuales, interfaces conversacionales para aplicaciones.

SDK 2: AIMA Python – Agentes de IA Clásica para Educación e Investigación

Descripción General

El libro ‘Artificial Intelligence: A Modern Approach’ (AIMA) de Russell y Norvig es una piedra angular de la educación en IA. El repositorio de código en Python que lo acompaña, a menudo referido como AIMA Python, proporciona implementaciones de muchos algoritmos clásicos de IA y marcos de agentes discutidos en el libro. Aunque no es un SDK completo para producción, es un recurso invaluable para entender conceptos fundamentales de agentes y prototipar sistemas inteligentes simples.

Características Clave

  • Arquitecturas de Agentes Clásicos: Implementaciones de agentes reflejos simples, agentes reflejos basados en modelos, agentes basados en objetivos y agentes basados en utilidad.
  • Algoritmos de Búsqueda: Varios algoritmos de búsqueda (BFS, DFS, A*, etc.) para la resolución de problemas.
  • Lógica y Planificación: Herramientas básicas para lógica proposicional, lógica de primer orden y planificación.
  • Enfoque Educativo: Diseñado para ilustrar principios fundamentales de IA.

Ejemplo Práctico: Un Agente Reflexivo Simple (Mundo del Aspirador)

Implementemos un agente reflexivo simple para el clásico mundo del aspirador. Este agente percibe su ubicación actual y si está sucio, luego actúa basándose en un conjunto de reglas predefinidas.

Primero, necesitarás clonar o descargar el repositorio de AIMA Python:

git clone https://github.com/aimacode/aima-python.git

Navega al directorio y podrás usar sus módulos. Definiremos un entorno y un agente.

vacuum_agent.py

from agents import Agent, Environment, Percept, TraceAgent, SimpleReflexAgent

class VacuumEnvironment(Environment):
 """El entorno para el mundo del aspirador."""
 def __init__(self, A='clean', B='clean'):
 super().__init__()
 self.status = {'A': A, 'B': B}
 self.percepts = {'A': None, 'B': None}
 self.location = 'A'

 def percept(self, agent):
 """Devuelve la percepción del agente sobre el entorno."""
 return (self.location, self.status[self.location])

 def execute_action(self, agent, action):
 """Ejecuta la acción del agente en el entorno."""
 if action == 'Right':
 self.location = 'B'
 elif action == 'Left':
 self.location = 'A'
 elif action == 'Suck':
 if self.status[self.location] == 'dirty':
 self.status[self.location] = 'clean'
 # print(f"Agente {agent.name} realizó {action}. Entorno: {self.status}, Ubicación: {self.location}")

 def default_location(self, agent):
 return 'A'

 def default_percept(self):
 return ('A', 'clean') # Percepción predeterminada para el entorno


def SimpleVacuumAgent():
 """Un agente reflexivo simple para el mundo del aspirador."""
 return SimpleReflexAgent({
 (('A', 'dirty'), 'Suck'),
 (('B', 'dirty'), 'Suck'),
 (('A', 'clean'), 'Right'),
 (('B', 'clean'), 'Left')
 })


if __name__ == '__main__':
 # Crear un entorno con algo de suciedad
 env = VacuumEnvironment(A='dirty', B='dirty')

 # Crear el agente
 agent = SimpleVacuumAgent()

 # Agregar el agente al entorno
 env.add_agent(agent)

 # Ejecutar la simulación durante algunos pasos
 print("Entorno Inicial:", env.status, "Ubicación:", env.location)
 env.run(steps=10)
 print("Entorno Final:", env.status, "Ubicación:", env.location)

 # Otro escenario
 env2 = VacuumEnvironment(A='clean', B='dirty')
 agent2 = SimpleVacuumAgent()
 env2.add_agent(agent2)
 print("\nEntorno Inicial (2):", env2.status, "Ubicación:", env2.location)
 env2.run(steps=5)
 print("Entorno Final (2):", env2.status, "Ubicación:", env2.location)

Este script define un VacuumEnvironment y un SimpleVacuumAgent utilizando la clase SimpleReflexAgent del marco Python de AIMA. Las reglas del agente dictan sus acciones basándose únicamente en su percepción actual (ubicación y estado de suciedad).

Fortalezas: Excelente para aprender los fundamentos de IA, implementaciones claras de algoritmos clásicos, ligero.
Debilidades: No diseñado para producción, características limitadas en comparación con SDKs completos, principalmente para uso académico.
Caso de Uso Ideal: Educación, investigación, prototipado de agentes de IA conceptuales, comprensión de paradigmas de agentes.

SDK 3: Microsoft Bot Framework – Desarrollo de Bots de Nivel Empresarial

Descripción General

Microsoft Bot Framework es una plataforma completa para construir, conectar, desplegar y gestionar bots inteligentes a través de diversos canales. Proporciona herramientas, SDKs y servicios que permiten a los desarrolladores crear interfaces conversacionales que pueden entender lenguaje natural, participar en diálogos e integrarse con sistemas de backend. Es particularmente fuerte para aplicaciones empresariales y utiliza otros servicios de Microsoft Azure como Azure Cognitive Services (por ejemplo, LUIS para NLU).

Características Clave

  • Soporte Multi-Canal: Conecta a canales populares como Teams, Slack, Facebook Messenger, chat web, etc.
  • SDKs de Bot Builder: Disponibles para C#, JavaScript, Python y Java.
  • Diálogos Adaptativos: Gestión avanzada de diálogos para flujos conversacionales complejos.
  • Comprensión del Lenguaje (LUIS): El servicio de NLU de Microsoft para reconocimiento de intenciones y entidades.
  • QnA Maker: Servicio para crear rápidamente bots que pueden responder preguntas frecuentes.
  • Integración con Azure: Integración fluida con otros servicios de Azure para inteligencia, almacenamiento y computación.

Ejemplo Práctico: Un Bot de Eco Simple (Python)

Creemos un bot de eco básico utilizando el SDK de Microsoft Bot Framework para Python. Este bot simplemente repite lo que dice el usuario.

Primero, instala el SDK:

pip install botbuilder-core botbuilder-schema botbuilder-dialogs aiohttp

Crea un archivo llamado app.py:

import asyncio
from datetime import datetime

from aiohttp import web
from botbuilder.core import BotFrameworkAdapter, BotFrameworkAdapterSettings, TurnContext
from botbuilder.schema import Activity, ActivityTypes

# El APP_ID y APP_PASSWORD de tu bot se pueden configurar aquí.
# Para pruebas locales, a menudo se pueden dejar vacíos.
SETTINGS = BotFrameworkAdapterSettings(
 app_id="",
 app_password=""
)

# Crea un adaptador. El adaptador es responsable de manejar solicitudes HTTP entrantes
# y crear un TurnContext para cada llamada.
adapter = BotFrameworkAdapter(SETTINGS)

async def on_error(context: TurnContext, error: Exception):
 """Callback para errores durante un turno."""
 print(f"\n [on_error] error no manejado: {error}")

 # Enviar un mensaje al usuario
 await context.send_activity("El bot encontró un error o un bug.")
 await context.send_activity("Para continuar ejecutando este bot, por favor corrige el código del bot.")

 # Enviar una actividad de seguimiento
 trace_activity = Activity(
 label="TurnError",
 name="on_error Exception",
 timestamp=datetime.utcnow(),
 type=ActivityTypes.trace,
 value=f"Excepción: {error}",
 value_type="https://schema.org/Exception",
 )
 await context.send_activity(trace_activity)

adapter.on_turn_error = on_error

class MyBot:
 """Bot de Eco Básico que repite lo que dice el usuario."""
 async def on_turn(self, turn_context: TurnContext):
 if turn_context.activity.type == ActivityTypes.message:
 await turn_context.send_activity(f"Dijiste: {turn_context.activity.text}")
 elif turn_context.activity.type == ActivityTypes.conversation_update:
 # Manejar actualizaciones de conversación, por ejemplo, cuando un usuario se une a la conversación
 if turn_context.activity.members_added:
 for member in turn_context.activity.members_added:
 if member.id != turn_context.activity.recipient.id:
 await turn_context.send_activity("¡Hola y bienvenido!")
 else:
 await turn_context.send_activity(f"[{turn_context.activity.type} evento detectado]")


# Crear la instancia del bot
BOT = MyBot()

async def messages(request):
 """Endpoint principal para mensajes de bot."""
 if "application/json" in request.headers["Content-Type"]:
 body = await request.json()
 else:
 return web.Response(status=415)

 activity = Activity().deserialize(body)
 auth_header = request.headers["Authorization"] if "Authorization" in request.headers else ""

 try:
 # Procesar la actividad con la lógica del bot
 response = await adapter.process_activity(activity, auth_header, BOT.on_turn)
 if response:
 return web.json_response(data=response.body, status=response.status)
 return web.Response(status=200)
 except Exception as e:
 return web.Response(status=500, text=str(e))

app = web.Application()
app.router.add_post("/api/messages", messages)

if __name__ == "__main__":
 try:
 web.run_app(app, host="localhost", port=3978)
 except Exception as e:
 print(f"Error al iniciar el servidor: {e}")

Ejecuta la aplicación:

python app.py

Para probar esto localmente, necesitarás el Bot Framework Emulator. Descárgalo desde la página oficial de Microsoft Bot Framework. Una vez instalado, abre el emulador y conéctate a http://localhost:3978/api/messages.

Fortalezas: Listo para empresas, extensa documentación, soporte multi-canal, integración estrecha con servicios de Azure (NLU, Voz, QnA), sólida gestión de diálogos.
Debilidades: Puede ser complejo para bots simples, fuertes vínculos con el ecosistema de Microsoft, puede incurrir en costos de Azure.
Caso de Uso Ideal: Chatbots empresariales, bots de servicio al cliente, asistentes organizacionales internos, aplicaciones conversacionales complejas que requieren escalabilidad e integración con otros servicios de Microsoft.

SDK 4: LangChain – El Orquestador para Agentes Impulsados por LLM

Descripción General

LangChain es un marco en rápida evolución diseñado para simplificar la creación de aplicaciones impulsadas por grandes modelos de lenguaje (LLMs). Aunque no es un SDK de Agente en el sentido tradicional de los agentes BDI (Creencia-Deseo-Intención), LangChain proporciona una potente capa de abstracción y un conjunto de herramientas para construir agentes sofisticados impulsados por LLM. Estos agentes pueden razonar, usar herramientas e interactuar con varias fuentes de datos, lo que lo convierte en un marco crucial para la nueva generación de aplicaciones de IA.

Características Clave

  • Cadenas: Combina LLM con otros componentes (por ejemplo, plantillas de mensajes, analizadores) para formar secuencias de operaciones.
  • Agentes: LLM que pueden razonar sobre qué herramientas utilizar y en qué orden para alcanzar un objetivo.
  • Memoria: Añade estado a las cadenas y agentes, permitiéndoles recordar interacciones pasadas.
  • Herramientas: Abstracciones para recursos y APIs externas con las que los agentes pueden interactuar (por ejemplo, motores de búsqueda, calculadoras, bases de datos).
  • Cargadores de Documentos & Embeddings: Herramientas para ingerir y procesar datos para generación aumentada por recuperación.

Ejemplo Práctico: Un Agente de Búsqueda Simple en Wikipedia

Creemos un agente de LangChain que pueda utilizar Wikipedia para responder preguntas. Necesitarás una clave API de OpenAI para el LLM.

Primero, instala LangChain y dependencias necesarias:

pip install langchain openai wikipedia

Configura tu clave API de OpenAI como una variable de entorno (o directamente en el código, aunque se recomienda la var de entorno).

export OPENAI_API_KEY='YOUR_OPENAI_API_KEY'

wikipedia_agent.py

import os

from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.llms import OpenAI

# Inicializar el LLM (por ejemplo, GPT-3.5-turbo de OpenAI)
llm = OpenAI(temperature=0)

# Cargar las herramientas que usará el agente
# La herramienta 'wikipedia' permite buscar en Wikipedia
# 'llm-math' es una herramienta de cálculo simple
tools = load_tools(["wikipedia", "llm-math"], llm=llm)

# Inicializar el agente con el LLM y las herramientas
# AgentType.ZERO_SHOT_REACT_DESCRIPTION es un tipo común de agente
# que usa el LLM para decidir qué herramienta usar y qué entrada darle.
agent = initialize_agent(
 tools,
 llm,
 agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
 verbose=True # Establecer en True para ver el proceso de pensamiento del agente
)

# Ejemplo de preguntas para el agente
questions = [
 "¿Cuál es la capital de Francia?",
 "¿Cuántas personas viven en París?",
 "¿Quién fue el 44º presidente de los Estados Unidos?",
 "¿Cuál es 123 * 456?"
]

for q in questions:
 print(f"\n--- Pregunta: {q} ---")
 try:
 agent.run(q)
 except Exception as e:
 print(f"Ocurrió un error: {e}")

Cuando ejecutes este script, observarás el ‘proceso de pensamiento’ del agente si verbose=True. Analizará la pregunta, decidirá usar la herramienta ‘wikipedia’, formulará una consulta de búsqueda, ejecutará la herramienta y luego usará la información recuperada para responder la pregunta.

Puntos Fuertes: Excelente para aplicaciones impulsadas por LLM, modular y flexible, rico ecosistema de integraciones (herramientas, cargadores de datos), comunidad en rápido desarrollo.
Puntos Débiles: Evoluciona rápidamente (las API pueden cambiar), requiere comprensión de conceptos de LLM, puede ser intensivo en recursos (llamadas API).
Caso de Uso Ideal: Construcción de agentes inteligentes que utilizan LLM para razonamiento, recuperación de información, automatización de tareas complejas e interacción con servicios externos.

Conclusión: Elegir la Herramienta Adecuada para Tu Trayectoria Agente

Como hemos visto, el mundo de los SDK de agentes es diverso, con cada marco ofreciendo fortalezas únicas y atendiendo a diferentes casos de uso. No hay una solución única para todos; el mejor SDK para tu proyecto depende en gran medida de tus requisitos específicos, el tipo de agente que imaginas y tu ecosistema de desarrollo.

  • Rasa brilla por su sólida IA conversacional, proporcionando capacidades profundas de NLU y gestión de diálogos para chatbots y asistentes virtuales.
  • AIMA Python es una herramienta educativa y de investigación invaluable para comprender conceptos fundamentales de agentes de IA, perfecta para prototipos y exploración académica.
  • Microsoft Bot Framework ofrece una solución de nivel empresarial para construir bots escalables y multicanal, especialmente cuando está integrado con el ecosistema más amplio de Azure.
  • LangChain está a la vanguardia del desarrollo de agentes impulsados por LLM, permitiendo razonamientos complejos, uso de herramientas e interacción con diversas fuentes de datos para crear sistemas altamente inteligentes y adaptativos.

Antes de comprometerte con un SDK, considera prototipar con algunas opciones, evaluando su curva de aprendizaje, soporte de la comunidad y qué tan bien se integran con tu pila tecnológica existente. Los ejemplos proporcionados en este tutorial deben servir como un punto de partida práctico para explorar estas poderosas herramientas. Al sopesar cuidadosamente tus necesidades frente a las capacidades de cada SDK, puedes embarcarte con confianza en la construcción de agentes inteligentes que transformen tus aplicaciones y experiencias de usuario.

🕒 Published:

✍️
Written by Jake Chen

AI technology writer and researcher.

Learn more →
Browse Topics: comparisons | libraries | open-source | reviews | toolkits
Scroll to Top