Visão Agêntica: Construindo Inteligência Visual com Amazon Bedrock e Servidores MCP

O problema que essa solução resolve

Um dos maiores obstáculos na construção de aplicações de IA no mundo real sempre foi a desconexão entre três capacidades fundamentais: sistemas que enxergam, sistemas que raciocinam e sistemas que agem. Desenvolvedores frequentemente precisam gerenciar múltiplas APIs, criar integrações customizadas e lidar com soluções frágeis para conectar essas peças — o que resulta em implementações ineficientes e caras.

Para endereçar esse desafio, a AWS publicou uma arquitetura de referência que converge três tecnologias-chave: Visão Computacional, Strands Agents e o Protocolo de Contexto de Modelo (MCP). Juntas, essas tecnologias formam um pipeline onde informações visuais podem ser capturadas, compreendidas e utilizadas dentro de um único framework unificado — reduzindo as barreiras tradicionais entre percepção, tomada de decisão e ação.

Visão geral da arquitetura

Na arquitetura proposta, o cliente interage com múltiplos serviços AWS por meio de uma função centralizada do Gerenciamento de Identidade e Acesso da AWS (IAM), que atua como gateway de segurança para o gerenciamento de permissões. Esse modelo elimina a necessidade de credenciais incorporadas no cliente e simplifica o controle de acesso entre os serviços envolvidos.

Os serviços que compõem a solução são:

As três tecnologias centrais

A solução é sustentada por três pilares tecnológicos que vale entender individualmente antes de ver como se integram:

  • Visão Computacional: foca no processamento de informações visuais, como fotos e vídeos.
  • Strands Agents: é um framework para construção de agentes de IA que suporta múltiplos provedores de modelos e ambientes de implantação. Oferece um loop de agente customizável com capacidades de produção, incluindo observabilidade, rastreamento e implantação escalável.
  • Protocolo de Contexto de Modelo (MCP): é um padrão criado para simplificar como sistemas de IA se integram com ferramentas e fontes de dados, substituindo a necessidade de construir conexões separadas para cada par de modelo e fonte de dados.

Interface com o usuário (cliente MCP)

A interface da aplicação é construída com Streamlit e oferece um chat UI intuitivo. No painel lateral, o usuário pode selecionar o modelo de fundação preferido para análise — o padrão é o Claude 4 Sonnet com capacidades de raciocínio, mas também há suporte ao Claude 3.7 Sonnet. Há ainda um botão dedicado para resetar o histórico da conversa.

A seção central da interface permite o upload de conteúdo visual. O sistema aceita imagens (PNG, JPG, JPEG, GIF, WEBP) e vídeos (MP4, AVI, MOV, MKV, WEBM, MPEG4), com limite de 200 MB por arquivo. Após o upload, o agente de IA pode realizar tarefas como recorte de objetos, detecção de labels e análise detalhada do conteúdo. O usuário interage pelo campo de mensagem na parte inferior da tela.

Servidores MCP de Visão Computacional

A implementação é composta por dois servidores: o servidor CV e o servidor OpenSearch. Cada um trata tipos diferentes de requisições.

Servidor CV

O servidor CV da AWS consolida três serviços de IA da Amazon em um protocolo padronizado, permitindo que agentes de IA acessem e processem conteúdo visual por meio de uma API consistente. As ferramentas disponíveis são:

  • describe_image: usa o modelo Claude no Amazon Bedrock para analisar imagens com base em instruções de monitoramento específicas. Recupera imagens do Amazon S3 e as processa pelas capacidades multimodais do Claude. É útil para gerar descrições ou identificar atributos específicos dentro das imagens.
  • analyze_video: usa as capacidades de análise de vídeo do Amazon Nova para processar arquivos de vídeo armazenados no S3, de acordo com instruções específicas fornecidas pelo usuário.
  • detect_labels: integra-se ao Amazon Rekognition para detecção de labels e análise de propriedades de imagens. Oferece controle sobre parâmetros como limiares de confiança, contagem máxima de labels e filtros customizados. Identifica objetos, cenas e atividades, fornecendo coordenadas de bounding box para localização espacial.
  • crop_bounding_box: também usa o Amazon Rekognition para detectar elementos-chave como faces, objetos ou texto, e então fornece coordenadas precisas de bounding box para recorte inteligente da imagem.
  • remove_background: usa a biblioteca rembg para remoção de fundo de imagens sem exigir configurações complexas ou expertise avançada em aprendizado de máquina (ML).

O código abaixo ilustra a estrutura geral da ferramenta describe_image, mostrando como a imagem é recuperada do S3, validada quanto ao tipo de conteúdo e enviada ao Claude para análise:

async def describe_image(image_file_name: str, monitoring_instructions: str) ...
    try:
        # Get the image from S3
        prefix = f"mcp/{image_file_name}"
        print(f"\n[DEBUG] Attempting to analyze image at s3://{Connections.agent_bucket_name}/{prefix}\n")
        response = Connections.s3_client.get_object(
            Bucket=Connections.agent_bucket_name,
            Key=prefix
        )
        image_data = response['Body'].read()
        content_type = response['ContentType']

        # Ensure content type is supported by Bedrock
        valid_content_types = ['image/jpeg', 'image/png', 'image/gif', 'image/webp']
        if content_type not in valid_content_types:
            # Try to determine from file extension
            if image_file_name.lower().endswith(('.jpg', '.jpeg')):
                content_type = 'image/jpeg'
            elif image_file_name.lower().endswith('.png'):
                content_type = 'image/png'
            elif image_file_name.lower().endswith('.gif'):
                content_type = 'image/gif'
            elif image_file_name.lower().endswith('.webp'):
                content_type = 'image/webp'
            else:
                content_type = 'image/jpeg'  # Default fallback
            print(f"[DEBUG] Content type corrected to: {content_type}")

        # Create the prompt for Claude
        prompt = create_multimodal_prompt(
            image_data=image_data,
            text=monitoring_instructions,
            content_type=content_type,
            system_prompt=(
                "You are a helpful assistant that analyzes images. "
                "Provide detailed, accurate descriptions based on the user's instructions."
            )
        )

        # Get analysis from Claude
        analysis = invoke_bedrock_model(prompt)
        return ImageAnalysisResponse(
            status="success",
            source=prefix,
            analysis=analysis,
            message="Image analysis completed successfully"
        )
    except Exception as e:
        logger.error(f"Error analyzing image: {str(e)}")
        return ImageAnalysisResponse(
            status="error",
            source=image_file_name,
            analysis=None,
            message=f"Error analyzing image: {str(e)}"
        )

Servidor OpenSearch

O servidor OpenSearch fornece uma interface unificada para ingestão e recuperação de imagens. As ferramentas disponíveis são:

  • generate_image_description: usa os modelos Claude do Amazon Bedrock para analisar imagens e gerar descrições em linguagem natural, processando as imagens pelas capacidades multimodais do Claude.
  • generate_multimodal_embedding: usa os modelos Amazon Titan multimodais para criar representações vetoriais de alta dimensão (embeddings) que capturam informações visuais e textuais, codificando relações semânticas entre imagens e texto em um espaço vetorial compartilhado.
  • ingest_image_to_opensearch: oferece um pipeline completo para processar e armazenar imagens no OpenSearch, combinando geração de descrição e criação de embeddings multimodais, indexando essas informações com metadados adequados.
  • query_images_by_text: permite busca em linguagem natural em coleções de imagens usando os embeddings multimodais armazenados no OpenSearch. Consultas em texto são convertidas em embeddings e comparadas com os embeddings de imagens para encontrar os matches mais semanticamente similares.
  • query_images_by_image: implementa busca baseada em imagem, permitindo que usuários encontrem imagens similares usando uma imagem como entrada de consulta.
  • bulk_ingest_images: oferece capacidade de processamento em lote para ingestão de imagens em larga escala, gerenciando processamento paralelo e utilização de recursos.

Casos de uso práticos

Caso de uso 1: Pipeline de visão computacional sem infraestrutura dedicada

A arquitetura permite implementar capacidades de análise visual sem a complexidade tradicional de configurar e manter infraestrutura extensa. Desenvolvedores podem realizar tarefas como geração de bounding boxes, criação de descrições detalhadas de imagens e análise de vídeos — tudo sem servidores dedicados ou sistemas de gerenciamento complexos. O modelo de pagamento por uso e a implantação rápida são diferenciais importantes dessa abordagem.

Caso de uso 2: Catálogo inteligente de imagens com embeddings

Ao gerar e armazenar embeddings de imagens em um banco de dados vetorial, a solução vai além das limitações de buscas tradicionais baseadas em palavras-chave, permitindo recuperação de imagens com compreensão contextual. O sistema usa modelos de IA para criar embeddings ricos que capturam a essência semântica das imagens, permitindo encontrar conteúdo visualmente similar mesmo quando não há correspondência exata de palavras-chave. Isso cria um sistema de catalogação escalável que entende relações e contextos visuais — especialmente valioso para grandes coleções de imagens.

Caso de uso 3: Banco de memória visual para raciocínio contextual

Este caso de uso combina o pipeline de visão computacional com busca por similaridade baseada em embeddings. O sistema processa cenas para extrair objetos e seus bounding boxes, gera embeddings para cada elemento e os armazena com metadados ricos — incluindo informações temporais e espaciais. Isso permite raciocínio contextual entre múltiplas câmeras e períodos de tempo, respondendo perguntas complexas sobre indivíduos, suas associações e a presença de objetos em áreas específicas. A integração com agentes de monitoramento de vídeo viabiliza funcionalidades como detecção de atividades suspeitas e análise de padrões históricos.

Como implantar a solução

Para começar, é necessário ter instalado: AWS Command Line Interface (AWS CLI), uma conta AWS ativa e Python. O processo de implantação completo está documentado no README do repositório GitHub da solução.

Limpeza de recursos

Para evitar cobranças contínuas após os testes, a AWS recomenda as seguintes etapas: esvaziar o bucket do S3 utilizado e excluir a stack do AWS CloudFormation criada durante a implantação.

Conclusão

A integração entre as capacidades de IA do Amazon Bedrock, os protocolos padronizados do MCP e os serviços de visão computacional da AWS demonstra como aplicações modernas de visão computacional podem ser ao mesmo tempo sofisticadas e acessíveis. A solução endereça desafios recorrentes no campo: reduz a complexidade de infraestrutura por meio de arquiteturas serverless, oferece compreensão semântica, capacidades de raciocínio contextual e interfaces padronizadas que simplificam o desenvolvimento e a implantação.

A combinação de protocolos padronizados, modelos de IA poderosos e opções flexíveis de implantação posiciona essa solução como base para a próxima geração de aplicações de inteligência visual — onde padronização, acessibilidade e integração serão cada vez mais determinantes para construir sistemas práticos e escaláveis que conectam percepção visual e ação inteligente.

Fonte

Agentic vision: Building visual intelligence with Amazon Bedrock and MCP servers (https://aws.amazon.com/blogs/machine-learning/agentic-vision-building-visual-intelligence-with-amazon-bedrock-and-mcp-servers/)

Comments

Leave a Reply

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