---
title: Analiza sentymentu zgłoszeń wsparcia technicznego przy użyciu MapForce i GPT-4
date: 2023-07-17
categories:
  - data-integration
  - database
  - etl
tags:
  - ai
  - ai-data-integration
  - data-mapping
  - mapforce
  - xmlspy
description: Naucz się wykorzystywać moc sztucznej inteligencji do efektywnej analizy sentymentu w naturalnym języku w projektach mapowania danych ETL.
---
Status: #blog

Tags:  #ai #ai-data-integration #data-mapping #mapforce #xmlspy

Categories: [data-integration](/blog/pl/category/data-integration.md) | [database + sql](/blog/pl/category/database-sql.md) | [etl](/blog/pl/category/etl.md)
# Analiza sentymentu zgłoszeń wsparcia technicznego przy użyciu MapForce i GPT-4

Automatyczna analiza sentymentu w tekstach, takich jak recenzje użytkowników, od dawna stanowiła wyzwanie. Ze względu na złożoność języka naturalnego, systemy napotykały trudności w analizowaniu kontekstu i subtelności. Wymagało to ogromnej ilości pracy ręcznej, aby pokonać te trudności.

Jedną z wielu przydatnych funkcji nowoczesnych systemów sztucznej inteligencji, opartych na dużych modelach językowych (LLM), takich jak GPT-4 firmy OpenAI, jest to, że są one _bardzo_ dobre w analizie sentymentu w naturalnym języku. Możemy wykorzystać tę funkcję do stworzenia bardzo wydajnego rozwiązania bazodanowego w MapForce, które, na przykład, analizuje wszystkie nowe rekordy w bazie danych wsparcia i automatycznie określa, czy konkretne zgłoszenie wsparcia lub inne opinie klientów są _pozytywne_, _negatywne_, stanowią _zgłoszenie błędu_ lub powinny być traktowane jako _propozycja nowej funkcji_.

![Zdjęcie ilustracyjne przedstawiające uczenie maszynowe w kontekście analizy sentymentu ](/blog/images/hero-sentiment-analysis.png)

<!--more-->

## Początkowe testy z wykorzystaniem GPT-4 w środowisku OpenAI Playground

Jeśli chcesz śledzić post na blogu lub ostatecznie chcesz wdrożyć to rozwiązanie w swoim własnym systemie baz danych, będziesz musiał założyć konto w OpenAI i uzyskać klucz API, który możesz wykorzystać w swojej implementacji. To również zapewni Ci dostęp do "Playground" na portalu OpenAI, gdzie możesz przeprowadzić wstępne testy i uzyskać przykładowe dane wejściowe w formacie JSON, które będą potrzebne do tworzenia poprawnych żądań JSON w MapForce.

Jak zawsze, jednym z najważniejszych kroków podczas pracy z systemem sztucznej inteligencji opartym na dużych modelach językowych (LLM) jest opracowanie odpowiedniego zapytania. Należy dążyć do jak największej precyzji, aby uzyskać oczekiwany rezultat. W naszym przypadku, będziemy pracować z następującym zapytaniem:

`“Classify the sentiment in the following statement using these possible results: Negative, Positive, Feature Request, Bug Report.”`

Następnie przeanalizujemy opinie klientów, które chcemy zbadać. Aby przetestować to w środowisku OpenAI Playground, wybieramy: tryb "Chat", model "gpt-4", temperaturę 1, maksymalną długość 512, wartość Top P równą 1, a kary za częstotliwość i obecność ustawiamy na 0. Następnie możemy wprowadzić zapytanie, wpisać pierwszą opinię klienta i kliknąć przycisk "Wyślij":

[![Testowanie analizy sentymentu tekstu w środowisku OpenAI Playground](/blog/images/01-openaiplayground.png)](01-openaiplayground.png)

Model AI GPT-4 natychmiast zwraca odpowiedź "_Pozytywna_", co jest prawidłową odpowiedzią. Możemy przetestować kilka dodatkowych przykładów, aby potwierdzić, że nasz prompt działa poprawnie we wszystkich innych przypadkach i że otrzymujemy oczekiwane wyniki analizy sentymentu.

Następnie należy przejrzeć żądanie JSON, klikając przycisk "Wyświetl kod" i zmieniając język wyświetlany w oknie dialogowym z języka Python (domyślny) na język JSON. Następnie należy skopiować kod i wkleić go do programu XMLSpy, aby móc go lepiej przeanalizować [Widok siatki danych w formacie JSON](https://www.altova.com/pl/xmlspy-xml-editor/json-editor-download#Grid_View):

![Żądanie JSON do interakcji z API sztucznej inteligencji GPT-4](/blog/images/02-json-request.png)

Struktura JSON wydaje się być dość prosta. To również pozwala nam automatycznie wygenerować schemat JSON na podstawie tego kodu, który później wykorzystamy do skonfigurowania żądania do usługi internetowej w programach XMLSpy i MapForce:

![Schemat zapytania JSON wygenerowany automatycznie przez program XMLSpy ](/blog/images/03-json-request-schema.png)

## Testowanie API OpenAI za pomocą programu XMLSpy

Następnym krokiem jest upewnienie się, że poprawnie rozumiemy interfejs API czatu OpenAI i przeanalizujemy wynikowy format JSON. Przeprowadzimy ręczne testy, korzystając z dostępnych narzędzi [Okno testowe HTTP](https://www.altova.com/pl/xmlspy-xml-editor/advanced#http-window) W programie XMLSpy, który można znaleźć bezpośrednio pod głównym oknem roboczym, jako oddzielną zakładkę obok okna "Wiadomości".

W zakładce HTTP zmień metodę żądania HTTP na POST, wprowadź adres URL punktu końcowego API OpenAI Chat, który brzmi: [https://api.openai.com/v1/chat/completions](https://api.openai.com/v1/chat/completions), i ustaw typ zawartości na application/json. Następnie wklej przykładowe żądanie JSON, które otrzymaliśmy z panelu Playground, do sekcji "Body":

![Wykorzystanie okna HTTP w programie XMLSpy do przetestowania wysyłania żądania JSON do API OpenAI](/blog/images/04-http-request.png)

Teraz musimy podać nasz tajny klucz API w nagłówkach, aby uwierzytelnić nasze żądanie. Kliknij więc zakładkę "Nagłówki" i dodaj wiersz z nagłówkiem "Authorization" oraz wartością, która zaczyna się od "Bearer ", po którym następuje spacja, a następnie nasz tajny klucz API. Jeśli posiadamy wiele kont w OpenAI i chcemy zapewnić prawidłowe rozliczenia, opcjonalnie możemy dodać drugi wiersz z nagłówkiem "OpenAI-Organization" i ustawić wartość na identyfikator naszej organizacji przypisanej przez OpenAI:

![Konfiguracja nagłówków w oknie HTTP w programie XMLSpy ](/blog/images/05-http-headers.png)

Oczywiście, w powyższym zrzucie ekranu celowo ukryliśmy dokładne wartości naszego tajnego klucza oraz identyfikatora organizacji.

Teraz możemy kliknąć przycisk "Wyślij", aby przesłać powyższy żądanie HTTP do interfejsu API OpenAI i zobaczyć, jaką odpowiedź otrzymamy

![Otrzymano odpowiedź z testu API firmy OpenAI ](/blog/images/HTTPresponseXMLSpy.png)

Pierwsza dobra wiadomość to fakt, że otrzymaliśmy odpowiedź z kodem 200 OK w czasie 780 ms, a w treści znajdowały się dane w formacie application/json, czyli nasza odpowiedź w formacie JSON. Zawierała ona komunikat z odpowiedzią, którą "asystent" AI przekazał w postaci treści "Positive". Dzięki temu udało nam się odtworzyć nasze wcześniejsze testy w środowisku OpenAI Playground, wysyłając rzeczywisty żądanie HTTP do API i otrzymując prawidłową odpowiedź, wszystko to z poziomu programu XMLSpy.

Aby kontynuować, zapiszemy tę odpowiedź do pliku, korzystając z przycisku "Zapisz do pliku" w oknie testera HTTP. Następnie możemy otworzyć ten plik i użyć programu XMLSpy, aby automatycznie utworzyć schemat JSON na podstawie przykładowej wiadomości JSON. Tym razem schemat opisuje strukturę oczekiwanego wyniku JSON z usługi internetowej, którą następnie będziemy chcieli przetworzyć w programie MapForce.

[![Schemat odpowiedzi JSON wygenerowany przez program XMLSpy ](/blog/images/JSONresponseSchema.png)](JSONresponseSchema.png)

## Przykładowa baza danych wsparcia

Większość systemów zarządzania wsparciem technologicznym opiera się na bazie danych SQL lub innej bazie danych, dlatego to podejście można łatwo zastosować do wszystkich z nich. Jednak w tym przykładzie, który prezentujemy w tym wpisie na blogu, użyjemy uproszczonej wersji bazy danych opinii klientów, zaimplementowanej w SQLite:

![Przykładowa baza danych opinii klientów w formacie SQLite ](/blog/images/CustomerFeedback-Database-Schema.png)

Mamy również w nim przykładowe dane, które pozwolą nam przeprowadzić testy integracyjne w MapForce i określić sentyment wyrażony we wszystkich tych opiniach klientów:

![[FeedbackDatabaseData.png]]

## Tworzenie mapowania bazy danych w programie MapForce

Teraz mamy wszystkie niezbędne elementy, aby stworzyć nasz projekt transformacji danych lub ETL za pomocą MapForce, który będzie odczytywał wszystkie rekordy z bazy danych, korzystał z API OpenAI w celu przeprowadzenia analizy sentymentu i zapisywał wyniki z powrotem do bazy danych.

Pierwszym krokiem w projektowaniu mapowania ETL jest dwukrotne umieszczenie obiektu bazy danych "CustomerFeedback" w mapowaniu – raz jako źródło danych (input), a drugi raz _ekstrakt_ części procesu ETL) oraz jako wynik końcowy, a także połączyć główny obiekt tabeli oraz identyfikator. MapForce z łatwością połączy również pozostałe kolumny, ale w rzeczywistości te połączenia nie są nam potrzebne, więc można je usunąć, aż do uzyskania następującego schematu:

![Konfiguracja projektu ETL dla bazy danych ](/blog/images/database-etl-setup-1.png)

Zostawiamy sporo miejsca między danymi wejściowymi a wyjściowymi, ponieważ wkrótce w tym miejscu umieścimy wywołanie naszego serwisu internetowego. Ale zanim to zrobimy, zdefiniujmy dokładnie operacje na bazie danych, które generują dane wyjściowe (część _ładowania_ w procesie ETL), klikając dwukrotnie prawym przyciskiem myszy na odpowiednim obiekcie bazy danych:

![Ustawienia aktualizacji bazy danych](/blog/images/DatabaseUpdateSettings.png)

Upewnij się, że pierwsze pole wyboru jest ustawione na "Brak", ponieważ nie chcemy wykonywać żadnych specjalnych operacji przed pierwszym rekordem. Następnie zmień nagłówek drugiej kolumny na "Aktualizuj, jeśli..." oraz rozwijaną listę w wierszu "id" na "równa się". To instruuje MapForce, aby aktualizował dane w bazie danych dla każdego rekordu, w którym wartość "id" przekazywana przez mapowanie jest równa wartości "id", która już istnieje w bazie danych. To wszystko, co musimy tutaj zrobić, więc możesz ponownie kliknąć OK.

Teraz nadszedł czas, aby dodać komponent usługi internetowej, który będzie wywoływał API OpenAI. Kliknij przycisk "Wstaw funkcję usługi internetowej" na pasku narzędzi. Następnie skonfiguruj niezbędne ustawienia wywołania API, bazując na pracy, którą wykonaliśmy wcześniej, podczas testowania API w programie XMLSpy.

Podobnie jak wcześniej, musimy skonfigurować metodę żądania HTTP jako POST, a nagłówki powinny zawierać nasz tajny klucz API, a opcjonalnie również identyfikator naszej organizacji. Musimy również poinformować MapForce, jaka będzie struktura danych przesyłanych w żądaniu i odpowiedzi, wykorzystując dwa schematy JSON, które wcześniej utworzyliśmy

![Ustawienia wywołań usług internetowych dla API OpenAI ](/blog/images/WebServiceCallSettings.png)

Po zdefiniowaniu tych parametrów, obiekt usługi internetowej pojawi się w panelu projektowania MapForce, a my możemy zacząć łączyć elementy, aby zaimplementować odpowiednią funkcjonalność. Najpierw chcemy wywołać usługę internetową raz dla każdego rekordu w tabeli "CustomerFeedback", dlatego łączymy ją z wejściem "Request":

![[InsertWebServiceIntoMapping.png]]

Wynik, który otrzymamy, zostanie umieszczony w atrybucie "content" w wiadomości zwróconej przez sztuczną inteligencję, dlatego łączymy go z kolumną "sentiment" w naszym obiekcie bazy danych.

Teraz pozostaje jedynie połączyć wszystkie pozostałe dane wejściowe dla żądania do usługi internetowej z interfejsem API. Możemy wykorzystać nasz przykładowy plik JSON, o którym wspomniano wcześniej, aby dokładnie wiedzieć, jakie dane wejściowe są wymagane. Wiele z nich będzie wartościami stałymi, takimi jak "gpt-4" dla modelu, oraz różne wartości dla pozostałych parametrów.

Najważniejszym elementem wejściowym jest zapytanie wraz z informacjami z bazy danych, dlatego łączymy te elementy przed przekazaniem ich do pola wprowadzania treści w usłudze internetowej

![[FinalMapping.png]]

Zazwyczaj w tym momencie kończylibyśmy projektowanie naszego [mapowania ETL](https://www.altova.com/pl/mapforce/etl-tool) i moglibyśmy przystąpić do realizacji transformacji. Jednakże, ponieważ GPT-4 jest najbardziej zaawansowanym modelem i jest intensywnie wykorzystywany przez wielu użytkowników, firma OpenAI wprowadziła ograniczenia dotyczące liczby zapytań do usług internetowych, które można wysłać w ciągu minuty. Jeśli uruchomilibyśmy teraz tę transformację, łatwo przekroczylibyśmy te limity.

Dlatego musimy dodać krótką funkcję pauzy (sleep) pomiędzy naszymi wywołaniami interfejsu usługi OpenAI, aby oddzielać je o około 1 sekundę. Możemy to łatwo zrobić za pomocą nowej, wbudowanej funkcji `sleep()`, dostępnej w MapForce v2024:

![[MF-Sentiment-Analysis-With-Sleep.png]]

Zakładka "Podgląd wyników" w programie MapForce umożliwia teraz wyświetlenie rezultatu tej transformacji. Po kliknięciu tej zakładki, program MapForce uruchomi projekt mapowania ETL i wygeneruje niezbędne instrukcje SQL, które zaktualizują bazę danych zgodnie z wynikami analizy sentymentu przeprowadzonej przez sztuczną inteligencję

![Automatycznie generowane zapytania SQL do procesów ETL ](/blog/images/SQLoutput.png)

Teraz można bezpośrednio uruchamiać ten kod SQL z poziomu MapForce, aby faktycznie zaktualizować dane w bazie danych.

Oczywiście, w rzeczywistej implementacji, warto zautomatyzować ten proces, aby nowe zgłoszenia serwisowe były automatycznie analizowane. Można to łatwo osiągnąć, wdrażając ten projekt mapowania ETL na instancję serwera [MapForce Server](https://www.altova.com/pl/mapforce-server), umieszczoną w infrastrukturze IT firmy lub w prywatnej lub publicznej chmurze. Następnie można zautomatyzować wymagania dotyczące przepływu pracy, czyli określić, kiedy uruchamiać tę analizę w oparciu o określone wyzwalacze lub zdarzenia, za pomocą serwera [FlowForce Server](https://www.altova.com/pl/flowforceserver).

Przy okazji, wszystkie zrzuty ekranu z programów XMLSpy i MapForce, które znajdują się w tym wpisie na blogu, zostały wykonane przy użyciu nowego motywu ciemnego, ponieważ to jest mój osobisty preferencja, ale oczywiście można korzystać z naszych produktów również w nowym motywie jasnym, a także w klasycznym motywie, w zależności od indywidualnych preferencji.

Aby przetestować transformację danych opartą na sztucznej inteligencji w programie MapForce lub eksperymentować z interfejsami API usług internetowych wykorzystujących sztuczną inteligencję w programie XMLSpy, można pobrać **bezpłatną 30-dniową wersję próbną** obu produktów oraz kilku innych przydatnych narzędzi dla programistów, [pobierając najnowszą wersję Altova MissionKit](https://www.altova.com/pl/download) ze naszej strony internetowej. Zalecamy korzystanie z 64-bitowej wersji edycji Enterprise do wszystkich zadań związanych ze sztuczną inteligencją.

* * *
