Analisi del sentiment delle richieste di supporto basata sull'intelligenza artificiale, utilizzando MapForce e GPT-4

L'analisi automatica del sentiment espresso in testi, come le recensioni degli utenti, è stata storicamente una sfida. A causa della complessità del linguaggio naturale, i sistemi hanno incontrato difficoltà nell'analizzare il contesto e le sfumature. Questo richiedeva un notevole sforzo manuale per superare tali difficoltà.

Una delle molteplici funzionalità utili dei moderni sistemi di intelligenza artificiale, basati su modelli linguistici di grandi dimensioni (LLM) come GPT-4 di OpenAI, è che essi sono molto bravo nell'analisi del sentiment espresso in testi scritti in linguaggio naturale. Possiamo utilizzare questa funzionalità per creare una soluzione di database molto efficiente in MapForce che, ad esempio, analizzi tutti i nuovi dati in arrivo in un database di supporto e determini automaticamente se una determinata richiesta di assistenza o altro feedback del cliente sia positivo, negativo, costituisca una segnalazione di un difetto, oppure debba essere considerata come una richiesta di una nuova funzionalità.

Test iniziali con GPT-4 nell'ambiente di sviluppo di OpenAI

Se desiderate seguire questo articolo del blog o, in definitiva, implementare questo approccio nel vostro sistema di database, dovrete creare un account su OpenAI e ottenere una chiave API che potrete utilizzare nella vostra implementazione. Questo vi darà anche accesso alla sezione "Playground" del portale OpenAI, dove potrete eseguire alcuni test iniziali e ottenere esempi di input JSON che vi serviranno per creare le richieste JSON corrette in MapForce.

Come sempre, uno dei passaggi più importanti quando si lavora con un sistema di intelligenza artificiale basato su modelli linguistici di grandi dimensioni (LLM) è la creazione di un prompt adeguato. È importante essere il più precisi possibile, in modo da ottenere il risultato desiderato. Per i nostri scopi, utilizzeremo il seguente prompt:

“Classify the sentiment in the following statement using these possible results: Negative, Positive, Feature Request, Bug Report.”

Successivamente, analizzeremo i feedback dei clienti. Per testare questo nell'ambiente OpenAI Playground, selezioniamo le seguenti impostazioni: Modalità=Chat, Modello=gpt-4, Temperatura=1, Lunghezza massima=512, Top P=1, e impostiamo sia la penalità di frequenza che quella di presenza a 0. A questo punto, possiamo inserire il prompt, aggiungere il primo commento di feedback del cliente e premere il pulsante "Invia":

L'intelligenza artificiale GPT-4 risponde immediatamente con "Positivo", che è la risposta corretta. Possiamo eseguire alcuni esempi aggiuntivi per verificare che il nostro prompt funzioni correttamente anche in tutti gli altri casi, e che stiamo ottenendo i risultati di analisi del sentiment previsti.

A questo punto, è il momento di esaminare la richiesta JSON. Per farlo, cliccate sul pulsante "Visualizza codice" e cambiate la lingua visualizzata dal menu a tendina, passando da Python (che è l'impostazione predefinita) a JSON. Quindi, copiate il codice e incollalo in XMLSpy, in modo da poterlo analizzare più facilmente Visualizzazione a griglia in formato JSON:

La struttura JSON sembra piuttosto semplice. Questo ci permette anche di generare automaticamente uno schema JSON da questo codice, che utilizzeremo in seguito per configurare la richiesta del servizio web in XMLSpy e MapForce:

Test dell'API OpenAI da XMLSpy

Come prossimo passo, vogliamo assicurarci di comprendere correttamente l'API di chat di OpenAI e analizzare l'output JSON risultante. Effettueremo un test manuale utilizzando la comoda finestra di test HTTP in XMLSpy, che potete trovare subito sotto la finestra principale di lavoro, come una scheda separata accanto alla finestra "Messaggi".

Nella scheda HTTP, impostate il metodo di richiesta HTTP su POST, inserite l'URL dell'endpoint dell'API di chat di OpenAI, che è https://api.openai.com/v1/chat/completions, e impostate il tipo di contenuto su application/json. Quindi, incollate la richiesta JSON di esempio che abbiamo ottenuto dalla sezione "Playground" sopra nella sezione "Body":

Ora, per autenticare la nostra richiesta, dobbiamo fornire la nostra chiave API segreta nell'intestazione. Per farlo, cliccate sulla scheda "Intestazioni" e aggiungete una riga con l'intestazione "Authorization" e un valore che inizi con "Bearer", seguito da uno spazio, e poi dalla chiave API segreta. Se avete più account con OpenAI e volete assicurarvi che la fatturazione sia corretta, potete anche aggiungere, facoltativamente, una seconda riga con l'intestazione "OpenAI-Organization" e impostare il valore corrispondente all'organizzazione a cui siete stati assegnati da OpenAI

Ovviamente, abbiamo dovuto oscurare i valori esatti della nostra chiave segreta e dell'identificativo dell'organizzazione nell'immagine qui sopra.

Ora siamo pronti a premere il pulsante "Invia" per inviare la richiesta HTTP descritta sopra all'endpoint dell'API di OpenAI, al fine di verificare il tipo di risposta che otterremo

La prima buona notizia è che abbiamo ricevuto una risposta "200 OK" in soli 780 millisecondi, insieme a dei dati di tipo "application/json", che rappresentano il contenuto della nostra risposta in formato JSON. Questi dati contengono un messaggio con la risposta fornita dall'intelligenza artificiale, espressa come "Positive". Quindi, siamo riusciti a replicare il nostro test precedente all'interno di XMLSpy, inviando una vera e propria richiesta HTTP all'API e ottenendo la risposta corretta.

Per procedere, salveremo questa risposta in un file utilizzando il pulsante "Salva in file" nella finestra del tester HTTP. Successivamente, potremo aprire quel file e utilizzare XMLSpy per creare automaticamente uno schema JSON a partire dal messaggio di risposta JSON di esempio. In questo caso, lo schema descriverà la struttura dell'output JSON previsto dal servizio web, che potremo quindi elaborare in MapForce.

Database di supporto di esempio

La maggior parte dei sistemi di gestione del supporto tecnico si basa su un database SQL o di altro tipo, quindi questo approccio può essere facilmente applicato a tutti. Tuttavia, per questo esempio di articolo del blog, utilizzeremo una versione semplificata di un database di feedback dei clienti, implementato in SQLite

E abbiamo alcuni dati di esempio al suo interno che ci permetteranno di eseguire i nostri test di integrazione in MapForce e di determinare il sentiment espresso in tutti questi feedback dei clienti:

![[FeedbackDatabaseData.png]]

Creazione della mappatura del database in MapForce

Ora abbiamo tutti gli elementi necessari per creare il nostro progetto di trasformazione o ETL con MapForce, che leggerà tutti i record dal database, invierà una richiesta all'API di OpenAI per ottenere l'analisi del sentiment e scriverà i risultati nuovamente nel database.

Il primo passo per progettare la nostra mappatura ETL è inserire due volte l'oggetto del database "CustomerFeedback" nella mappatura: una volta come input (la parte "estrazione" dell'ETL) e poi anche come output finale. Successivamente, è necessario collegare l'oggetto della tabella principale, così come l'ID. MapForce sarà in grado di collegare anche tutte le altre colonne, ma in realtà non abbiamo bisogno di queste connessioni, quindi potete eliminarle fino ad ottenere questo schema:

Lasciamo molto spazio tra l'input e l'output, perché è lì che inseriremo la chiamata al nostro servizio web a breve. Ma prima di farlo, definiamo con precisione le operazioni sul database di output (la parte "load" del processo ETL) facendo doppio clic sull'oggetto del database desiderato:

Assicuratevi che il primo pulsante radio sia impostato su "Nessuno", perché non vogliamo eseguire alcuna operazione speciale prima del primo record, e poi modificate l'intestazione della seconda colonna in "Aggiorna se..." e la casella combinata nella riga "id" in "uguale". Questo indica a MapForce di aggiornare i dati nel database per qualsiasi record in cui l'id fornito tramite la mappatura sia uguale a un id che esiste già nel database. Questo è tutto ciò che dobbiamo fare qui, quindi potete cliccare di nuovo su "OK".

Ora è il momento di inserire il componente del servizio web per chiamare l'API di OpenAI. Cliccare sul pulsante "Inserisci funzione del servizio web" nella barra degli strumenti. Quindi, configurare le impostazioni di chiamata necessarie per l'API, basandosi sul lavoro che abbiamo svolto in precedenza quando abbiamo testato l'API da XMLSpy.

Come in precedenza, dovremo configurare il metodo della richiesta HTTP impostandolo su POST e includere nell'intestazione la nostra chiave API segreta, e, facoltativamente, l'ID della nostra organizzazione. Dovremo inoltre indicare a MapForce la struttura dei dati inviati e ricevuti, utilizzando i due schemi JSON che abbiamo creato in precedenza:

Una volta definito, l'oggetto del servizio web apparirà nel pannello di progettazione di MapForce, e potremo iniziare a collegare le connessioni necessarie per implementare le funzionalità. Inizialmente, vorremo chiamare il servizio web una volta per ogni record nella tabella "CustomerFeedback", quindi collegheremo questa operazione all'input "Request":

![[InsertWebServiceIntoMapping.png]]

E il risultato che otteniamo sarà fornito nell'attributo "content" all'interno del messaggio restituito dall'intelligenza artificiale, quindi lo colleghiamo alla colonna "sentiment" nel nostro oggetto database di output.

Ora, ciò che resta da fare è collegare tutti gli altri input necessari per la richiesta al servizio web all'API, e possiamo utilizzare il nostro esempio di file JSON di cui sopra per sapere esattamente quali input sono richiesti. Molti di questi saranno valori costanti, come "gpt-4" per il modello, e vari valori per gli altri parametri.

L'input più importante è costituito dalla richiesta iniziale, unitamente al feedback proveniente dal database. Pertanto, concateniamo questi elementi prima di inviarli come input al servizio web

![[FinalMapping.png]]

Normalmente, a questo punto avremmo terminato la progettazione della nostra mappatura ETL e potremmo procedere con l'esecuzione della trasformazione. Tuttavia, poiché GPT-4 è il modello più avanzato e molte persone lo utilizzano, OpenAI ha implementato dei limiti di frequenza per il numero di richieste che è possibile inviare al servizio web al minuto, e supereremmo facilmente questi limiti se eseguissimo questa trasformazione in questo momento.

Pertanto, è necessario aggiungere una breve funzione di pausa (sleep) tra le nostre chiamate all'interfaccia del servizio web di OpenAI, per separare le chiamate di circa 1 secondo. Possiamo farlo facilmente tramite la nuova funzione sleep() integrata disponibile in MapForce v2024:

![[MF-Sentiment-Analysis-With-Sleep.png]]

Nella scheda "Anteprima dell'output" di MapForce, è ora possibile visualizzare il risultato di questa trasformazione. Una volta selezionata questa scheda, MapForce eseguirà il progetto di mappatura ETL e genererà le istruzioni SQL necessarie per aggiornare il database, in base ai risultati dell'analisi del sentiment eseguita dall'intelligenza artificiale

Ora è possibile eseguire direttamente questo codice SQL da MapForce per aggiornare effettivamente i dati nel vostro database.

Naturalmente, in un'implementazione reale, si desidera automatizzare ulteriormente questo processo in modo che le nuove richieste di supporto vengano analizzate automaticamente. È possibile farlo facilmente distribuendo questo progetto di mappatura ETL su un'istanza di MapForce Server, all'interno della propria infrastruttura IT o nel proprio cloud privato o pubblico. Successivamente, è possibile automatizzare i requisiti del flusso di lavoro, ovvero quando eseguire questa analisi in base a determinati trigger o eventi, utilizzando FlowForce Server.

A proposito, tutti gli screenshot di XMLSpy e MapForce presenti in questo articolo del blog sono stati realizzati utilizzando il nuovo tema scuro, perché è la mia preferenza personale, ma ovviamente potete utilizzare i nostri prodotti anche con il nuovo tema chiaro, così come con il tema classico, in base ai vostri gusti personali.

Per provare la trasformazione dei dati basata sull'intelligenza artificiale in MapForce o per sperimentare le API di qualsiasi servizio web basato sull'IA in XMLSpy, è possibile scaricare una prova gratuita di 30 giorni di entrambi i prodotti, nonché di numerosi altri strumenti utili per gli sviluppatori, scaricando l'ultima versione di Altova MissionKit dal nostro sito web. Si consiglia di utilizzare la versione a 64 bit dell'edizione Enterprise per tutti i lavori relativi all'intelligenza artificiale.