---
title: Análise de sentimento de pedidos de suporte com base em inteligência artificial, utilizando o MapForce e o GPT-4
date: 2023-07-17
categories:
  - data-integration
  - database
  - etl
tags:
  - ai
  - ai-data-integration
  - data-mapping
  - mapforce
  - xmlspy
description: Aprenda a utilizar o poder da inteligência artificial para realizar análises de sentimento eficientes em textos naturais, em projetos de mapeamento de dados ETL.
---
Status: #blog

Tags:  #ai #ai-data-integration #data-mapping #mapforce #xmlspy

Categories: [data-integration](/blog/pt/category/data-integration.md) | [database + sql](/blog/pt/category/database-sql.md) | [etl](/blog/pt/category/etl.md)
# Análise de sentimento de pedidos de suporte com base em inteligência artificial, utilizando o MapForce e o GPT-4

A análise automática de sentimentos em textos, como avaliações de utilizadores, tem sido historicamente um desafio. Devido à complexidade inerente à linguagem natural, os sistemas enfrentavam dificuldades na análise do contexto e das nuances. Isso exigia uma quantidade excessiva de trabalho manual para superar essas dificuldades.

Uma das muitas funcionalidades úteis dos sistemas de inteligência artificial modernos, que se baseiam em modelos de linguagem grandes (LLMs) como o GPT-4 da OpenAI, é que eles são _muito_ bons na análise de sentimentos em textos naturais. Podemos utilizar essa funcionalidade para criar uma solução de base de dados muito eficiente no MapForce que, por exemplo, analisa todos os novos registos numa base de dados de suporte e determina automaticamente se um determinado pedido de suporte ou outro feedback do cliente é _positivo_, _negativo_, se constitui um _relatório de erro_ ou se deve ser considerado como um _pedido de nova funcionalidade_.

![Fotografia ilustrativa com tema de aprendizagem automática para análise de sentimentos ](/blog/images/hero-sentiment-analysis.png)

<!--more-->

## Testes iniciais com o GPT-4 na plataforma OpenAI Playground

Se pretende acompanhar este artigo do blog ou, eventualmente, implementar esta abordagem no seu próprio sistema de bases de dados, terá de criar uma conta na OpenAI e obter uma chave de API que poderá utilizar na sua implementação. Isto também lhe dará acesso ao "Playground" no portal da OpenAI, onde poderá realizar alguns testes iniciais e obter exemplos de dados JSON que serão necessários para construir as solicitações JSON corretas no MapForce.

Como sempre, um dos passos mais importantes ao trabalhar com um sistema de inteligência artificial baseado em modelos de linguagem é a elaboração de um *prompt* adequado. É importante ser o mais preciso possível, para que se obtenham os resultados desejados. Para os nossos fins, vamos trabalhar com o seguinte *prompt*:

`“Classify the sentiment in the following statement using these possible results: Negative, Positive, Feature Request, Bug Report.”`

E, em seguida, teremos acesso ao feedback dos clientes, que queremos analisar. Para testar isto no OpenAI Playground, selecionamos: Modo=Chat, Modelo=gpt-4, Temperatura=1, Comprimento máximo=512, Top P=1, e deixamos as penalizações de frequência e de presença em 0. Depois, podemos inserir o texto de entrada, inserir o primeiro comentário de feedback do cliente e clicar no botão "Enviar":

[![Testar a análise de sentimentos em texto na plataforma OpenAI Playground](/blog/images/01-openaiplayground.png)](01-openaiplayground.png)

A inteligência artificial GPT-4 responde imediatamente com "_Positivo_", que é a resposta correta. Podemos executar alguns exemplos adicionais para confirmar que o nosso pedido funciona bem em todos os outros casos e que estamos a obter os resultados de análise de sentimento esperados.

Em seguida, é hora de analisar a requisição JSON. Para isso, clique no botão "Ver Código" e altere a opção de idioma do menu suspenso, passando de Python (que é o padrão) para JSON. Depois, copie o código e cole-o no XMLSpy, para que possamos analisá-lo mais detalhadamente [Visualização em grade JSON](https://www.altova.com/pt/xmlspy-xml-editor/json-editor-download#Grid_View):

![Pedido JSON para interagir com a API de inteligência artificial GPT-4](/blog/images/02-json-request.png)

A estrutura JSON parece bastante simples. Isto também nos permite gerar automaticamente um esquema JSON a partir deste código, o que utilizaremos mais tarde para configurar a requisição do serviço web no XMLSpy e no MapForce:

![Esquema de requisição JSON gerado automaticamente pelo XMLSpy ](/blog/images/03-json-request-schema.png)

## Teste da API da OpenAI a partir do XMLSpy

Como próximo passo, queremos ter a certeza de que compreendemos corretamente a API de chat da OpenAI e analisar a saída JSON resultante. Vamos realizar um teste manual utilizando a ferramenta [de teste HTTP](https://www.altova.com/pt/xmlspy-xml-editor/advanced#http-window) integrada no XMLSpy, que pode encontrar imediatamente abaixo da sua janela de trabalho principal, como uma aba separada, ao lado da janela de Mensagens.

Na aba HTTP, altere o método de requisição HTTP para POST, introduza a URL do ponto de extremidade da API de chat da OpenAI, que é [https://api.openai.com/v1/chat/completions](https://api.openai.com/v1/chat/completions), e defina o tipo de conteúdo para application/json. Em seguida, cole a requisição JSON de exemplo que obtivemos do Playground acima na secção "Body":

![Utilizar a janela HTTP do XMLSpy para testar o envio de uma requisição JSON para a API da OpenAI](/blog/images/04-http-request.png)

Agora, precisamos fornecer a nossa chave API secreta nos cabeçalhos para autenticar a nossa requisição. Para isso, clique na aba "Cabeçalhos" e adicione uma linha com o cabeçalho "Authorization" e um valor que comece com "Bearer", seguido de um espaço, e depois a chave API secreta. Se tiver várias contas na OpenAI e precisar garantir a faturação correta, pode também, opcionalmente, adicionar uma segunda linha com o cabeçalho "OpenAI-Organization" e o valor definido como o identificador da sua organização atribuída pela OpenAI:

![Configuração dos cabeçalhos na janela HTTP do XMLSpy ](/blog/images/05-http-headers.png)

Obviamente, tivemos de ocultar os valores exatos da nossa chave secreta e do identificador da nossa organização na captura de ecrã acima.

Agora, estamos prontos para clicar no botão "Enviar" para enviar a requisição HTTP acima para o ponto de acesso da API da OpenAI e verificar que tipo de resposta iremos receber

![Resposta recebida do teste da API da OpenAI ](/blog/images/HTTPresponseXMLSpy.png)

A primeira boa notícia é que recebemos uma resposta com o código 200 OK em apenas 780 milissegundos, juntamente com algum conteúdo do tipo "application/json", que é o conteúdo da nossa resposta em formato JSON. Este conteúdo contém uma mensagem com a resposta que o "assistente" de inteligência artificial forneceu, na forma do conteúdo "Positivo". Assim, conseguimos replicar o nosso teste anterior no OpenAI Playground, diretamente no XMLSpy, enviando uma requisição HTTP real para a API e obtendo a resposta correta.

Para continuar, vamos guardar esta resposta num ficheiro, utilizando o botão "Guardar em ficheiro" na janela do testador HTTP. Em seguida, podemos abrir esse ficheiro e usar o XMLSpy para criar automaticamente um esquema JSON a partir da mensagem de resposta JSON de exemplo. Desta vez, o esquema descreve a estrutura da saída JSON esperada do serviço web, que será o que queremos processar no MapForce.

[![Esquema de resposta JSON gerado pelo XMLSpy ](/blog/images/JSONresponseSchema.png)](JSONresponseSchema.png)

## Base de dados de exemplos de suporte

A maioria dos sistemas de gestão de apoio técnico baseia-se numa base de dados SQL ou outra, pelo que esta abordagem pode ser facilmente aplicada a todos eles. No entanto, para este exemplo de publicação no blog, utilizaremos uma versão simplificada de uma base de dados de feedback de clientes, implementada em SQLite:

![Base de dados de exemplos de feedback de clientes em SQLite ](/blog/images/CustomerFeedback-Database-Schema.png)

E temos alguns dados de exemplo que nos permitirão executar os nossos testes de integração no MapForce e determinar o sentimento expresso em todos estes comentários dos clientes:

![[FeedbackDatabaseData.png]]

## Criar o mapeamento da base de dados no MapForce

Agora temos todos os elementos necessários para criar o nosso projeto de transformação ou ETL no MapForce, que irá ler todos os registos da base de dados, chamar a API da OpenAI para obter a análise de sentimento e, em seguida, escrever os resultados de volta para a base de dados.

O primeiro passo para projetar o nosso mapeamento ETL é inserir o objeto de base de dados "CustomerFeedback" duas vezes no mapeamento: uma vez como entrada (o.. _extrair_ parte do ETL) e, posteriormente, como resultado final, e para conectar o objeto da tabela principal, bem como o ID. O MapForce será útil para conectar também as outras colunas, mas na realidade não precisamos dessas conexões, por isso pode eliminá-las novamente até obter o seguinte esquema:

![Configurar o projeto de ETL para a base de dados ](/blog/images/database-etl-setup-1.png)

Estamos a deixar bastante espaço entre a entrada e a saída, porque é aí que vamos inserir a chamada ao nosso serviço web em breve. Mas, antes de o fazer, vamos definir precisamente as operações de saída da nossa base de dados (a parte "_load_" do ETL) clicando duas vezes no objeto da base de dados correspondente:

![Configurações de atualização da base de dados](/blog/images/DatabaseUpdateSettings.png)

Certifique-se de que o primeiro botão de opção está definido como "Nenhum", porque não queremos fazer nada de especial antes do primeiro registo. Em seguida, altere o cabeçalho da segunda coluna para "Atualizar se..." e a caixa de combinação na linha "id" para "igual". Isto indica ao MapForce para atualizar os dados na base de dados para qualquer registo em que o "id" fornecido através do mapeamento seja igual a um "id" que já existe na base de dados. É tudo o que precisamos fazer aqui, por isso pode clicar em "OK" novamente.

Agora, é hora de inserir o componente de serviço web para chamar a API da OpenAI. Clique no botão "Inserir Função de Serviço Web" na barra de ferramentas. Em seguida, configure as definições necessárias para a chamada da API, com base no trabalho que já realizámos ao testar a API a partir do XMLSpy.

Tal como anteriormente, será necessário configurar o método de requisição HTTP para ser POST e incluir os cabeçalhos com a nossa chave API secreta, e, opcionalmente, o nosso identificador de organização. Também será necessário indicar ao MapForce qual será a estrutura dos dados de entrada (request) e de saída (response), utilizando os dois esquemas JSON que criámos anteriormente:

![Configurações para chamadas de serviços web para a API da OpenAI ](/blog/images/WebServiceCallSettings.png)

Assim que isso for definido, o objeto do serviço web aparecerá no painel de design do MapForce, e poderemos começar a conectar as linhas para configurar a funcionalidade. Em primeiro lugar, queremos chamar o serviço web uma vez para cada registo na tabela "CustomerFeedback", por isso, conectamos isso à entrada "Request":

![[InsertWebServiceIntoMapping.png]]

E o resultado será fornecido no atributo "content" dentro da mensagem que a inteligência artificial retorna, por isso, estabelecemos uma ligação entre esse atributo e a coluna "sentimento" no nosso objeto de base de dados.

Restam agora apenas conectar todas as outras entradas para a requisição do serviço web à API, e podemos usar o nosso ficheiro JSON de exemplo mencionado anteriormente para saber exatamente quais são as entradas necessárias. Muitas dessas entradas serão constantes, como "gpt-4" para o modelo, e vários valores para os outros parâmetros.

A informação mais importante é a instrução inicial, juntamente com o feedback proveniente da base de dados. Por isso, concatenamos essas informações antes de as introduzir no campo de conteúdo do serviço web:

![[FinalMapping.png]]

Normalmente, é neste ponto que terminaríamos de definir o nosso mapeamento [ETL](https://www.altova.com/pt/mapforce/etl-tool) e poderíamos executar a transformação. No entanto, como o GPT-4 é o modelo mais avançado e muitas pessoas o estão a utilizar, a OpenAI implementou limites de utilização para o número de pedidos que podem ser enviados para o serviço web por minuto, e ultrapassaríamos facilmente esses limites se executássemos esta transformação neste momento.

Portanto, precisamos adicionar uma pequena função de "pausa" (sleep) entre as nossas chamadas à interface do serviço web da OpenAI, para separar as chamadas por aproximadamente 1 segundo. Podemos fazer isso facilmente através da nova função "sleep()" integrada no MapForce v2024:

![[MF-Sentiment-Analysis-With-Sleep.png]]

A aba de visualização de resultados no MapForce é onde pode agora ver o resultado desta transformação. Ao clicar nesta aba, o MapForce executará o projeto de mapeamento ETL e gerará as instruções SQL necessárias para atualizar a sua base de dados, de acordo com os resultados da análise de sentimentos realizada pela inteligência artificial

![Instruções SQL geradas automaticamente para processos de ETL ](/blog/images/SQLoutput.png)

Agora, pode executar este código SQL diretamente a partir do MapForce para atualizar efetivamente os dados na sua base de dados.

Claro que, numa implementação real, seria desejável automatizar ainda mais este processo, de forma que os novos pedidos de suporte sejam analisados automaticamente. Isso pode ser feito facilmente implementando este projeto de mapeamento ETL numa instância do [MapForce Server](https://www.altova.com/pt/mapforce-server), seja na sua infraestrutura de TI interna ou na sua nuvem privada ou pública. Em seguida, pode automatizar os requisitos do fluxo de trabalho, ou seja, quando executar esta análise com base em determinados gatilhos ou eventos, utilizando o [FlowForce Server](https://www.altova.com/pt/flowforceserver).

A propósito, todas as capturas de ecrã do XMLSpy e do MapForce neste artigo do blog foram tiradas utilizando o novo tema escuro, porque essa é a minha preferência pessoal, mas, naturalmente, podem usar os nossos produtos tanto no novo tema claro como no tema clássico, de acordo com o vosso gosto pessoal.

Para experimentar a transformação de dados baseada em IA no MapForce ou para testar qualquer API de serviços web de IA no XMLSpy, pode descarregar uma **versão de avaliação gratuita de 30 dias** de ambos os produtos, bem como várias outras ferramentas úteis para desenvolvedores, ao [descarregar o Altova MissionKit mais recente](https://www.altova.com/pt/download) no nosso site. Recomendamos utilizar a versão de 64 bits da edição Enterprise para todos os trabalhos relacionados com IA.

* * *
