
Construindo um Agente Inteligente na AWS com Amazon Bedrock: Arquitetura, Código e Implementação Prática
Aprenda a construir um agente inteligente completo na AWS utilizando Amazon Bedrock, Lambda e DynamoDB, com arquitetura real, código e boas práticas de produção.
Introdução
No artigo anterior Link , exploramos os fundamentos da Generative AI e o Amazon Bedrock.
Agora, vamos dar o próximo passo: sair da teoria e construir um agente inteligente real, utilizando uma arquitetura serverless e escalável.
Aqui, você não vai apenas chamar um modelo — você vai criar um sistema inteligente completo.
🤖 O que é um Agente na AWS?
Um agente vai além de um simples prompt.
Ele combina:
- 🧠 Modelo (Bedrock)
- 🔄 Lógica (Lambda)
- 💾 Memória (DynamoDB)
- 🌐 Interface (API Gateway)
👉 Ou seja: o agente pensa, lembra e responde com contexto
🏗️ Arquitetura da Solução
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Usuário
│
▼
API Gateway
│
▼
AWS Lambda
│
┌──────────┴──────────┐
▼ ▼
Amazon Bedrock DynamoDB
(LLM) (memória)
│ │
└──────────┬──────────┘
▼
Resposta final
📊 Fluxo do Agente
1
2
3
4
5
6
7
8
1. Usuário envia prompt
2. API Gateway recebe requisição
3. Lambda processa input
4. Lambda busca histórico no DynamoDB
5. Prompt é enriquecido com contexto
6. Bedrock gera resposta
7. Lambda salva histórico
8. Resposta retorna ao usuário
⚙️ Passo a Passo
✅ 1. Criar tabela DynamoDB (memória)
- Nome:
chat-history - Chave primária:
session_id
✅ 2. Criar Role IAM
Permissões mínimas:
1
2
3
4
5
6
7
8
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"dynamodb:GetItem",
"dynamodb:PutItem"
],
"Resource": "*"
}
✅ 3. Criar função Lambda
Exemplo completo (Python):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import json
import boto3
bedrock = boto3.client("bedrock-runtime")
dynamodb = boto3.resource("dynamodb")
table = dynamodb.Table("chat-history")
def get_history(session_id):
response = table.get_item(Key={"session_id": session_id})
return response.get("Item", {}).get("history", "")
def save_history(session_id, history):
table.put_item(
Item={
"session_id": session_id,
"history": history
}
)
def lambda_handler(event, context):
body = json.loads(event["body"])
prompt = body.get("prompt")
session_id = body.get("session_id", "default")
history = get_history(session_id)
enriched_prompt = f"""
Conversa anterior:
{history}
Usuário: {prompt}
Assistente:
"""
response = bedrock.invoke_model(
modelId="anthropic.claude-v2",
body=json.dumps({
"prompt": enriched_prompt,
"max_tokens_to_sample": 300
})
)
result = json.loads(response["body"].read())
answer = result.get("completion")
new_history = history + f"\nUsuário: {prompt}\nAssistente: {answer}"
save_history(session_id, new_history)
return {
"statusCode": 200,
"body": json.dumps({
"response": answer
})
}
✅ 4. Criar API Gateway
- Tipo: HTTP API
- Rota:
1
POST /chat
- Integração: Lambda
✅ 5. Testando o Agente
1
2
3
4
5
6
curl -X POST https://seu-endpoint/chat \
-H "Content-Type: application/json" \
-d '{
"session_id": "user123",
"prompt": "Explique o que é AWS Lambda"
}'🧠 Evoluindo o Agente (Nível Arquitetura)
Agora vem o diferencial.
🔎 1. Implementar RAG (dados internos)
Arquitetura:
1
2
3
4
Usuário → Query
→ OpenSearch (busca)
→ Contexto + Prompt
→ Bedrock
👉 Permite respostas com dados da empresa
🧩 2. Uso de Tools (Function Calling)
Exemplo:
- Consultar APIs internas
- Buscar dados em banco
- Executar ações automatizadas
💾 3. Memória avançada
- DynamoDB → curto prazo
- S3 → histórico longo
- Redis (ElastiCache) → alta performance
🔄 4. Orquestração com Step Functions
Para agentes mais complexos:
- múltiplas etapas
- decisões condicionais
- workflows inteligentes
🔐 Boas Práticas
- ✅ Least Privilege (IAM)
- ✅ Limitar tokens
- ✅ Sanitizar inputs
- ✅ Logs no CloudWatch
- ✅ Monitorar custos
💰 Custos
Fatores principais:
- Tokens de entrada/saída
- Execuções Lambda
- Requests de API
📉 Estratégias:
- Cache de respostas
- Redução de contexto
- Uso de modelos menores quando possível
🚀 Conclusão
Criar agentes com Amazon Bedrock não é apenas integrar um modelo de IA.
É projetar uma arquitetura inteligente, capaz de:
- entender contexto
- armazenar memória
- integrar com sistemas
- escalar automaticamente
👉 Esse é o verdadeiro diferencial no mercado hoje.
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article