En los últimos meses he estado experimentando con diferentes formas de conectar agentes inteligentes con bases de conocimiento en AWS, y uno de los enfoques que más me ha gustado es combinar Strands con una Knowledge Base de Amazon Bedrock.
Cuando comencé esta prueba de concepto, mi objetivo era claro: construir una API de chat que no solo respondiera con información general, sino que también pudiera apoyarse en datos contextuales —en este caso, una Knowledge Base con información de libros de Harry Potter. Y aunque suene complejo, la buena noticia es que con la arquitectura serverless de AWS y librerías como strands-agents, el proceso se vuelve mucho más accesible.
En este artículo te mostraré cómo usar el repositorio strands-poc
para crear tu propia integración paso a paso.
¿Qué vas a lograr?
- Una API con dos endpoints: /health y /chat.
- Una Lambda en contenedor que usa strands-agents para manejar el flujo conversacional.
- Una Knowledge Base en Amazon Bedrock conectada para responder con datos relevantes.
- Toda la infraestructur a desplegada con AWS CDK.
Requisitos previos
- Cuenta de AWS con acceso a Bedrock y Knowledge Bases.
- Python 3.12.
- Docker y AWS CLI configurados.
- AWS CDK instalado.
- Permisos IAM adecuados para Bedrock, Lambda y API Gateway.
Arquitectura general
La solución se compone de:
- API Gateway con dos endpoints.
- Lambda containerizada (Python 3.12) con Strands.
- Knowledge Base en Bedrock (fuente de datos sincronizada).
- CDK para desplegar todo.
Paso a paso
- Crear la Knowledge Base en Bedrock
- Ve a la consola de Amazon Bedrock → Knowledge bases.
- Crea una nueva KB con tu modelo de embeddings favorito.
- Configura el origen de datos (ejemplo: documentos en S3).
- Sincroniza el contenido y toma nota de los IDs (KnowledgeBaseId, DataSourceId).
👉 Documentación oficial: Create a Knowledge Base
- Clonar y configurar el repositorio
git clone https://github.com/hsaenzG/strands-poc.git
cd strands-poc
Copia env.template a .env y edita con tus valores reales (IDs, región, modelo, etc.).
Instala dependencias locales:
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Construir y desplegar la Lambda
Construye la imagen con Docker (ya preparada para linux/amd64).
Despliega con CDK:
cdk bootstrap
cdk deploy
Esto creará API Gateway, la Lambda containerizada y toda la configuración necesaria.
- Probar los endpoints
Verifica la salud de la API:
curl https://<api_url>/prod/health
Haz una consulta al chat:
curl -X POST https://<api_url>/prod/chat \
-H "Content-Type: application/json" \
-d '{"message": "¿Quién es Dumbledore?", "user_id": "usuario1"}'
La respuesta vendrá del modelo, enriquecida con información de la Knowledge Base.
Lecciones aprendidas
- Permisos IAM: gran parte de los errores iniciales vienen de no asignar correctamente permisos a la Lambda para acceder a Bedrock.
- Región: tanto el modelo, la KB como la Lambda deben estar en la misma región.
- Chunking de documentos: la calidad de las respuestas depende mucho de cómo fragmentes tu información antes de subirla a la KB.
- Latencia: al usar Knowledge Base + modelos de lenguaje, las llamadas pueden tardar un poco más; considera caching si lo llevas a producción.
- Lambda en contenedor: la librería de Strands es considerablemente grande y, aun con layers, excederás los límites de tamaño de Lambda. Evítate dolores de cabeza y despliega tu función directamente como una imagen de Docker.
Conclusión
Usar Strands junto con una Knowledge Base de Amazon Bedrock te permite crear asistentes inteligentes que combinan el poder de los LLMs con el conocimiento específico de tus datos. El ejemplo del repo strands-poc es solo el inicio: puedes reemplazar los libros de Harry Potter por documentación de tu empresa, FAQs de soporte o manuales internos.
Mi invitación es a que lo pruebes, lo adaptes a tu contexto y me cuentes qué casos de uso se te ocurren. ¡Estoy segura de que encontrarás formas sorprendentes de aplicar este patrón!
Top comments (0)