Construindo agentes com busca na web usando Strands e Exa

O problema com APIs de busca tradicionais em fluxos de agentes

Se você está construindo agentes de IA para pesquisa, verificação de fatos ou inteligência competitiva, a qualidade da informação em tempo real é determinante. O problema é que a maioria das APIs de busca genéricas não foi projetada para esse tipo de fluxo: elas retornam páginas cheias de HTML e snippets curtos otimizados para navegação humana, não dados estruturados que um agente possa consumir diretamente. O resultado prático é que os desenvolvedores acabam precisando construir camadas adicionais — crawlers customizados, parsers e lógica de ranqueamento — só para transformar esse conteúdo em algo utilizável dentro do workflow do agente.

É exatamente essa lacuna que a integração entre o Strands Agents SDK e a Exa busca resolver, oferecendo uma camada de busca e recuperação de conteúdo nativa para IA, construída diretamente na interface de ferramentas do SDK.

O que é o Strands Agents SDK

O Strands Agents SDK é um framework open source da AWS para construção de agentes de IA com uma abordagem orientada ao modelo. Em vez de escrever workflows com cada passo codificado manualmente, o desenvolvedor fornece um modelo, um prompt de sistema e uma lista de ferramentas. O próprio modelo decide o que fazer a seguir: quais ferramentas chamar, em que ordem e quando a tarefa está concluída.

No centro do SDK está o chamado agent loop. A cada iteração, o modelo recebe todo o histórico da conversa — incluindo cada chamada de ferramenta anterior e seu resultado. Se o modelo precisar de mais informações, ele solicita uma ferramenta; o Strands Agents a executa e devolve o resultado. O loop continua até que o modelo produza uma resposta final. Essa acumulação de contexto ao longo das iterações é o que permite que agentes resolvam tarefas de múltiplos passos que vão além do que uma única chamada a um Modelo de Linguagem de Grande Escala (LLM) consegue fazer.

O SDK já vem com mais de 40 ferramentas pré-construídas cobrindo operações de arquivo, execução de shell, busca na web, APIs da AWS, memória, execução de código e muito mais. Ele também suporta o Protocolo de Contexto de Modelo (MCP — Model Context Protocol), então ferramentas expostas por servidores MCP ficam disponíveis para o agente sem trabalho adicional de integração. Adicionar novas ferramentas — incluindo as da Exa — segue o mesmo padrão: basta incluí-las na lista tools=[] e o modelo aprende a usá-las a partir das suas assinaturas.

O que é a Exa e por que ela é diferente

A Exa é uma engine de busca em escala web construída especificamente para LLMs e agentes de IA. Diferente de buscadores tradicionais, a Exa entende o significado de uma consulta, não apenas suas palavras-chave. Uma busca como “startups construindo soluções climáticas” retorna startups reais do setor climático, mesmo que essas páginas nunca usem exatamente essa frase — o modelo faz a correspondência por similaridade semântica, não por sobreposição de strings.

Os resultados chegam como conteúdo limpo e estruturado, sem anúncios ou ruído de Otimização para Mecanismos de Busca (SEO — Search Engine Optimization), prontos para serem consumidos diretamente por um LLM.

As duas ferramentas da integração

A integração com a Exa está disponível através do pacote strands-agents-tools e expõe duas capacidades ao agente:

  • exa_search: realiza buscas na web com suporte a múltiplos modos — auto, fast, instant e deep — e permite filtrar resultados por categoria (notícias, artigos acadêmicos, repositórios GitHub, PDFs, perfis de pessoas, relatórios financeiros), domínio, data e conteúdo textual. Também é possível solicitar conteúdo e resumos junto com os resultados em uma única chamada.
  • exa_get_contents: recupera o conteúdo completo de URLs que o agente já descobriu — seja de uma busca anterior ou do próprio raciocínio do modelo. A ferramenta verifica primeiro um cache de conteúdo para acelerar requisições repetidas; se o conteúdo não estiver em cache ou se o agente precisar da versão mais atual, ela pode fazer live crawling automaticamente.

Os quatro modos de busca do exa_search são:

  • Instant (~200ms): para aplicações em tempo real como autocomplete, sugestões ao vivo e agentes de voz.
  • Fast (~450ms): otimizado para velocidade, adequado para fluxos agenticos onde o agente faz dezenas de chamadas de busca sequenciais.
  • Auto (~1s) — Recomendado: latência balanceada com resultados de alta qualidade. Ponto de partida indicado para a maioria dos casos de uso.
  • Deep (~3-6s): executa buscas paralelas em variações da consulta para cobertura máxima. Ideal para tarefas de pesquisa onde completude importa mais que velocidade.

Configuração em poucas linhas

Para usar a integração, são necessários Python 3.10 ou superior, uma conta AWS com acesso ao Amazon Bedrock e uma chave de API da Exa. A instalação dos pacotes é feita com:

pip install strands-agents strands-agents-tools

Com os pacotes instalados, o processo tem três passos. Primeiro, configure a chave de API da Exa como variável de ambiente:

export EXA_API_KEY="your_exa_api_key_here"

Depois, importe e registre as ferramentas no agente:

from strands import Agent
from strands_tools.exa import exa_search, exa_get_contents

agent = Agent(tools=[exa_search, exa_get_contents])

Com as ferramentas registradas, o agente já pode intercalar busca e extração de conteúdo naturalmente como parte do seu fluxo de raciocínio:

response = agent(
    "Search for the most recent trends in AI agents and provide a concise summary of key developments")

Exemplo prático: o assistente de pesquisa profunda

Para demonstrar como as duas ferramentas funcionam em conjunto, a AWS apresenta um assistente de pesquisa profunda que executa um fluxo de múltiplos passos. Dado um tema de pesquisa, o agente realiza quatro buscas direcionadas em diferentes tipos de fonte, extrai o conteúdo completo dos resultados mais promissores e sintetiza tudo em um relatório estruturado — tudo dentro de uma única invocação do agente, com múltiplas chamadas de ferramentas acontecendo no loop de raciocínio.

A configuração do agente usa o Claude Sonnet via Amazon Bedrock:

from strands import Agent
from strands.models.bedrock import BedrockModel
from strands_tools.exa import exa_search, exa_get_contents

def create_research_agent() -> Agent:
    model = BedrockModel(
        model_id="us.anthropic.claude-sonnet-4-6",
        region_name="us-west-2",
        max_tokens=20000,
    )
    return Agent(
        model=model,
        system_prompt=load_system_prompt(),
        tools=[exa_search, exa_get_contents],
    )

O fluxo de seis etapas

Um prompt de sistema define o fluxo de pesquisa, guiando o agente por seis etapas. Cada etapa instrui o agente a chamar as ferramentas da Exa com parâmetros diferentes, ajustados para o tipo de conteúdo buscado:

  • Etapa 1 — Visão geral: uma varredura ampla usando o modo auto para construir entendimento fundacional sobre o tema, com até 5 resultados e resumos contextuais.
  • Etapa 2 — Notícias recentes: foco em fontes de notícias com filtro de data para os últimos 30 dias, com limite de cache de 24 horas para garantir frescor.
  • Etapa 3 — Artigos acadêmicos: busca na categoria research paper com extração estruturada via esquema JSON para capturar descobertas principais, metodologia e conclusões de cada artigo.
  • Etapa 4 — Projetos no GitHub: implementações open source são encontradas pela categoria github, com destaque para os trechos mais relevantes do repositório.
  • Etapa 5 — Mergulho profundo: o agente muda de descoberta para extração. As duas ou três URLs mais promissoras das etapas anteriores têm seu conteúdo completo recuperado com exa_get_contents, usando live crawling forçado (max_age_hours: 0) e rastreamento de subpáginas para referências, citações e metodologia.
  • Etapa 6 — Síntese: nenhuma ferramenta é chamada. Tudo o que foi coletado nas etapas anteriores alimenta a geração de um relatório estruturado com sumário executivo, visão geral do tema, desenvolvimentos recentes, pesquisas-chave, ferramentas e implementações, e lista completa de fontes com URLs.

O design central do exemplo é que diferentes tipos de fonte requerem parâmetros diferentes — mas não ferramentas diferentes. As mesmas duas ferramentas da Exa são reutilizadas em todo o fluxo com configurações variadas a cada etapa.

Por que esse fluxo multi-etapas é superior a uma busca simples

  • Respostas fundamentadas: cada afirmação no relatório final rastreia de volta a uma URL de origem, reduzindo alucinações.
  • Uso eficiente de tokens: resumos gerados no momento da busca e extração mantêm o conteúdo conciso, para que o LLM trabalhe com conhecimento destilado em vez de dumps brutos de páginas.
  • Profundidade autônoma: o agente itera entre tipos de fonte (notícias, artigos, repositórios de código, páginas completas) sem direcionamento humano, cobrindo um terreno que uma única busca não conseguiria.

Rastreabilidade com Amazon Bedrock AgentCore Observability

Um pipeline de seis etapas com múltiplas chamadas de ferramentas é difícil de depurar sem rastreamento estruturado. O Amazon Bedrock AgentCore Observability, construído sobre o OpenTelemetry, instrumenta toda a execução do agente com mudanças mínimas de código. Cada chamada de ferramenta e cada invocação de LLM se torna um span com relações pai-filho.

No dashboard de Observabilidade de IA Generativa (GenAI — Generative AI) do CloudWatch, cada execução de pesquisa aparece como um trace completo. É possível inspecionar parâmetros de chamada por invocação de exa_search ou exa_get_contents (verificando se o agente usou a categoria, intervalo de datas e limites de conteúdo corretos em cada etapa), latência por etapa e consumo de tokens por invocação de LLM.

Fluxos agenticos são não-determinísticos: a mesma consulta pode produzir resultados de busca diferentes, seleções de URL diferentes para o mergulho profundo e saídas de síntese diferentes. Os dados de trace transformam a depuração de adivinhação em inspeção.

Boas práticas para usar as ferramentas da Exa

A AWS destaca algumas recomendações para otimizar qualidade, latência e custo ao integrar as ferramentas da Exa em agentes. Para mais detalhes sobre tipos de busca, modos de conteúdo e filtragem avançada, a documentação de boas práticas da Exa é o recurso indicado:

  • Comece com auto e ajuste conforme necessário: o modo auto funciona bem para a maioria das consultas. Mude para deep em tarefas de pesquisa onde perder uma fonte relevante tem custo alto, e para fast ou instant quando o agente faz muitas buscas sequenciais e a latência acumulada importa mais que a completude por consulta.
  • Controle o tamanho do conteúdo para gerenciar o orçamento de tokens: defina maxCharacters no campo highlights (o padrão é 4.000 caracteres) para evitar que respostas muito longas consumam tokens desnecessariamente.

Limpeza de recursos

Este exemplo não cria nenhum recurso persistente na AWS. Se não precisar mais da chave de API da Exa, basta revogá-la pelo painel da Exa.

Conclusão

A combinação entre o Strands Agents SDK e a Exa oferece um caminho para construir agentes de IA fundamentados em informações web atuais e precisas. A busca semântica da Exa, o filtro por categoria, os resumos com esquemas JSON e o live crawling são expostos através de apenas duas ferramentas e algumas linhas de configuração.

Como o assistente de pesquisa profunda demonstra, é possível construir um agente multi-etapas que busca em notícias, artigos acadêmicos e repositórios de código, extrai conteúdo completo dos melhores resultados e sintetiza tudo em um relatório fundamentado — tudo guiado por um único prompt de sistema. O agente direciona tipos de fonte com filtros de categoria, controla recência com intervalos de data, formata saída com esquemas JSON e gerencia frescor com live crawling. O fluxo completo é rastreável pelo Amazon Bedrock AgentCore Observability, transformando comportamento não-determinístico em spans inspecionáveis e depuráveis.

O padrão vai além de pesquisa: inteligência competitiva, suporte técnico, análise de mercado e outros domínios onde agentes precisam de informações web em tempo real são casos de uso igualmente aplicáveis. Para começar, experimente o exemplo do assistente de pesquisa profunda com suas próprias perguntas, obtenha sua chave de API da Exa, explore a documentação do Amazon Bedrock e compartilhe seu feedback no repositório GitHub do Strands Agents.

Fonte

Building web search-enabled agents with Strands and Exa (https://aws.amazon.com/blogs/machine-learning/building-web-search-enabled-agents-with-strands-and-exa/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *