DEV Community

Cover image for Desarrollo de Agentes con Amazon Strands Agents 🚀
Juan Irrazabal
Juan Irrazabal

Posted on

Desarrollo de Agentes con Amazon Strands Agents 🚀

Introducción a la Inteligencia Agéntica

La conversación en torno a la Inteligencia Artificial está cambiando. Ya no se trata solo de lo que la IA puede “escribir”, sino de lo que puede hacer. Si eres desarrollador o arquitecto de soluciones, el desarrollo de agentes es el siguiente paso lógico en tu stack tecnológico.

En este artículo, exploraremos cómo Amazon Strands Agents facilita este camino utilizando Python.

1. ¿IA Generativa o IA Agéntica?

Es fundamental entender la diferencia para una automatización efectiva:

    IA Generativa: Se enfoca en crear contenido como texto, imágenes, música, código u otros.
    IA Agéntica: Se refiere a software capaz de tomar decisiones de manera autónoma. Algunas de esas decisiones pueden incluir generación de contenido.
    La clave: La IA agéntica describe la capacidad , mientras que los Agentes de IA son la implementación concreta de esa autonomía.

2. El Stack Tecnológico: Amazon Strands Agents

Amazon Strands Agents es un SDK Open Source, trabaja con Python y Typescript, diseñado para crear y ejecutar agentes , permitiendo escalar desde pruebas locales hasta entornos de producción.

  • Es un SDK (Software Development Kit) de código abierto (Open Source).
  • Permite tanto crear Agentes como ejecutar Agentes.
  • Está diseñado para manejar desde casos simples hasta casos complejos.
  • Puede utilizarse en entornos locales y de producción.
  • La documentación oficial la pueden encontrar en esta url https://strandsagents.com/latest/

2.1 El Modelo de Operación

Un agente de Strands opera fundamentalmente a través de tres componentes clave que trabajan en conjunto: Modelo, Herramientas e Instrucción.

Instrucción (El Propósito)

Se proporciona una instrucción en lenguaje natural que define la tarea para el agente. Por ejemplo, “Responder a una pregunta de un usuario final”.
Implementar técnicas de Chain-of-Thought (CoT) dentro de las instrucciones del agente. En lugar de instrucciones genéricas, define claramente:
    Rol: “Eres un asistente especializado en X…”
    Restricciones: “Nunca inventes datos si no están en la Knowledge Base”.
    Formato de salida: “Responde siempre en formato JSON si la consulta es técnica”.

Modelo (El Cerebro)

El agente utiliza un Modelo (típicamente un LLM o Modelo de Lenguaje Grande) como su núcleo de razonamiento.

Herramientas (Las Acciones)

Las Herramientas son las capacidades externas con las que el agente puede interactuar para completar la tarea.
Protocolo MCP: Strands utiliza este protocolo para proporcionar un “lenguaje” seguro y estandarizado para que los LLM se comuniquen con datos, aplicaciones y servicios externos.

Ejemplos de categorías de herramientas: sistemas de archivos, herramientas de desarrollo, herramientas de productividad y comunicación, herramientas de IA especializadas.

2.2 El Bucle de Interacción

Un agente interactúa con su modelo y herramientas en un bucle continuo hasta que la tarea indicada en la solicitud se completa.
Este bucle de interacción es fundamental para las capacidades de Strands.

2.3 La Mecánica: ¿Cómo Funciona Strands Agents?

El proceso de implementación se puede resumir en una serie de pasos prácticos:

Paso 1: Instalar Strands Agents
Primero, asegúrate de tener el SDK en tu entorno de desarrollo.

pip install strands-agents
Enter fullscreen mode Exit fullscreen mode

Paso 2: Crear el código, Seleccionar Modelo y Configuración
En este bloque definimos la lógica, el modelo de Amazon Bedrock (como Claude 3) y las herramientas necesarias.

from strands_agents import Agent
from strands_agents.models import BedrockModel
# Seleccionar el Modelo (Amazon Bedrock)
# Configuramos el modelo fundacional que servirá de cerebro
model_bedrock = BedrockModel(
    model_id="anthropic.claude-3-sonnet-20240229-v1:0",
    region_name="us-east-1"
)
# Crear el código y Configuraciones Anexas
# Definimos las instrucciones y las herramientas (MCP)
agente_analista = Agent(
    model=model_bedrock,
    instructions="Eres un asistente técnico que analiza logs de servidores y sugiere soluciones.", 
    tools=["fetch_logs_tool", "cloudwatch_reader"], 
    max_iterations=10 # Configuración anexa para el bucle de interacción
)
Enter fullscreen mode Exit fullscreen mode

Paso 3: Ejecutar, Utilizar y Obtener Salida
El agente interactúa en un bucle hasta completar la tarea indicada.

# Paso 3 Ejecutar y Utilizar
# El agente entra en el bucle de interacción: Modelo -> Herramientas -> Instrucción
print("Iniciando tarea del agente...")
resultado = agente_analista.run("Revisa los errores críticos de las últimas 2 horas en el clúster de producción.")
# Paso 4: Obtener la Salida
# Mostramos el resultado final de la tarea autónoma
print("--- Informe Final del Agente ---")
print(resultado)
Enter fullscreen mode Exit fullscreen mode

2.4 ¿Por qué usar este flujo?

Algunas caracteristicas de este flujo son:

    Bucle de Interacción: El agente no se detiene en la primera respuesta, utiliza el modelo y las herramientas repetidamente hasta cumplir la instrucción.
    Protocolo MCP: Permite que tu agente en Bedrock se conecte de forma estandarizada a sistemas de archivos o herramientas de desarrollo.
    Escalabilidad: Este mismo código puede llevarse de un ambiente local a una arquitectura de producción en AWS.

2.5 Seguridad y control (Guardrails)

Un Guardrail actúa como una “malla de seguridad” entre el usuario y el modelo. Se configura principalmente en cuatro capas:

    Filtros de contenido: Bloquean categorías como odio, insultos, contenido sexual o violencia.
    Temas denegados (Denied Topics): Evitan que el agente hable de temas específicos (ej. “no hables de criptomonedas” o “no menciones a la competencia”).
    Filtros de información personal (PII): Detectan y anonimizan datos como DNI, tarjetas de crédito o emails.
    Filtros de palabras: Bloquean términos específicos definidos por ti.

Ejemplo 1: Si estuvieras configurando un Tema Denegado para un asistente de atención al cliente de una tienda de electrónica, usarías algo como esto:

    Nombre del tema: Comparación con la competencia.
    Definición del tema: “Cualquier consulta donde el usuario pregunte por precios, productos o servicios de competidores directos como Best Buy, MediaMarkt o Amazon Prime Shopping.”
    Mensaje de bloqueo personalizado: “Lo siento, como asistente oficial de esta tienda, solo puedo proporcionarte información sobre nuestros propios productos y servicios. ¿En qué más puedo ayudarte?”

Cuando invocas al agente desde tu aplicación, debes pasar el ID del Guardrail que creaste en la consola para que se aplique en tiempo real.

import boto3
client = boto3.client('bedrock-agent-runtime')
def consultar_agente_con_seguridad(input_texto, session_id):
    response = client.invoke_agent(
        agentId='ID_DE_TU_AGENTE',
        agentAliasId='ALIAS_ID',
        sessionId=session_id,
        inputText=input_texto,
        # Aquí activas el Guardrail creado previamente
        guardrailIdentifier='abc123456789', 
        guardrailVersion='1',
        enableTrace=True
    )

    # Si el Guardrail bloquea la respuesta, el evento 'trace' lo indicará
    # o el texto de salida será el mensaje personalizado que configuraste.
    return response
Enter fullscreen mode Exit fullscreen mode

Ejemplo 2: Si quieres que el agente nunca vea o guarde el correo electrónico del usuario para cumplir con la GDPR, configurarías el Guardrail así:

    Tipo de PII: EMAIL
    Acción: BLOCK (Bloquea la entrada si hay un email) o MASK (Reemplaza el email por [EMAIL]).

Resultado esperado:
Usuario: “Hola, mi correo es xx.yyy@gmail.com, ¿puedes ayudarme?”
Lo que recibe el modelo: “Hola, mi correo es [EMAIL], ¿puedes ayudarme?”

Construir un agente funcional es solo el comienzo, el verdadero reto es hacerlo seguro, preciso y escalable. Implementar Guardrails y optimizar tus Knowledge Bases es lo que diferenciará una prueba de concepto de una solución lista para producción. ¡Lleva tu agente al siguiente nivel y empieza a construir aplicaciones de IA generativa que realmente transformen tu negocio!

Top comments (0)