En los últimos años los agentes de IA han pasado a ser claves para construir aplicaciones inteligentes. Un agente va más allá de un modelo que responde a un prompt: es un sistema capaz de razonar, planear acciones, invocar herramientas externas y aprender de sus propios resultados.
La construcción de agentes de IA tradicionalmente ha requerido definir flujos de trabajo detallados y rígidos, lo que limita su escalabilidad y capacidad de adaptación. Con la evolución de los modelos de lenguaje, hoy es posible dejar que el propio modelo guíe gran parte del proceso, reduciendo la complejidad para los desarrolladores y habilitando comportamientos mucho más flexibles y autónomos.
Aquí es donde entra Strands Agents, el SDK open source lanzado por AWS. Diseñado para aprovechar las capacidades de los modelos más avanzados, Strands permite a los desarrolladores crear agentes de manera simple: basta con definir un prompt y una lista de herramientas en código. A partir de ahí, el agent loop — un ciclo de razonamiento, uso de herramientas y generación de respuestas — se encarga de orquestar el comportamiento inteligente del agente, que puede probarse localmente y desplegarse en la nube.
Instalación inicial
Para empezar, instalamos las librerías necesarias:
pip install strands-agents strands-agents-tools
Strands Agents usa por defecto Amazon Bedrock como proveedor de modelos, específicamente Claude Sonnet 4. Por lo tanto, necesitamos credenciales de AWS válidas con permisos para invocar modelos en Bedrock.
Primer agente básico
El siguiente ejemplo crea un agente que responde usando solo el modelo LLM:
from strands import Agent
# Crear agente
agent = Agent()
# Preguntar algo al agente
message = """
¿Qué hora es en Lima, Perú?
"""
agent(message)
El resultado será la respuesta generada directamente por el modelo, sin acceso a herramientas externas:
No tengo acceso a información en tiempo real, por lo que no puedo decirte la hora exacta actual en Lima, Perú.
Sin embargo, puedo darte información útil:
- **Zona horaria**: Lima está en UTC-5 (Hora Estándar de Perú)
- **Diferencias horarias comunes**:
- 2 horas menos que Argentina/Chile
- Misma hora que Colombia/Ecuador
- 1 hora más que México (centro)
- 5 horas menos que España
Para conocer la hora exacta actual en Lima, te recomiendo:
- Buscar "hora en Lima" en Google
- Usar aplicaciones de reloj mundial
- Consultar sitios web como timeanddate.com
Agregando herramientas
Para hacerlo más interesante, podemos darle acceso a la herramienta current_time, incluida en el paquete strands-tools:
from strands import Agent
from strands_tools import current_time
# Crear agente con acceso a herramientas
agent = Agent(tools=[current_time])
# Pregunta al agente
message = """
¿Qué hora es en Lima, Perú?
"""
agent(message)
Ahora el agente, además del modelo, usa la herramienta para consultar la hora actual en Lima y responde con precisión:
Tool #1: current_time
La hora actual en Lima, Perú es **10:03:24 AM** (29 de septiembre de 2025).
Lima se encuentra en la zona horaria UTC-5 (también conocida como America/Lima), y actualmente
no observa el horario de verano, por lo que mantiene la misma diferencia horaria durante todo el año.
Creando nuestra propia herramienta
La verdadera potencia de Strands Agents está en definir nuestras propias tools. Supongamos que queremos consultar el tipo de cambio oficial publicado por SUNAT.
Si no agregamos una herramienta, el modelo responderá con datos aproximados o aclarará que no tiene acceso a esa información:
Tengo disponibles funciones para cálculos matemáticos y obtener la hora actual,
pero no para consultar APIs de tipo de cambio en tiempo real.
Para solucionarlo, definimos una función en Python con el decorador @tool:
from strands import Agent, tool
from strands_tools import calculator, current_time
import requests
from datetime import datetime
@tool
def tipo_cambio_sunat() -> dict:
"""
Obtiene el tipo de cambio del día de hoy desde SUNAT.
Returns:
dict: Diccionario con fecha, tipo de cambio compra y venta
Ejemplo: {"fecha": "29/09/2025", "compra": 3.494, "venta": 3.502}
"""
try:
url = "https://www.sunat.gob.pe/a/txt/tipoCambio.txt"
response = requests.get(url, timeout=10)
response.raise_for_status()
# Formato esperado: 29/09/2025|3.494|3.502|
data = response.text.strip()
parts = data.split('|')
if len(parts) < 3:
raise ValueError("Formato de respuesta inesperado de SUNAT")
return {
"fecha": parts[0],
"compra": float(parts[1]),
"venta": float(parts[2]),
"moneda": "USD/PEN"
}
except requests.RequestException as e:
return {"error": f"Error al conectar con SUNAT: {str(e)}"}
except (ValueError, IndexError) as e:
return {"error": f"Error al procesar datos de SUNAT: {str(e)}"}
except Exception as e:
return {"error": f"Error inesperado: {str(e)}"}
# Crea un agente con nuestra tool y tools de la comunidad
agent = Agent(tools=[calculator, current_time, tipo_cambio_sunat])
# Realiza una pregunta al agente con las herramientas disponibles
message = """
¿Cuál es el tipo de cambio de hoy según SUNAT? Y si tengo 100 dólares,
¿cuántos soles serían al tipo de cambio de venta?
"""
agent(message)
Con esto, el agente invoca la API de SUNAT, obtiene el tipo de cambio y lo combina con la calculadora para responder correctamente:
Tool #1: tipo_cambio_sunat
Ahora calculemos cuántos soles serían 100 dólares al tipo de cambio de venta:
Tool #2: calculator
## Tipo de cambio SUNAT - 29/09/2025
**Tipo de cambio del día:**
- Compra: S/ 3.494 por dólar
- Venta: S/ 3.502 por dólar
**Conversión de tus 100 dólares:**
- Al tipo de cambio de venta: 100 USD = S/ 350.20
Conclusión
Strands Agents facilita la construcción de agentes de IA sobre AWS al abstraer la complejidad del agent loop y permitir que los desarrolladores se enfoquen en lo importante: crear herramientas que conecten al LLM con datos y servicios reales.
- Con unas pocas líneas de código pasamos de un agente que responde con conocimiento general a uno que accede a información actualizada y confiable.
- Gracias a la integración nativa con Amazon Bedrock, podemos crear agentes productivos delegando la infraestructura del modelo al servicio gestionado de AWS.
- Lo más poderoso: extendemos las capacidades del agente creando tools que respondan a las necesidades de cada negocio.
Este es solo el inicio. El siguiente paso es orquestar múltiples agentes, desplegarlos en arquitecturas serverless y habilitar escenarios más avanzados de automatización con IA generativa. Si quieres explorar cómo llevar tu agente a producción de manera escalable, revisa nuestra guía sobre Amazon Bedrock AgentCore.
Cómo lo aplicamos en Caleidos
En proyectos reales, herramientas como tipo_cambio_sunat se multiplican y se vuelven la columna vertebral de un agente útil para el negocio: consulta de inventario en SAP, validación de RUC en SUNAT, búsqueda de pólizas en core de seguros, integración con CRM. Cada tool añade una capacidad concreta y medible.
Caleidos diseña, construye y opera estos agentes como parte de nuestro servicio Agentic AI con AWS, incluyendo arquitectura, herramientas custom, evaluación de calidad y operación 24×7 con Caleidos Lens©. Y si te interesa el lado del protocolo estándar, conoce Model Context Protocol (MCP) y cómo permite reutilizar herramientas entre agentes.
¿Quieres conversar sobre tu caso de uso? Hablemos →