Como Construir Agentes de IA com SageMaker AI e Strands Agents SDK

Introdução ao uso de SageMaker AI com Strands Agents SDK
A AWS lançou uma integração que permite construir agentes de inteligência artificial (IA) utilizando o Strands Agents SDK com modelos implantados em endpoints do Amazon SageMaker AI. Essa novidade atende empresas que precisam de controle avançado sobre desempenho, custos, compliance e infraestrutura para suas aplicações de IA.
O que é possível com essa integração?
Com essa solução, é possível:
- Implantar modelos foundation do SageMaker JumpStart;
- Integrar esses modelos com agentes construídos via Strands Agents SDK;
- Implementar observabilidade de nível de produção usando o SageMaker Serverless MLflow para rastreamento das interações dos agentes;
- Realizar testes A/B entre diferentes variantes de modelos para avaliar desempenho;
- Gerenciar, implantar e melhorar continuamente agentes de IA em infraestrutura controlada pela organização.
Quem pode usar e como acessar
Essa solução é destinada a desenvolvedores, cientistas de dados e equipes de machine learning que utilizam AWS e buscam flexibilidade para controlar seus agentes de IA. Para acessar, é necessário ter uma conta AWS com permissões para Amazon SageMaker AI, Amazon Bedrock, SageMaker AI Serverless MLflow, Amazon S3 e SageMaker JumpStart.
O Strands Agents SDK é open source e pode ser instalado via Python, enquanto os modelos foundation são disponibilizados no SageMaker JumpStart. A integração com MLflow permite acompanhar métricas e rastros de execução dos agentes.
Passo a passo para construir um agente com SageMaker AI e Strands Agents
Pré-requisitos
- Conta AWS com permissões adequadas;
- Ambiente Jupyter Notebook local ou SageMaker AI Studio;
- Pacotes Python: strands-agents, strands-agents-tools, mlflow, mlflow-sagemaker, entre outros.
1. Instalar pacotes necessários
%%writefile requirements.txt
strands-agents>=1.9.1
strands-agents-tools>=0.2.8
mlflow>=3.4.0
strands-agents[sagemaker]
mlflow-sagemaker>=1.5.11
pip install -r requirements.txt
2. Implantar modelo no SageMaker AI Endpoint
Exemplo de implantação do modelo Qwen3-4B via SageMaker JumpStart:
import sagemaker
import boto3
from boto3.session import Session
from sagemaker.jumpstart.model import JumpStartModel
boto_session = Session()
sts = boto3.client('sts')
account_id = sts.get_caller_identity().get("Account")
region = boto_session.region_name
ENDPOINT_NAME = "llm-qwen-endpoint-sagemaker"
model_a = JumpStartModel(
model_id="huggingface-reasoning-qwen3-4b",
model_version="1.0.0",
name="qwen3-4b-model"
)
predictor_a = model_a.deploy(
initial_instance_count=1,
instance_type="ml.g5.2xlarge",
endpoint_name=ENDPOINT_NAME
)
3. Criar agente Strands usando o modelo implantado
from strands.models.sagemaker import SageMakerAIModel
from strands import Agent
from strands_tools import http_request
model_sagemaker = SageMakerAIModel(
endpoint_config={
"endpoint_name": ENDPOINT_NAME,
"region_name": region
},
payload_config={
"max_tokens": 2048,
"temperature": 0.2,
"stream": True,
}
)
agent = Agent(model=model_sagemaker, tools=[http_request])
response = agent("Where is the international space station now? (Use: http://api.open-notify.org/iss-now.json)")
print(response.message['content'][0]['text'])
Observabilidade com SageMaker AI Serverless MLflow
Para monitorar a execução dos agentes, o SageMaker AI Serverless MLflow fornece rastreamento automático das interações, uso de ferramentas e métricas, sem necessidade de instrumentação manual.
Configuração do MLflow App
Você pode configurar o MLflow App via console do SageMaker AI Studio ou programaticamente com Boto3. Exemplo de criação via Boto3:
s3_client = boto3.client('s3', region_name=region)
bucket_name = f'{account_id}-mlflow-bucket'
if region == 'us-east-1':
s3_client.create_bucket(Bucket=bucket_name)
else:
s3_client.create_bucket(Bucket=bucket_name, CreateBucketConfiguration={'LocationConstraint': region})
sagemaker_client = boto3.client('sagemaker')
mlflow_app_details = sagemaker_client.create_mlflow_app(
Name='strands-mlflow-app',
ArtifactStoreUri=f's3://{account_id}-mlflow-bucket/artifacts',
RoleArn=role,
)
print(f"MLflow app creation initiated: {mlflow_app_details['Arn']}")
Ativando o rastreamento automático
import os
import mlflow
tracking_uri = mlflow_app_details['Arn']
os.environ["MLFLOW_TRACKING_URI"] = tracking_uri
mlflow.set_experiment("Strands-MLflow")
mlflow.strands.autolog()
Visualização e análise
Após executar o agente, os rastros ficam disponíveis na interface do MLflow App, onde é possível analisar linhas do tempo, chamadas de ferramentas, entradas e saídas de cada etapa, além de métricas de desempenho.
Testes A/B para otimização de modelos
O SageMaker AI permite implantar múltiplas variantes de modelos em um mesmo endpoint para realizar testes A/B. Isso facilita a comparação de desempenho entre versões, como no exemplo do Qwen3-4B versus Qwen3-8B.
Exemplo básico para configurar teste A/B
model_b_name = "sagemaker-strands-demo-qwen3-8b"
model_b = JumpStartModel(
model_id="huggingface-reasoning-qwen3-8b",
model_version="1.0.0",
name=model_b_name
)
model_b.create(instance_type="ml.g5.2xlarge")
production_variants = [
{
"VariantName": "qwen-4b-variant",
"ModelName": "qwen3-4b-model",
"InitialInstanceCount": 1,
"InstanceType": "ml.g5.2xlarge",
"InitialVariantWeight": 0.5
},
{
"VariantName": "qwen3-8b-variant",
"ModelName": model_b_name,
"InitialInstanceCount": 1,
"InstanceType": "ml.g5.2xlarge",
"InitialVariantWeight": 0.5
}
]
sagemaker_client.create_endpoint_config(
EndpointConfigName="llm-endpoint-config-ab",
ProductionVariants=production_variants
)
sagemaker_client.update_endpoint(
EndpointName=ENDPOINT_NAME,
EndpointConfigName="llm-endpoint-config-ab"
)
Impacto prático para empresas
Essa integração oferece às organizações a possibilidade de desenvolver agentes de IA sofisticados, com controle total sobre a infraestrutura, custos e governança. Além disso, permite implementar práticas avançadas de MLOps, como rastreamento detalhado e experimentação controlada, essenciais para sistemas de IA em produção.