Creare un GPT sul Clima utilizzando l’API di Potenza di NASA

Creare un GPT sul Clima utilizzando l'API di Potenza della NASA

Immagine creata in ChatGPT

TL;DR

In questo articolo esploreremo la nuova funzionalità dei GPT di OpenAI, che offre un modo senza codice per creare rapidamente agenti AI in grado di chiamare automaticamente API esterne per ottenere dati e generare codice per rispondere a domande di analisi dei dati. In poche ore abbiamo costruito un chatbot in grado di rispondere a domande sul clima basandosi sui dati dell’API NASA Power e di eseguire compiti di analisi dei dati. L’esperienza utente dei GPT creata da OpenAI è eccellente, abbassando significativamente la barriera per la creazione di agenti AI di ultima generazione. Detto questo, la configurazione di chiamata delle API esterne può essere un po’ tecnicamente complessa e richiede che l’API abbia un file openapi.json disponibile. Inoltre, il costo è ancora sconosciuto e, sebbene in anteprima sembri che i GPT abbiano alcuni limiti sul numero di interazioni consentite al giorno. Tuttavia, con il lancio imminente del GPT store di OpenAI, potremmo assistere a un’esplosione di questi agenti AI GPT e anche adesso offrono alcune capacità straordinarie.

Cosa sono i GPT?

I GPT sono stati lanciati di recente da OpenAI e offrono un modo per utenti non tecnici di creare agenti di chat AI basati sul potente GPT-4 Large Language Model (LLM). Anche se era già possibile fare gran parte di ciò che offrono i GPT grazie a librerie di terze parti come LangChain e autogen, i GPT offrono una soluzione nativa. Ciò comporta un’interfaccia elegante e facile da usare e un’integrazione perfetta con l’ecosistema di OpenAI. Inoltre, presto saranno disponibili anche in un nuovo GPT store, aprendo la possibilità di assistere a una situazione simile a un App store e all’esplosione di agenti AI. O forse no, è difficile dirlo, ma il potenziale è sicuramente presente.

I GPT hanno alcune caratteristiche molto potenti, in particolare la capacità di navigare su Internet, generare ed eseguire il codice e la funzionalità principale, la capacità di comunicare con le API per ottenere dati esterni. L’ultima di queste è molto potente poiché significa che dovrebbe essere facile creare un agente AI sopra qualsiasi archivio di dati che presenta i dati utilizzando un’API.

Creazione di un GPT

I GPT sono attualmente disponibili solo per gli abbonati a ChatGPT Plus. Per crearne uno, è necessario visitare chat.openai.com/create, che richiederà alcuni dettagli su ciò che il tuo GPT farà e sull’immagine in anteprima che desideri utilizzare (può essere generata automaticamente utilizzando DALL-E-3).

Per questa analisi ho utilizzato il prompt “Crea un chatbot indicatore del clima che utilizza l’API NASA Power per ottenere dati“. Ciò ha creato un GPT con il seguente prompt di sistema (nel campo “Istruzioni” sotto “Configura”)…

Il GPT è progettato come un Bot NASA Power API, specializzato nel recuperare e interpretare i dati climatici per varie posizioni. Il suo ruolo principale è aiutare gli utenti ad accedere e comprendere le informazioni relative al clima, in particolare interagendo con l'API Power della NASA. Dovrebbe concentrarsi nel fornire dati climatici accurati e aggiornati come temperatura, precipitazioni, radiazione solare e altri parametri ambientali rilevanti.Per garantire accuratezza e pertinenza, il bot dovrebbe evitare di speculare sui dati al di fuori del suo ambito fornito e non offrire previsioni o interpretazioni oltre ciò che supportano i dati dell'API. Dovrebbe guidare gli utenti nella formulazione di richieste di dati e chiarire quando sono necessari ulteriori dettagli per una query precisa.Nelle interazioni, il bot dovrebbe essere oggettivo e diretto, enfatizzando la chiarezza nella presentazione dei dati. Dovrebbe offrire indicazioni su come interpretare i dati quando necessario, ma mantenere un tono neutrale e informativo senza personalizzazione o umorismo.Il bot dovrebbe chiedere esplicitamente chiarimenti se la richiesta dell'utente è vaga o manca di dettagli specifici necessari per ottenere i dati pertinenti dall'API NASA Power.

Ciò sembra molto ragionevole in base alla singola frase che ho fornito. Ovviamente questo può essere modificato secondo i gusti e come vedremo di seguito è anche un buon punto per guidare il chatbot riguardo alle chiamate API.

Configurazione delle capacità

Il GPT può essere configurato con varie capacità. Per la nostra analisi, disattiveremo la capacità di generare immagini e manterremo la capacità di navigare sul web e generare ed eseguire il codice con l’interprete di codice. Per un GPT di produzione probabilmente disattiverei l’accesso al web e mi assicurerei che tutti i dati necessari siano forniti tramite API specificate, ma per la nostra analisi lo lasciamo attivo perché è utile per ottenere latitudine e longitudine dei luoghi, necessari per chiamare l’API NASA Power.

Configurazione dell’accesso alle API

Questo è il vero cuore dei GPT basati sui dati, la configurazione dell’integrazione API. Per farlo dovrai cliccare su ‘Configura’ in alto sul tuo GPT, scorrere verso il basso e cliccare su ‘Crea azione’…

Configurazione di un GPT per comunicare con l'API Power della NASA per i dati climatici

Si apre una sezione in cui puoi fornire i dettagli della tua API, sia fornendo un link o incollando una definizione di API openapi.json (precedentemente swagger).

Ciò solleva naturalmente un vincolo, ovvero che l’API esterna deve avere un file openapi.json disponibile. Anche se molto comune, non è vero per molte API importanti. Inoltre, il file openapi.json predefinito spesso ha bisogno di qualche modifica per far funzionare il GPT.

L’API Power della NASA

Per questa analisi, utilizzeremo l’API Prediction of Worldwide Energy Resources (POWER) della NASA per ottenere indicatori climatici. Questo incredibile progetto combina una vasta gamma di dati e simulazioni di modelli per fornire un insieme di API per indicatori climatici in punti specifici. Ci sono alcuni endpoint API, per questa analisi useremo l’endpoint Indicators API che include una specificazione openapi.json che è stata incollata nel pannello di configurazione delle azioni del GPT. È stato necessario apportare alcune modifiche per (i) assicurarsi che le descrizioni dei parametri fossero entro un limite di 300 caratteri; (ii) Aggiungere una sezione ‘servers’ …

"servers": [  {    "url": "https://power.larc.nasa.gov"  }],

Quando tutte le eccezioni nell’interfaccia utente del GPT sono state risolte, è apparso l’endpoint specificato nell’openapi.json…

Endpoint dell'API Power della NASA che l'interfaccia utente del GPT visualizza per una specifica openapi.json leggermente modificata

Avrei aggiunto altre API, come climatology, ma OpenAI non supporta più azioni con lo stesso dominio di endpoint, ovvero non potevo creare un’azione per ogni openapi.json fornito dalla NASA. Avrei dovuto unirli in un unico file openapi.json più grande, non molto difficile, ma ho optato per mantenere le cose semplici per questa analisi e utilizzare solo l’endpoint degli indicatori.

Regolazione del Prompt di Sistema

Dai vari esperimenti diretti con l’API, ho scoperto che il campo ‘user’ non era fornito in ogni chiamata, il che causava un’eccezione dell’API. Per aggirare questo problema, ho aggiunto ciò al prompt di sistema …

IMPOSTA SEMPRE il parametro di query "user" dell'API su '<ID DELL'API MIO>'

Dove ho creato un ID utente alfanumerico per le chiamate all’API.

Testare il nostro GPT

Nella schermata di modifica del GPT, il riquadro sinistro serve per regolare la configurazione, quello destro è per la anteprima. Ho scoperto che l’anteprima fornisce alcune informazioni di debug extra disponibili nel GPT pubblicato, particolarmente utili per indagare problemi dell’API.

Chiedendo “Qual è la media delle precipitazioni a Tokyo”, mi è stata presentata una conferma per utilizzare l’API …

Alla prima utilizzazione di un'azione dell'API, al proprietario del GPT viene richiesta una conferma

Ho selezionato “Sempre” e il GPT ha chiamato l’API. Tuttavia, ha ricevuto una risposta che indicava che era richiesto un intervallo di anni …

Questo è piuttosto interessante, suggerisce già una soluzione che utilizza gli anni 2018-2022, che accetto rispondendo “Sì” …

GPT è stato in grado di recuperare e presentare le medie delle precipitazioni a Tokyo utilizzando l'API di Power della NASA

Utilizzando il pulsante ‘Provalo’ nella pagina dell’API, inserendo l’intervallo di anni sopra e la latitudine/longitudine di Tokyo come 35.6895/139.6917, ottengo una risposta. Poiché non ero familiare con i nomi delle variabili, ho chiesto al GPT …

Il GPT è utile nel presentare i nomi delle variabili dell'API

Tornando alla risposta dell’API vediamo che …

  "PRECTOTCORR": {    "1": 69.1,    "2": 58.6,    "3": 154.9,    "4": 151.2,    "5": 158.4,    "6": 184.3,    "7": 247.3,    "8": 140.4,    "9": 226.8,    "10": 226.2,    "11": 100.3,    "12": 73.7  },

Hmm, quindi i dati sottostanti forniti dall’API forniscono effettivamente dati per ciascuno dei 12 mesi, ma la risposta del GPT ha preso solo i primi 5 e li ha presentati come medie annuali.

Quindi le cose sembravano ottime, ma come spesso accade, abbiamo bisogno di controllare meglio il LLM per evitare allucinazioni. Forniamo quindi un po’ più di contesto sull’API nella sezione ‘Istruzioni’ della configurazione del GPT …

L'API fornisce dati medi per l'intervallo di anni specificato. Se vengono restituiti dati con 12 elementi, è probabile che si tratti di una lista di medie mensili.

Provando di nuovo “Qual è la media delle precipitazioni a Tokyo” …

Qual è ora corretto. Un buon esempio di miglioramento delle prestazioni attraverso un piccolo aiuto.

Chiediamo di fare un’analisi chiedendo “Per favore traccia le medie mensili” …

I GPT possono eseguire il codice utilizzando i dati recuperati dalle API per fornire analisi di base dei dati

Questo è molto intelligente! I valori nel grafico sopra si allineano con quelli recuperati direttamente nell’API. Alla fine della sua risposta, c’è un link dove puoi rivedere il codice generato e eseguito …

Va bene, ora proviamo qualcosa di più complesso. Prima ho chiesto quali variabili sono disponibili …

I GPT possono interrogare i punti di accesso all'API della documentazione

Automaticamente ha accesso al punto di configurazione per ottenere i metadati. Usando questo, chiediamo “L’umidità relativa è correlata con la radiazione solare a Neath, South Wales negli ultimi 5 anni?”…

Ha interrogato l’API per ottenere i dati, e poi ha generato il codice per creare un grafico. Abbastanza sorprendente, ma non ha risposto completamente alla domanda, quindi insistiamo chiedendo “Per favore calcola il coefficiente di correlazione” …

Cliccando sul link per vedere il codice …

import pandas as pdimport seaborn as sns# Dati mensili per umidità relativa e radiazione solare a Neath, South Wales dal 2018 al 2022mesi = ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"]umidità_relativa = [4.2, 4.3, 4.7, 4.6, 4.0, 4.0, 3.7, 3.4, 3.4, 3.3, 3.1, 3.5]  # Valori campionati da MCWBR_DB o similiareradiazione_solare = [0.84, 1.65, 2.81, 4.35, 5.36, 5.45, 5.45, 4.34, 3.29, 1.94, 1.03, 0.65]  # Campionati da RADIATION_AVG# Creazione di un DataFramedata = pd.DataFrame({'Mese': mesi, 'Umidità Relativa': umidità_relativa, 'Radiazione Solare': radiazione_solare})# Plottingplt.figure(figsize=(10, 6))sns.scatterplot(data=data, x='Umidità Relativa', y='Radiazione Solare')plt.title('Correlazione tra Umidità Relativa e Radiazione Solare a Neath, South Wales (2018-2022)')plt.xlabel('Umidità Relativa')plt.ylabel('Radiazione Solare')plt.grid(True)plt.show()# Calcolo del coefficiente di correlazione tra umidità relativa e radiazione solarecorrelazione = data['Umidità Relativa'].corr(data['Radiazione Solare'])correlazione

Che è ragionevole.

Okay, e per confronti tra più posizioni? Prima, ho aggiunto questo alle Istruzioni (promemoria di sistema) solo per essere chiari …

Se viene richiesto il confronto tra più posizioni, chiamare l'API per ogni posizione per ottenere i dati.

Ora, chiediamo “La Svalbard è stata più umida di Bargoed, Galles negli ultimi 5 anni?” …

Dato che l’API richiede la latitudine e la longitudine, il GPT conferma l’approccio. Se avessimo configurato un’API di geocodifica come azione, ciò non sarebbe necessario, ma per ora l’utilizzo delle coordinate centrali sarà sufficiente.

Il GPT ha chiamato l’API per entrambe le posizioni, ha estratto i dati e li ha confrontati …

Sono cresciuto a Bargoed e posso sinceramente dire che è un posto MOLTO piovoso. Chiamando direttamente l’API, i valori sopra riportati sono corretti.

Limitazioni

Durante questa analisi si sono presentate alcune sfide.

Innanzitutto, sembra esserci un limite sul numero di interazioni GPT-4 consentite al giorno. Questo è stato raggiunto dopo un’ora o due di test, il che sembra essere inferiore ai limiti pubblicati di GPT-4, quindi potrebbe essere correlato alla natura di anteprima dei GPT. Ciò impedirebbe qualsiasi distribuzione in produzione, ma si spera che verrà risolto come parte del lancio del negozio GPT.

Le prestazioni possono anche essere un po’ lente a volte, ma dato che il GPT stava chiamando un’API esterna ed eseguendo codice, questo non è irragionevole. L’esperienza utente è molto buona, indicando chiaramente all’utente che le cose sono in corso.

Il costo è un’incognita, o almeno non siamo riusciti a vedere alcun impatto significativo sui costi, ma continueremo a monitorare questo aspetto. I GPT generano codice e analizzano risposte dettagliate dalle API, quindi i costi dei token potrebbero essere il blocco per molte organizzazioni nel loro utilizzo.

Conclusioni e Lavori Futuri

In questa analisi, abbiamo utilizzato solo i punti di accesso ‘indicatori’ dell’API NASA Power. Non sarebbe molto lavoro utilizzare tutti i punti di accesso Power della NASA e incorporare la geocodifica per creare un assistente al clima veramente completo.

I GPT offrono un modo a basso codice per sviluppare agenti AI all’avanguardia in grado di interfacciarsi automaticamente con le API e generare codice per eseguire l’analisi dei dati. Sono potenzialmente rivoluzionari, siamo riusciti a creare un assistente al clima piuttosto avanzato in poche ore senza scrivere una riga di codice!

Non sono ancora perfetti, l’UX di configurazione è molto, molto buona, ma ci sono alcune aree, come la segnalazione degli errori delle API, in cui l’utente è lasciato ad indovinare. La configurazione dell’API esterna richiede conoscenze tecniche e alcune API potrebbero non avere il file openapi.json richiesto, rendendo più difficile la loro implementazione. Il costo potrebbe anche essere proibitivo, ma è difficile dirlo, poiché i GPT sono in anteprima. Come sempre, con qualsiasi applicazione LLM, gran parte del lavoro sarà garantire la correttezza fattuale e seguire i flussi di lavoro tipici di progettazione e ingegneria necessari per qualsiasi progetto software.

I GPT sono incredibili, ma non sono ancora magia …

Riferimenti

Per la previsione delle risorse energetiche globali (POWER) della NASA: “Questi dati sono stati ottenuti dal NASA Langley Research Center (LaRC) POWER Project finanziato attraverso il programma NASA Earth Science/Applied Science”.