Como Criar Assistentes de Pesquisa Inteligentes com Strands Agents e AWS em Poucas Linhas de Código

Desafios na criação de aplicações de IA e a proposta do Strands Agents
Desenvolver uma aplicação de inteligência artificial (IA) não deveria exigir um doutorado em aprendizado de máquina ou meses lidando com arquiteturas complexas. Contudo, ao tentar orquestrar múltiplas chamadas de API, gerenciar estados de conversação e criar agentes capazes de raciocinar autonomamente, projetos simples frequentemente se tornam complexos e extensos, demandando conhecimentos especializados em processamento de linguagem natural e sistemas distribuídos.
O Strands Agents, um framework open source, surge para simplificar essa jornada. Ele permite criar agentes inteligentes que realizam tarefas como pesquisa, análise e geração de conteúdo com poucas linhas de código, combinando modelos de linguagem de grande porte (LLMs) com lógica personalizada via Python. Além disso, integra-se naturalmente ao ecossistema AWS, incluindo Amazon Bedrock e AWS Lambda.
O que é Strands Agents e por que utilizá-lo?
- Simplificação do desenvolvimento: Usa LLMs para raciocínio autônomo e planejamento, reduzindo a necessidade de hardcoding complexo.
- Arquitetura flexível: Suporta desde agentes únicos até redes multiagentes e sistemas hierárquicos.
- Integração com AWS: Compatível com Amazon Bedrock, AWS Lambda, e usado em serviços como Amazon Q e AWS Glue.
- Open source e comunidade ativa: Licenciado sob Apache-2.0, com contribuições frequentes e código que funciona tanto em desenvolvimento local quanto em produção.
- Resposta em tempo real: Ideal para aplicações interativas que exigem feedback imediato.
Pré-requisitos para começar
- Conta AWS configurada
- Usuário configurado no AWS IAM Identity Center ou Builder ID
- Instalação do Kiro (IDE assistida por IA)
- Configuração das credenciais AWS para acessar Amazon Bedrock, preferencialmente via AWS IAM Identity Center
- Permissões IAM específicas para invocar modelos Foundation Models (exemplo: Claude Sonnet)
Exemplo de política IAM para invocar o modelo Claude Sonnet via Amazon Bedrock:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:Converse"
],
"Resource": "arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"
}
]
}
Construindo um assistente de pesquisa inteligente em 30 linhas de código
O exemplo prático demonstra como criar um assistente de pesquisa capaz de responder perguntas, encontrar artigos recentes, listar pré-requisitos, identificar pesquisadores-chave e sugerir URLs relevantes para aprofundamento, tudo com uma interface web simples baseada em Streamlit.
- Instale o SDK Strands Agents e Streamlit:
- Crie um arquivo Python (exemplo:
research_assistant.py) com o código gerado pelo Kiro, que inclui: - Título e subtítulo da aplicação
- Campo de texto para entrada do tópico de pesquisa
- Botão para gerar relatório de pesquisa com spinner de carregamento
- Redirecionamento da saída padrão para evitar poluição do terminal
- Prompt estruturado para o agente, solicitando:
- Visão geral do tópico em 50 palavras
- Dois artigos recentes sobre o tema, 20 palavras cada
- Pré-requisitos relevantes, 20 palavras cada
- Dois pesquisadores importantes com biografia resumida
- Duas URLs e papers relevantes do arXiv
- Exibição do resultado na interface Streamlit
pip install strands-agents
pip install streamlit
import sys
import os
import streamlit as st
from strands import Agent
st.title("Research Assistant")
st.write("Enter a topic to get research analysis and recommendations")
topic = st.text_input("Research Topic", placeholder="e.g., renewable energy, artificial intelligence")
if st.button("Generate Research Report"):
if topic:
with st.spinner("Researching and analyzing..."):
old_stdout = sys.stdout
try:
sys.stdout = open(os.devnull, "w")
agent = Agent()
response = agent(
f"You are a research assistant. For the topic '{topic}': "
f"1. Overview of the topic in about 50 words "
f"2. Find recent 2 articles about {topic} in 20 words each "
f"3. Things to know relevant to the topic and description as prerequisites in 20 words each "
f"like if topic is agentic ai then prereq is machine learning and generative ai "
f"4. 2 key contributors and well known people in this field of research topic including their bio in 25 words each "
f"5. give relevant 2 urls to read more and any research papers from https://arxiv.org/"
)
finally:
sys.stdout = old_stdout
st.subheader(f"Research Report: {topic}")
st.write(response.message["content"][0]["text"])
else:
st.warning("Please enter a topic to research.")
Considerações de segurança e produção
- Validação de entrada: Limite o tamanho do tópico e remova caracteres não imprimíveis para evitar ataques de injeção.
- Amazon Bedrock Guardrails: Ative filtros para prevenir conteúdos nocivos e injeção de prompts.
- Monitoramento: Habilite logs de invocação do modelo e eventos do AWS CloudTrail para auditoria.
- Controle de custo: Defina alarmes de cota e limite consultas por sessão para evitar gastos inesperados.
- Proteção da interface: Não exponha a aplicação Streamlit em rede pública sem autenticação e proteção contra CSRF.
- Revisão de MCP servers: Caso utilize servidores MCP de terceiros para recuperação em tempo real, faça análise legal e de segurança rigorosa.
Ferramentas auxiliares: Kiro e integração com MCP servers
O Kiro é uma IDE assistida por IA que acelera o desenvolvimento ao gerar código a partir de prompts em linguagem natural. Ele também facilita a iteração rápida, permitindo que o desenvolvedor peça modificações ou melhorias de forma conversacional.
Para pesquisas em tempo real, é possível integrar MCP servers, como o arxiv-mcp, mas recomenda-se cautela, especialmente em ambientes de produção, preferindo soluções gerenciadas pela AWS via Amazon Bedrock AgentCore para maior segurança e controle.