Explorando os Recursos de Inteligência Artificial do Microsoft Azure

A inteligência artificial no Azure chega ao desenvolvedor como um conjunto de serviços prontos, que você consome por APIs sem precisar treinar modelos do zero. Este é o primeiro artigo de uma série dedicada a explorar os recursos de Inteligência Artificial (IA) que o Microsoft Azure oferece.

Aqui, você conhece exemplos de aplicações típicas de IA e descobre qual serviço do Azure atende cada uma delas. Por fim, coloca a mão na massa e cria uma aplicação console de tradução de textos com C#.

Aplicações de inteligência artificial no Azure

Antes de falar dos serviços, vale entender os problemas que eles resolvem. Por isso, as próximas seções apresentam as grandes áreas da IA com exemplos do dia a dia.

Machine learning

Suponha que você queira ensinar um sistema a reconhecer spam em e-mails. Em vez de criar regras fixas para cada tipo de spam possível, você fornece ao sistema uma enorme quantidade de exemplos rotulados como "spam" ou "não spam".

Então, o sistema usa esses exemplos para aprender quais características dos e-mails indicam spam e quais não indicam. Com base nesse aprendizado, ele identifica e classifica automaticamente novos e-mails.

Mais adiante, você vê que a inteligência artificial no Azure oferece um serviço inteiro dedicado a esse tipo de problema.

Esse é um exemplo típico de Machine Learning (ML), ou aprendizado de máquina. Trata-se de uma subcategoria da inteligência artificial que desenvolve algoritmos e técnicas para que os computadores aprendam a partir de dados.

Visão computacional

A visão computacional, que a Microsoft também chama de pesquisa visual computacional, é a área da IA que interpreta e analisa informações visuais, como imagens e vídeos. Veja algumas aplicações típicas:

  • Classificação de imagens: um modelo de ML aprende a identificar e categorizar o conteúdo de imagens. Por exemplo, ele diferencia táxis, ônibus e bicicletas para melhorar a gestão do tráfego.

  • Análise de imagens: a combinação de ML com técnicas de análise de imagem extrai informações, como marcas em uma propaganda ou defeitos de fabricação em uma linha de produção.
    Na inteligência artificial no Azure, todas essas tarefas aparecem como chamadas de API de um serviço de visão.

  • Detecção de objetos: o modelo classifica objetos dentro de uma imagem e indica a localização de cada um com uma caixa delimitadora. Por exemplo, ele conta pessoas em shoppings, estádios de futebol e shows.

Processamento de linguagem natural

O Processamento de Linguagem Natural (NLP) é a área da IA que desenvolve sistemas capazes de compreender e gerar linguagem humana de forma natural. Alguns cenários típicos de uso:

  • Assistentes virtuais: chatbots usam NLP para responder perguntas dos clientes de uma empresa.
  • Análise de sentimento: o NLP identifica o sentimento expresso em posts e comentários de redes sociais.
  • Tradução automática: o sistema converte instantaneamente um texto de um idioma para outro.
  • Reconhecimento de voz: assistentes pessoais em smartphones e controles de voz em carros e casas já são exemplos comuns.

Aliás, a tradução automática é justamente o cenário que você vai implementar com inteligência artificial no Azure no fim deste artigo.

Inteligência de documentos

Essa área da IA processa documentos escritos ou digitais e extrai informações deles. Veja alguns casos típicos:

  • OCR em documentos escaneados: o sistema lê, por exemplo, o valor e o nome da empresa em uma nota fiscal.
  • Pesquisa de documentos jurídicos: a ferramenta ajuda advogados a pesquisar e analisar grandes volumes de documentos legais.
  • Análise de relatórios financeiros: a IA examina relatórios para apoiar a tomada de decisões empresariais.

Mineração de conhecimento

A mineração de conhecimento extrai e organiza informações a partir de grandes volumes de dados não estruturados. Na prática, ela aparece em casos como estes:

  • Análise de texto em saúde: o sistema analisa registros médicos e identifica padrões que ajudam no diagnóstico de doenças.
  • Recomendações personalizadas: um e-commerce analisa o comportamento do usuário e recomenda produtos sob medida.

Nesse caso, a inteligência artificial no Azure combina pesquisa e enriquecimento de dados para transformar texto solto em informação útil.

IA generativa

A IA generativa cria conteúdo original por meio de algoritmos e modelos de aprendizado de máquina. Alguns exemplos:

  • Chatbots inteligentes: com IA generativa, os chatbots ficam mais adaptáveis e oferecem respostas mais precisas e úteis.
  • Geração de texto: os modelos criam histórias, poesias, artigos e até códigos de programação.
  • Produção de música: plataformas de streaming criam listas de reprodução personalizadas com base nos gostos dos usuários.

Se quiser aprofundar os conceitos desta seção, o artigo sobre conceitos fundamentais de inteligência artificial complementa bem a leitura.

Serviços de inteligência artificial no Azure

Com o Microsoft Azure, você implementa e integra todas essas aplicações com relativa facilidade. No Azure, cada tipo de aplicação vira um "recurso", e para cada recurso existe um serviço específico.

A tabela abaixo resume o mapa entre a área da IA e o serviço correspondente. Em seguida, cada item ganha uma explicação curta.

Área da IA Serviço do Azure
Machine learning Azure Machine Learning
Visão computacional Visão de IA do Azure
NLP Linguagem de IA do Azure
Inteligência de documentos e mineração de conhecimento Serviço de Pesquisa de IA do Azure
IA generativa Serviço OpenAI do Azure

Azure Machine Learning

O Azure Machine Learning permite desenvolver soluções completas de machine learning. Segundo a documentação, ele cobre treino, implantação e operação de modelos em escala, com suporte a frameworks como PyTorch, TensorFlow e scikit-learn.

Dentro da inteligência artificial no Azure, ele é a escolha certa quando nenhum modelo pronto resolve o seu cenário.

Para entender o serviço com mais detalhes, leia o artigo sobre machine learning com o Microsoft Azure.

Visão e linguagem com inteligência artificial no Azure

O serviço Visão de IA do Azure extrai informações de imagens e simplifica a criação de diversas soluções de visão computacional. Assim, tarefas como análise de imagens e OCR viram chamadas de API.

Já a Linguagem de IA do Azure oferece recursos avançados para entender e analisar texto. Entre eles estão a análise de sentimentos, a identificação de frases-chave, o resumo de texto e a compreensão de linguagem conversacional.

Pesquisa de IA e OpenAI do Azure

Com o Serviço de Pesquisa de IA do Azure, você cria soluções de pesquisa que extraem dados de diversos documentos. Esses documentos podem ser estruturados, semiestruturados ou não estruturados.

O Serviço OpenAI do Azure, por sua vez, combina os recursos do Azure com os modelos de IA generativa da OpenAI. Além dos modelos pré-treinados, ele oferece personalização, ferramentas para detectar e mitigar uso prejudicial e segurança corporativa.

Com ele, a inteligência artificial no Azure também cobre chatbots, geração de texto e resumo de conteúdo.

Para ver esse serviço em código, confira o artigo sobre Azure OpenAI com .NET.

Os três princípios da inteligência artificial no Azure

Agora você deve estar pensando que, para implementar tudo isso, vai precisar estudar durante anos. Bem, não necessariamente, porque os serviços de inteligência artificial no Azure existem justamente para simplificar esse processo.

O Azure oferece reconhecimento de imagem, processamento de linguagem natural, fala, pesquisa e muito mais, prontos para incorporar à sua aplicação. Em vez de dominar todos os aspectos complexos da IA, você aproveita esses serviços para adicionar recursos avançados aos seus aplicativos.

Tudo isso funciona graças a três princípios que todo serviço de IA do Azure atende:

  • Predefinido e pronto para uso;
  • Acessado por meio de APIs;
  • Disponível no Azure.

Predefinido e pronto para uso

Os serviços de IA do Azure chegam pré-treinados e prontos para uso, então você não começa do zero. Também não precisa passar por longos processos de treinamento nem lidar com grandes conjuntos de dados.

Em outras palavras, a Microsoft já fez o trabalho pesado. Ela disponibiliza modelos avançados de IA como recursos simples e fáceis de usar.

Acessado por meio de APIs

Você consome todos os serviços por meio de APIs REST, bibliotecas de cliente ou ferramentas como Aplicativos Lógicos e Power Automate. Com isso, começa a usar a inteligência artificial no Azure com apenas algumas linhas de código.

Disponível no Azure

Os serviços de IA fazem parte da plataforma do Azure e seguem a mesma forma de gerenciamento dos demais serviços. Ou seja, o desenvolvedor encontra uma experiência consistente e familiar.

Além disso, como qualquer outro recurso do Azure, esses serviços escalam bem e mantêm alta disponibilidade. Dessa forma, seus aplicativos conseguem lidar com cargas de trabalho variadas.

Mão na massa com inteligência artificial no Azure

Agora é hora de colocar em prática o que você aprendeu. A ideia deste laboratório é configurar o serviço de Tradução por IA do Azure e construir uma aplicação simples para utilizá-lo.

Com isso, você entende como configurar os recursos e percebe como é simples montar uma aplicação de inteligência artificial no Azure. Curiosamente, o serviço escolhido nem apareceu nos exemplos anteriores: você vai criar uma aplicação console que traduz textos.

Nos próximos artigos da série, cada recurso mencionado aqui ganha uma aplicação específica.

Configurando a inteligência artificial no Azure pelo CLI

Independentemente do recurso escolhido, a configuração segue sempre o mesmo padrão. Primeiro, você cria um grupo de recursos e, depois, o recurso associado ao serviço desejado.

Você pode usar a interface gráfica do Azure, mas este laboratório usa a linha de comando. Afinal, conhecer os comandos cria uma base para integrar pipelines de CI/CD e outras práticas de DevOps.

Se ainda não tem a ferramenta, instale o Azure CLI seguindo a documentação oficial. Em seguida, faça login na sua conta:

az login

Criando o grupo de recursos

Um grupo de recursos é um contêiner que mantém recursos relacionados de uma solução do Azure. Ele pode incluir todos os recursos da solução ou apenas aqueles que você quer gerenciar em conjunto.

Todo recurso de inteligência artificial no Azure precisa pertencer a um grupo, então este é sempre o primeiro passo.

Para criar o grupo de recursos, execute o comando abaixo:

az group create \
    --name baltaai-rg \
    --location brazilsouth

Para verificar se o grupo existe, liste os grupos da assinatura:

az group list

Criando o recurso de tradução

Agora crie o recurso de Tradução por IA com o comando az cognitiveservices account create. O nome do comando lembra o antigo nome da família de serviços, Cognitive Services.

az cognitiveservices account create \
    --name balta-translator-service \
    --resource-group baltaai-rg \
    --location global \
    --sku S1 \
    --kind TextTranslation

Repare no parâmetro --location global. Segundo a documentação do Translator, um recurso global exige apenas o cabeçalho da chave, enquanto um recurso regional também exige o cabeçalho com a região.

Anotando o endpoint e as chaves

O comando de criação devolve um JSON com vários parâmetros. Entre eles, o que interessa agora é o endpoint, então anote esse valor.

Esses dois valores conectam qualquer aplicação à inteligência artificial no Azure.

Você também vai precisar das chaves de API. Para listar as chaves criadas, execute este comando:

az cognitiveservices account keys list \
    --name balta-translator-service \
    --resource-group baltaai-rg

Tradutor com inteligência artificial no Azure e C#

Com o serviço configurado no Azure, crie a aplicação console que consome a tradução por IA. Primeiro, gere o projeto e instale o pacote Newtonsoft.Json:

dotnet new console -o ai-translator
cd ai-translator
dotnet add package Newtonsoft.Json

Em seguida, substitua o conteúdo do arquivo Program.cs pelo código abaixo:

using System.Text;
using Newtonsoft.Json;

try
{
    string userText = "";
    while (userText.ToLower() != "exit")
    {
        Console.WriteLine("Type a text in English ('exit' to quit)");
        userText = Console.ReadLine()!;
        if (userText.ToLower() != "exit")
        {
            await Translate(userText);
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

static async Task Translate(string textToTranslate)
{
    try
    {
        // Substitua pelos valores obtidos no Azure CLI
        string aiServiceEndpoint = "<TEXT_TRANSLATION_ENDPOINT>";
        string aiServiceKey = "<TRANSLATION_API_KEY>";

        // Traduz do inglês para português e espanhol
        string route = "/translate?api-version=3.0&from=en&to=pt&to=es";
        object[] body = new object[] { new { Text = textToTranslate } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            request.Method = HttpMethod.Post;
            request.RequestUri = new Uri(aiServiceEndpoint.TrimEnd('/') + route);
            request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
            request.Headers.Add("Ocp-Apim-Subscription-Key", aiServiceKey);
            request.Headers.Add("Ocp-Apim-Subscription-Region", "global");

            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

Lembre de substituir <TEXT_TRANSLATION_ENDPOINT> e <TRANSLATION_API_KEY> pelos valores reais que você anotou na seção de configuração.

Como o código conversa com o serviço

O laço principal lê frases do usuário até ele digitar exit. Para cada frase, o método Translate monta uma requisição POST para a rota /translate da versão 3.0 da API.

Os parâmetros da query string definem o idioma de origem com from=en e os destinos com to=pt e to=es. Assim, uma única chamada à inteligência artificial no Azure devolve a mesma frase em português e em espanhol.

O corpo da requisição é um array JSON com objetos que têm a propriedade Text. Por isso, o código serializa um array anônimo com o Newtonsoft.Json antes do envio.

Por fim, o cabeçalho Ocp-Apim-Subscription-Key carrega a chave do recurso. Já o Ocp-Apim-Subscription-Region informa a região, que é opcional em recursos globais, conforme a referência de autenticação do Translator.

Executando e limpando os recursos

Execute a aplicação com dotnet run e digite uma frase em inglês quando o console pedir. A aplicação mostra o JSON de resposta com a tradução para português e espanhol.

Depois de testar, exclua os recursos no Azure para evitar custos adicionais. Para isso, remova a conta do serviço e, em seguida, o grupo de recursos:

az cognitiveservices account delete \
    --name balta-translator-service \
    --resource-group baltaai-rg

az group delete --name baltaai-rg

Para confirmar que tudo sumiu de verdade, liste as contas e os grupos novamente:

az cognitiveservices account list
az group list

Cuidados ao levar a inteligência artificial no Azure para produção

O exemplo coloca a chave direto no código para simplificar o laboratório. Em produção, porém, a própria documentação recomenda guardar credenciais em um local seguro, como o Azure Key Vault.

Além disso, nunca publique a chave em repositórios públicos. Caso isso aconteça, gere uma nova chave no recurso e invalide a antiga o quanto antes.

Outro ponto importante é o nível de preço. Para estudos, a documentação sugere o nível gratuito F0 do Translator, e o nível pago fica para quando a aplicação vai para produção.

Por fim, vale lembrar que a Microsoft reorganiza com frequência os nomes dessa família de serviços. O antigo Cognitive Services virou Azure AI Services, e a documentação mais recente já usa o nome Foundry Tools.

Para quem desenvolve em .NET, o artigo sobre como construir aplicações de IA com .NET é um bom próximo passo.

Conclusão sobre inteligência artificial no Azure

Neste artigo, você conheceu as principais áreas da IA e o serviço do Azure que atende cada uma delas. Também entendeu os três princípios que tornam a inteligência artificial no Azure acessível ao desenvolvedor: modelos prontos, acesso por APIs e integração total com a plataforma.

Na prática, você configurou um serviço de Tradução por IA do Azure e construiu uma aplicação console para utilizá-lo. Nos próximos artigos da série, o foco recai sobre práticas específicas para cada recurso apresentado aqui.

Série escrita em coautoria com Jorge Nogueira.

FAQ

Preciso saber machine learning para usar os serviços de IA do Azure?

Não. Os serviços chegam pré-treinados e você os consome por APIs REST ou SDKs, sem treinar modelos.

Qual serviço do Azure faz tradução de textos?

O serviço de Tradução por IA do Azure, também conhecido como Translator. Ele traduz textos entre mais de cem idiomas e dialetos.

O cabeçalho Ocp-Apim-Subscription-Region é obrigatório?

Ele é obrigatório para recursos regionais e multisserviço. Em um recurso global de tradução, o cabeçalho é opcional.

Como evito custos depois do laboratório?

Exclua a conta do serviço e o grupo de recursos com o Azure CLI. Depois, liste os recursos para confirmar a remoção.

Posso criar os recursos pelo portal em vez do Azure CLI?

Sim, o portal do Azure cria os mesmos recursos. A linha de comando, no entanto, facilita a automação em pipelines.