Créer un modèle GPT en utilisant l’API de puissance de la NASA
Création d'un modèle GPT en utilisant l'API de puissance de la NASA
TL;DR
Dans cet article, nous explorons la nouvelle fonctionnalité des GPT d’OpenAI, qui offre un moyen sans code de créer rapidement des agents d’IA capables d’appeler automatiquement des API externes pour obtenir des données et de générer du code pour répondre aux questions d’analyse de données. En seulement quelques heures, nous avons construit un chatbot capable de répondre aux questions sur le climat en se basant sur les données de l’API de la NASA Power et d’effectuer des tâches d’analyse de données. L’expérience utilisateur des GPT créée par OpenAI est excellente, ce qui réduit considérablement la barrière à la création d’agents d’IA de pointe. Cependant, la configuration de l’appel à l’API externe peut être un peu techniquement complexe et nécessite que l’API dispose d’un fichier openapi.json disponible. De plus, le coût est encore inconnu et, bien qu’en prévisualisation, il semblerait que les GPT aient des limites sur le nombre d’interactions autorisées par jour. Cependant, avec le lancement imminent de la boutique GPT d’OpenAI, nous pourrions assister à une explosion de ces agents d’IA GPT et même maintenant, ils offrent des capacités incroyables.
Qu’est-ce que les GPT ?
Les GPT ont été récemment lancés par OpenAI et offrent un moyen pour les utilisateurs non techniques de créer des agents de chat IA alimentés par le puissant modèle de langage large (LLM) GPT-4. Bien qu’il ait été possible de faire la plupart de ce que les GPT offrent depuis un certain temps grâce à des bibliothèques tierces comme LangChain et autogen, les GPT offrent une solution native. Cela s’accompagne d’une interface élégante et facile à utiliser, ainsi que d’une intégration étroite avec l’écosystème OpenAI. De plus, ils seront bientôt disponibles dans une nouvelle boutique GPT, ce qui laisse envisager une situation similaire à celle de l’App Store et l’explosion d’agents d’IA. Ou pas, difficile à dire, mais le potentiel est définitivement là.
Les GPT possèdent des fonctionnalités très puissantes, notamment la capacité à naviguer sur le Web, à générer et à exécuter du code, et leur plus gros atout, la capacité à communiquer avec des API pour obtenir des données externes. Cette dernière est très puissante car cela signifie qu’il devrait être facile de créer un agent d’IA sur n’importe quelle source de données utilisant une API.
- Comprendre la maintenance prédictive – Données de vague Ingénierie des caractéristiques (Partie 1)
- Requêtes de langage naturel alimentées par l’IA pour la découverte des connaissances
- Démystifier le remplissage des données
Création d’un GPT
Les GPT ne sont actuellement disponibles que pour les abonnés ChatGPT plus. Pour en créer un, vous devez vous rendre sur chat.openai.com/create où vous serez invité à fournir quelques détails sur ce que votre GPT fera et l’image miniature que vous souhaitez utiliser (elle peut être générée automatiquement à l’aide de DALL-E-3).
Pour cette analyse, j’ai utilisé la formulation suivante : “Créez un chatbot d’indicateurs climatiques qui utilise l’API Power de la NASA pour obtenir des données“. Cela a créé un GPT avec la consigne système suivante (dans le champ “Instructions” de la section “Configuration”)…
Le GPT est conçu comme un bot d'API Power de la NASA, spécialisé dans la récupération et l'interprétation de données climatiques pour diverses localisations. Son rôle principal est d'aider les utilisateurs à accéder et à comprendre les informations liées au climat, en particulier en interagissant avec l'API Power de la NASA. Il devrait se concentrer sur la fourniture de données climatiques précises et à jour, telles que la température, les précipitations, le rayonnement solaire et autres paramètres environnementaux pertinents.Pour garantir l'exactitude et la pertinence, le bot devrait éviter de spéculer sur des données en dehors de son domaine d'application et ne pas proposer de prédictions ou d'interprétations allant au-delà de ce que les données de l'API supportent. Il devrait guider les utilisateurs dans la formulation de requêtes pour obtenir des données et préciser quand des détails supplémentaires sont nécessaires pour une requête précise.Lors des interactions, le bot devrait être factuel et direct, en mettant l'accent sur la clarté dans la présentation des données. Il devrait offrir des indications sur l'interprétation des données si nécessaire, mais maintenir un ton neutre et informatif, sans personnalisation ni humour.Le bot devrait explicitement demander des précisions si la requête d'un utilisateur est vague ou ne contient pas suffisamment de détails spécifiques pour obtenir les données pertinentes de l'API Power de la NASA.
Lequel semble très raisonnable en fonction de la seule phrase que j’ai fournie. Cela peut bien sûr être ajusté selon les préférences, et comme nous le verrons ci-dessous, c’est également un bon endroit pour guider le chatbot concernant les appels API.
Configuration des fonctionnalités
Le GPT peut être configuré avec diverses fonctionnalités. Pour notre analyse, nous désactiverons la capacité à générer des images et conserverons la capacité à naviguer sur le web ainsi qu’à générer et exécuter du code avec Code Interpreter. Pour un GPT de production, je désactiverais probablement l’accès au web et m’assurerais que toutes les données requises sont fournies par des API spécifiées, mais pour notre analyse, nous le laisserons activé car c’est pratique pour obtenir la latitude et la longitude des endroits, nécessaires pour appeler l’API NASA Power.
Configuration de l’accès API
C’est le véritable cœur des GPT basés sur les données, la configuration de l’intégration API. Pour ce faire, vous devrez cliquer sur “Configurer” en haut de votre GPT, puis faire défiler vers le bas et cliquer sur “Créer une action”…
Cela ouvre une section où vous pouvez fournir les détails de votre API, soit en fournissant un lien vers une définition d’API openapi.json (anciennement swagger), soit en la collant.
Cela soulève bien sûr une contrainte selon laquelle l’API externe doit disposer d’un fichier openapi.json disponible. Bien que très courant, ce n’est pas le cas de nombreuses API importantes. De plus, le fichier openapi.json par défaut nécessite souvent quelques ajustements pour que le GPT fonctionne.
L’API Power de la NASA
Pour cette analyse, nous utiliserons l’API Prediction of Worldwide Energy Resources (POWER) de la NASA pour obtenir des indicateurs climatiques. Ce projet incroyable combine une large gamme de données et de simulations de modèles pour fournir un ensemble d’API pour les indicateurs climatiques à des emplacements spécifiques. Il existe quelques points de terminaison d’API, pour cette analyse nous utiliserons l’API Indicators qui inclut une spécification openapi.json qui a été collée dans le panneau de configuration des actions du GPT. Elle nécessitait quelques manipulations pour (i) s’assurer que les descriptions des paramètres étaient limitées à 300 caractères maximum ; (ii) ajouter une section “serveurs”…
"serveurs": [ { "url": "https://power.larc.nasa.gov" }],
Lorsque toutes les exceptions dans l’interface utilisateur du GPT ont été résolues, le point de terminaison spécifié dans le openapi.json est apparu…
J’aurais ajouté d’autres API, telles que climatology, mais OpenAI ne prend pas en charge plusieurs actions avec le même domaine de point de terminaison, c’est-à-dire que je ne pouvais pas créer une action pour chaque openapi.json fourni par la NASA. Je devrais les fusionner en un seul fichier openapi.json plus grand, ce qui n’est pas trop compliqué, mais j’ai choisi de simplifier les choses pour cette analyse et d’utiliser uniquement le point de terminaison des indicateurs.
Ajustement de l’invite du système
Après quelques expérimentations directement avec l’API, j’ai remarqué que le champ « utilisateur » n’était pas présent à chaque appel, ce qui entraînait une exception de l’API. Pour contourner cela, j’ai ajouté ceci à l’invite du système…
Toujours définir le paramètre de requête de l'API « utilisateur » sur « <MON IDENTIFIANT D'API> »
Où j’ai créé un ID utilisateur alphanumérique pour les appels API.
Tester notre GPT
Dans l’écran de modification du GPT, le volet de gauche permet d’ajuster la configuration, tandis que le volet de droite sert à la prévisualisation. J’ai constaté que la prévisualisation offre des informations de débogage supplémentaires disponibles dans le GPT publié, ce qui est particulièrement utile pour résoudre les problèmes de l’API.
En posant la question « Quelle est la moyenne des précipitations à Tokyo », j’ai obtenu une demande de confirmation pour utiliser l’API…
J’ai sélectionné “Toujours” et le GPT a appelé l’API. Cependant, j’ai reçu une réponse indiquant que la plage d’années était requise…
C’est plutôt génial, cela suggère déjà une solution en utilisant les années 2018-2022, que j’ai acceptée en répondant « Oui »…
En utilisant le bouton « Essayez-le » sur la page de l’API, en saisissant la plage d’années mentionnée ci-dessus et la latitude/longitude de Tokyo (35.6895/139.6917), j’obtiens une réponse. Comme je n’étais pas familier avec les noms de variables, j’ai demandé au GPT…
En revenant à la réponse de l’API, nous constatons que…
"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, donc les données sous-jacentes de l’API fournissent effectivement des données pour chacun des 12 mois, mais la réponse du GPT a pris les 5 premières et les a présentées comme des moyennes annuelles.
Donc tout semblait bien, mais comme nous le constatons souvent, nous devons apprivoiser le LLM pour éviter les hallucinations. Ajoutons un peu plus de contexte sur l’API dans la section « Instructions » de la configuration du GPT…
L'API fournit des données moyennées pour la plage d'années spécifiée. Si des données sont renvoyées avec 12 éléments, il s'agit probablement d'une liste de moyennes mensuelles.
Essayons à nouveau « Quelle est la moyenne des précipitations à Tokyo »…
Qu’est-ce qui est maintenant correct. Un bon exemple d’amélioration des performances grâce à un peu de sollicitation.
Demandons-lui de faire une analyse en demandant “Veuillez tracer les moyennes mensuelles” …
C’est très astucieux! Les valeurs dans le graphique ci-dessus correspondent à celles récupérées directement dans l’API. À la fin de sa réponse, il y a un lien où vous pouvez examiner le code qu’il a généré et exécuté …
D’accord, essayons maintenant quelque chose de plus complexe. Tout d’abord, j’ai demandé quelles variables sont disponibles …
Il a automatiquement accédé au point de terminaison de configuration pour obtenir des métadonnées. Utilisons cela pour demander “L’humidité relative est-elle corrélée avec le rayonnement solaire à Neath, au Pays de Galles du Sud, au cours des 5 dernières années” …
Il a interrogé l’API pour obtenir des données, puis a généré du code pour créer un graphique. Assez impressionnant, mais il n’a pas répondu à la question complète, donc insistons en demandant “Veuillez calculer le coefficient de corrélation” …
Cliquez sur le lien pour voir le code …
import pandas as pdimport seaborn as sns# Données mensuelles pour l'humidité relative et le rayonnement solaire à Neath, au Pays de Galles du Sud de 2018 à 2022mois = ["Jan", "Fév", "Mar", "Avr", "Mai", "Juin", "Juil", "Août", "Sept", "Oct", "Nov", "Déc"]humidite_relative = [4.2, 4.3, 4.7, 4.6, 4.0, 4.0, 3.7, 3.4, 3.4, 3.3, 3.1, 3.5] # Valeurs échantillonnées à partir de MCWBR_DB ou similairerayonnement_solaire = [0.84, 1.65, 2.81, 4.35, 5.36, 5.45, 5.45, 4.34, 3.29, 1.94, 1.03, 0.65] # Échantillonné à partir de RADIATION_AVG# Création d'un DataFramedonnees = pd.DataFrame({'Mois': mois, 'Humidité Relative': humidite_relative, 'Rayonnement Solaire': rayonnement_solaire})# Tracéplt.figure(figsize=(10, 6))sns.scatterplot(data=donnees, x='Humidité Relative', y='Rayonnement Solaire')plt.title('Corrélation entre l\'humidité relative et le rayonnement solaire à Neath, au Pays de Galles du Sud (2018-2022)')plt.xlabel('Humidité Relative')plt.ylabel('Rayonnement Solaire')plt.grid(True)plt.show()# Calcul du coefficient de corrélation entre l'humidité relative et le rayonnement solairecorrelation = donnees['Humidité Relative'].corr(donnees['Rayonnement Solaire'])correlation
Ce qui est raisonnable.
D’accord, qu’en est-il des comparaisons de plusieurs emplacements? Tout d’abord, j’ai ajouté ceci aux instructions (invite système) juste pour être clair …
Si on demande plusieurs emplacements, appeler l'API pour chaque emplacement pour obtenir des données.
Maintenant, demandons “Est-ce que Svalbard était plus humide que Bargoed, au Pays de Galles, au cours des 5 dernières années?” …
Étant donné que l’API nécessite la latitude et la longitude, le GPT confirme l’approche. Si nous avions configuré une API de géocodage en tant qu’action, cela ne serait pas nécessaire, mais pour l’instant l’utilisation des coordonnées centrales suffira.
Le GPT a appelé l’API pour les deux emplacements, extrait les données et les a comparées…
J’ai grandi à Bargoed, et je peux honnêtement dire que c’est un endroit TRÈS pluvieux. En appelant directement l’API, les valeurs ci-dessus sont correctes.
Limites
Pendant cette analyse, quelques défis se sont présentés.
Tout d’abord, il semble y avoir une limite sur le nombre d’interactions GPT-4 autorisées par jour. Cela a été atteint après une heure ou deux de test, ce qui semblait être inférieur aux limites publiées de GPT-4, il pourrait donc être lié à la nature de prévisualisation des GPT. Cela empêcherait tout déploiement en production, mais on espère que cela sera résolu dans le cadre du lancement de la boutique GPT.
Les performances peuvent aussi être un peu lentes par moments, mais étant donné que le GPT appelait une API externe et exécutait du code, cela n’est pas déraisonnable. L’expérience utilisateur est très bonne, indiquant clairement à l’utilisateur que les choses sont en cours.
Le coût est inconnu, ou du moins, nous n’avons pas pu constater d’impact significatif sur les coûts mais nous continuerons à suivre cela. Les GPT génèrent du code et analysent de longues réponses provenant d’API, donc les coûts des jetons pourraient bien être le facteur limitant pour nombreuses organisations qui les utilisent.
Conclusions et Travaux futurs
Dans cette analyse, nous n’avons utilisé que les points de terminaison ‘indicateurs’ de l’API NASA Power. Il ne serait pas difficile d’utiliser tous les points de terminaison Power de la NASA et d’incorporer la géolocalisation pour créer un chatbot climatique vraiment complet.
Les GPT offrent une façon peu codée de développer des agents d’IA de pointe capables de s’interfacer automatiquement avec des API et de générer du code pour effectuer des analyses de données. Ils ont le potentiel de révolutionner le domaine, car nous avons pu créer un chatbot climatique assez avancé en seulement quelques heures sans écrire une seule ligne de code !
Ils ne sont pas encore parfaits, l’interface utilisateur de configuration est vraiment très bonne, mais il existe certaines zones où l’utilisateur est laissé dans l’incertitude, comme le rapport d’erreurs de l’API. La configuration des API externes nécessite des connaissances techniques, et certaines API pourraient manquer le openapi.json requis, ce qui les rendrait plus difficiles à mettre en œuvre. Le coût peut également être un frein, mais il est difficile de le dire pour l’instant car les GPT sont en phase de prévisualisation. Comme pour toute application LLM, une grande partie du travail consistera à garantir la correction factuelle et à suivre les workflows de conception et d’ingénierie nécessaires à tout projet logiciel.
Les GPT sont incroyables, mais ils ne sont pas magiques… pour l’instant.
Références
Pour les prévisions mondiales des ressources énergétiques de la NASA (POWER) : “Ces données ont été obtenues à partir du projet Langley Research Center (LaRC) POWER de la NASA, financé par le programme de sciences de la Terre / sciences appliquées de la NASA.”
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Est-il difficile d’adopter le Serverless?
- Les 5 piliers des tests LLM fiables
- Comment les détecteurs de contenu AI fonctionnent-ils ?
- Caractéristiques catégorielles Qu’est-ce qui ne va pas avec le codage par étiquettes ?
- Utilisez Amazon SageMaker Studio pour créer une solution de réponse à questions RAG avec Llama 2, LangChain, et Pinecone pour une expérimentation rapide.
- CSV vers PDF Demande à GPT-4 pour la création automatique de rapports de visualisation de données
- Le parcours de KT pour réduire le temps de formation d’un modèle de transformateurs de vision en utilisant Amazon SageMaker