Primeros pasos para crear un agente de IA básico con Amazon Bedrock
1. ¿Qué es Amazon Bedrock?
Amazon Bedrock es el servicio administrado de AWS que permite consumir modelos de lenguaje grande (LLM) y de difusión de imágenes sin necesidad de gestionar infraestructura. Ofrece acceso a modelos de proveedores como Anthropic, AI21, Stability AI y los propios de Amazon (Titan).
Ventajas clave:
- Escalado automático y facturación por uso.
- Integración nativa con IAM y VPC Endpoints para seguridad.
- Compatibilidad con
boto3yAWS SDK for Python.
2. Prerrequisitos
- Cuenta AWS con permisos
bedrock:InvokeModelybedrock:ListFoundationModels. - Python 3.9+ y
boto3(>=1.28). Instálalo conpip install boto3. - Credenciales configuradas mediante
aws configureo variables de entorno. - Un modelo disponible en la región
us-east-1(actualmente Bedrock está limitado a un conjunto de regiones).
3. Configuración del entorno
# Crear un entorno virtual
python -m venv .venv
source .venv/bin/activate
# Instalar dependencias
pip install boto3 python-dotenv
# (Opcional) Guardar credenciales en .env
cat >> .env <<EOF
AWS_ACCESS_KEY_ID=YOUR_KEY
AWS_SECRET_ACCESS_KEY=YOUR_SECRET
AWS_DEFAULT_REGION=us-east-1
EOF
Con la variable de entorno BEDROCK_MODEL_ID podemos parametrizar el modelo que usaremos.
4. Primer agente de IA con Bedrock
Un agente básico se compone de tres partes: entrada del usuario, llamada al modelo y post‑procesamiento de la respuesta.
4.1 Código completo

Este script crea un bucle interactivo similar a ChatGPT. El prompt sigue la convención de Claude (Human: / Assistant:) pero puede adaptarse a otros modelos cambiando la estructura.
5. Comparativa rápida: Bedrock vs alternativas líderes
Amazon Bedrock
- Facturación por token consumido.
- IAM + VPC Endpoints → seguridad “zero‑trust”.
- Acceso a modelos de terceros sin licencias adicionales.
- Escalado automático dentro de la infraestructura de AWS.
OpenAI (ChatGPT / GPT‑4)
- Modelo propio, alta calidad de generación.
- Autenticación vía API‑Key, sin integración IAM nativa.
- Limitado a regiones de OpenAI, latencia variable.
- Planes de suscripción y límites de cuota.
Ambas opciones son viables; la decisión depende del ecosistema cloud, requisitos de cumplimiento y costes operacionales.
6. Buenas prácticas de seguridad
- Principio de menor privilegio: Concede únicamente
bedrock:InvokeModelal rol o usuario que ejecuta el agente. - VPC Endpoints: Usa
com.amazonaws.para evitar tráfico público..bedrock-runtime - Encriptado en reposo y tránsito: Bedrock cifra automáticamente los datos en tránsito (TLS 1.2) y en reposo (KMS).
- Gestión de secretos: Almacena
AWS_ACCESS_KEY_IDyAWS_SECRET_ACCESS_KEYen AWS Secrets Manager o Parameter Store y recupéralos medianteboto3en tiempo de ejecución.
7. Resolución de problemas (troubleshooting)
7.1 Error AccessDeniedException
Significa que el rol/usuario no tiene la política adecuada. Solución:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:ListFoundationModels"
],
"Resource": "*"
}
]
}
7.2 Latencia alta (> 2 s)
- Verifica que la llamada se realiza dentro de la misma región que el modelo.
- Activa
ProvisionedThroughputmedianteModelInvocationConfig(solo disponible para algunos modelos). - Considera usar
async invoke_modelconconcurrent.futuressi tu aplicación requiere alta concurrencia.
8. Optimización de rendimiento y costes
- Control de
max_tokens_to_sample: Limita la longitud de la respuesta a lo necesario (p. ej., 256 tokens para respuestas breves). - Temperatura y top‑p: Valores bajos (0.2‑0.5) reducen la variabilidad y, en algunos casos, el número de tokens generados.
- Batching: Agrupa varias peticiones en un solo
invoke_modelcuando el modelo lo permite (modelos de embeddings).
9. Próximos pasos
- Explorar documentación oficial para usar tool use y function calling con Bedrock.
- Integrar el agente con
Amazon LexoAmazon API Gatewaypara exponerlo como API REST. - Implementar caché de respuestas usando
Amazon ElastiCachey reducir costos. - Evaluar modelos de fine‑tuning (cuando estén disponibles) para dominios específicos.