Creando un GPT Climático Utilizando la API de Energía de la NASA

Creando un Generador Climático Utilizando la API de Energía de la NASA

Imagen creada en ChatGPT

TL;DR

En este artículo exploramos la nueva característica de GPTs de OpenAI, que ofrece una forma sin código de crear rápidamente agentes de IA que pueden llamar automáticamente a APIs externas para obtener datos, así como generar código para responder preguntas de análisis de datos. En solo unas horas construimos un chatbot que puede responder preguntas sobre el clima basado en datos de la API de NASA Power, así como realizar tareas de análisis de datos. La experiencia de usuario de GPT que ha creado OpenAI es excelente, ya que reduce significativamente la barrera para crear agentes de IA de última generación. Dicho esto, la configuración de llamada a la API externa puede ser un poco técnica y requiere que la API tenga un archivo openapi.json disponible. Además, el costo aún es desconocido y, aunque está en vista previa, parece que los GPT tienen algunas limitaciones en el número de interacciones permitidas por día. Sin embargo, con el inminente lanzamiento de la tienda GPT de OpenAI, podríamos ver una explosión en estos agentes de IA de GPT y incluso ahora ofrecen algunas capacidades sorprendentes.

¿Qué son los GPT?

Recientemente fueron lanzados los GPT por OpenAI y ofrecen una manera para que los usuarios no técnicos creen agentes de chat de IA alimentados por el poderoso Modelo de Lenguaje de Gran Tamaño (LLM) GPT-4. Aunque ha sido posible hacer la mayoría de lo que ofrecen los GPT durante algún tiempo a través de bibliotecas de terceros como LangChain y autogen, los GPT ofrecen una solución nativa. Con eso viene una interfaz elegante y fácil de usar, así como una integración estrecha con el ecosistema de OpenAI. Importante mencionar que próximamente también estarán disponibles en una nueva tienda GPT, lo que plantea la posibilidad de que podamos estar viendo una situación similar a una tienda de aplicaciones y la explosión de agentes de IA. O tal vez no, es difícil decirlo, pero definitivamente hay un potencial.

Los GPT cuentan con algunas características muy poderosas, como la capacidad de navegar por la web, generar y ejecutar código, y la característica principal, la capacidad de comunicarse con APIs para obtener datos externos. Esta última es muy poderosa, ya que significa que debería ser fácil crear un agente de IA sobre cualquier almacén de datos que presente datos utilizando una API.

Creando un GPT

Los GPTs actualmente solo están disponibles para los suscriptores de ChatGPT plus. Para crear uno, deberás visitar chat.openai.com/create, donde se te pedirán algunos detalles sobre lo que hará tu GPT y la imagen en miniatura que te gustaría usar (puede generarse automáticamente usando DALL-E-3).

Para este análisis, utilicé la indicación “Crea un chatbot de indicadores de clima que utiliza la API de NASA Power para obtener datos“. Esto creó un GPT con la siguiente indicación del sistema (en el campo ‘instrucciones’ bajo ‘Configurar’)…

El GPT está diseñado como un Bot de API de NASA Power, especializado en recuperar e interpretar datos climáticos para diversas ubicaciones. Su función principal es ayudar a los usuarios a acceder y comprender información relacionada con el clima, específicamente interactuando con la API de Power de la NASA. Debe centrarse en proporcionar datos climáticos precisos y actualizados, como temperatura, precipitación, radiación solar y otros parámetros ambientales relevantes.Para garantizar la precisión y la pertinencia, el bot debe evitar especular sobre datos fuera de su ámbito proporcionado y no ofrecer predicciones ni interpretaciones más allá de lo que admiten los datos de la API. Debe guiar a los usuarios en la formulación de solicitudes de datos y aclarar cuando se necesiten detalles adicionales para una consulta precisa.En las interacciones, el bot debe ser factual y directo, enfatizando la claridad en la presentación de los datos. Debe ofrecer orientación sobre cómo interpretar los datos cuando sea necesario, pero mantener un tono neutral e informativo sin personalización ni humor.El bot debe pedir explícitamente aclaraciones si la solicitud de un usuario es vaga o carece de detalles específicos necesarios para obtener los datos relevantes de la API de NASA Power.

Lo cual parece muy razonable basándonos en la única frase que proporcioné. Esto, por supuesto, se puede ajustar al gusto, y como veremos a continuación, también es un buen lugar para guiar al chatbot en cuanto a las llamadas a la API.

Configuración de capacidades

El GPT se puede configurar con varias capacidades. Para nuestro análisis, desactivaremos la capacidad de generar imágenes y mantendremos la capacidad de navegar por la web y generar y ejecutar código con Code Interpreter. Para un GPT de producción probablemente desactivaría el acceso a la web y aseguraría que todos los datos requeridos sean proporcionados por APIs especificadas, pero para nuestro análisis lo dejaremos activado ya que es útil para obtener la latitud y longitud de los lugares, requeridas para llamar a la API de NASA Power.

Configuración de acceso a la API

Este es el verdadero corazón de los GPT impulsados por datos, la configuración de la integración de API. Para hacer esto, tendrás que hacer clic en “Configurar” en la parte superior de tu GPT, y desplazarte hacia abajo y hacer clic en “Crear Acción”…

Configurando un GPT para comunicarse con la API de NASA Power para datos climáticos

Esto abrirá una sección donde puedes proporcionar detalles de tu API, ya sea proporcionando un enlace o pegando una definición de API openapi.json (anteriormente swagger).

Esto, por supuesto, plantea una restricción de que la API externa debe tener un archivo openapi.json disponible. Aunque es muy común, no es cierto para muchas APIs importantes. Además, el openapi.json predeterminado a menudo requiere algunos ajustes para que funcione el GPT.

La API de NASA Power

Para este análisis, utilizaremos la API de Predicción de Recursos Energéticos Mundiales (POWER) de NASA para obtener indicadores climáticos. Este increíble proyecto combina una amplia gama de datos y simulaciones de modelos para proporcionar un conjunto de APIs para indicadores climáticos en ubicaciones específicas. Hay algunos puntos finales de API, para este análisis utilizaremos el API de Indicadores que incluye una especificación openapi.json que se pegó en el panel de configuración de acciones del GPT. Necesitaba un poco de manipulación para (i) asegurarse de que las descripciones de los parámetros no superaran los 300 caracteres; y (ii) agregar una sección ‘servidores’…

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

Cuando se resolvieron todas las excepciones en la interfaz de usuario de GPT, apareció el punto final especificado en el openapi.json…

Puntos finales de indicadores de la API de NASA Power que la interfaz de usuario de GPT muestra para una especificación openapi.json ligeramente ajustada

Hubiera agregado otras APIs, como climatología, pero OpenAI no admite múltiples acciones con el mismo dominio de punto final, es decir, no pude crear una acción para cada openapi.json que provee NASA. Tendría que fusionarlos en un solo archivo openapi.json más grande, no es muy difícil, pero opté por mantener las cosas simples para este análisis y utilizar solo el punto final de los indicadores.

Ajustar la indicación del sistema

A partir de algunas pruebas directas con la API, descubrí que el campo ‘usuario’ no se proporcionaba en cada llamada, lo que resultaba en una excepción de la API. Para resolver esto, añadí esto a la indicación del sistema …

SIEMPRE establezca el parámetro de consulta de la API 'usuario' como '<MI ID DE API>'

Donde creé un ID de usuario alfanumérico para las llamadas a la API.

Probando nuestro GPT

En la pantalla de edición de GPT, el panel izquierdo es para ajustar la configuración, el derecho es para la vista previa. Encontré que la vista previa proporciona información de depuración adicional disponible en el GPT publicado, especialmente útil para investigar problemas de la API.

Al preguntar “¿Cuál es la media promedio de lluvias en Tokio?”, se me presentó una confirmación para usar la API …

En el primer uso de una acción de la API, se solicita confirmación al propietario del GPT

Seleccioné “Siempre” y el GPT llamó a la API. Sin embargo, recibió una respuesta que indicaba que se requería un rango de años …

Esto es bastante interesante, ya sugiere una solución para utilizar los años 2018-2022, a lo cual acepto respondiendo “Sí” …

El GPT pudo recuperar y presentar el promedio de lluvias de Tokio utilizando la API Power de NASA

Usando el botón “Probar” en la página de la API, ingresando el rango de años mencionado anteriormente y la latitud/longitud de Tokio como 35.6895/139.6917, obtengo una respuesta. Como no estaba familiarizado con los nombres de las variables, pregunté al GPT …

El GPT es útil para presentar los nombres de las variables de la API

Volviendo a la respuesta de la API, vemos 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  }

Mmm, entonces los datos subyacentes de la API realmente proporcionan datos para cada uno de los 12 meses, pero la respuesta del GPT tomó los primeros 5 y los presentó como promedios anuales.

Así que las cosas se veían geniales, pero como a menudo descubrimos, necesitamos manejar el LLM para evitar la alucinación. Vamos a proporcionar un poco más de contexto sobre la API en la sección “Instrucciones” de la configuración del GPT …

La API proporciona datos promediados para el rango de años especificado. Si se devuelve algún dato con 12 elementos, es probable que sea una lista de medias mensuales.

Intentando nuevamente “¿Cuál es la media promedio de lluvias en Tokio?” …

Ahora, ¿cuál es correcto? Un buen ejemplo de mejorar el rendimiento con una pequeña sugerencia.

Pidámosle que haga un análisis pidiendo “Por favor, traza los promedios mensuales” …

Los GPT pueden ejecutar código utilizando datos que obtuvieron de APIs para proporcionar análisis de datos básicos

¡Esto es muy ingenioso! Los valores en la gráfica de arriba coinciden con los datos obtenidos directamente en la API. Al final de su respuesta, hay un enlace donde puedes revisar el código que generó y ejecutó …

Ok, ahora intentemos algo más complejo. Primero pregunté qué variables están disponibles …

Los GPT pueden interrogar los puntos finales de la API de documentación

Accedió automáticamente al punto final de configuración para obtener metadatos. Usando esto, preguntemos “¿La humedad relativa está correlacionada con la radiación solar en Neath, South Wales en los últimos 5 años?” …

Consultó la API para obtener datos, luego generó código para crear una gráfica. Bastante sorprendente, pero no respondió la pregunta completa, así que insistamos preguntando “Por favor, calcula el coeficiente de correlación” …

Haz clic en el enlace para ver el código …

import pandas as pd
import seaborn as sns

# Datos mensuales de humedad relativa y radiación solar en Neath, South Wales de 2018 a 2022
months = ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"]
relative_humidity = [4.2, 4.3, 4.7, 4.6, 4.0, 4.0, 3.7, 3.4, 3.4, 3.3, 3.1, 3.5]  # Valores muestreados de MCWBR_DB u otros similares
solar_radiation = [0.84, 1.65, 2.81, 4.35, 5.36, 5.45, 5.45, 4.34, 3.29, 1.94, 1.03, 0.65]  # Valores muestreados de RADIATION_AVG

# Creando un DataFrame
data = pd.DataFrame({'Mes': months, 'Humedad Relativa': relative_humidity, 'Radiación Solar': solar_radiation})

# Graficando
plt.figure(figsize=(10, 6))
sns.scatterplot(data=data, x='Humedad Relativa', y='Radiación Solar')
plt.title('Correlación entre Humedad Relativa y Radiación Solar en Neath, South Wales (2018-2022)')
plt.xlabel('Humedad Relativa')
plt.ylabel('Radiación Solar')
plt.grid(True)
plt.show()

# Calculando el coeficiente de correlación entre humedad relativa y radiación solar
correlation = data['Humedad Relativa'].corr(data['Radiación Solar'])
correlation

Lo cual es razonable.

Ok, ¿qué tal comparaciones de múltiples ubicaciones? Primero, agregué esto a las Instrucciones (indicación del sistema) solo para dejarlo claro …

Si se pregunta sobre múltiples ubicaciones, llame a la API para cada ubicación para obtener datos.

Ahora, preguntemos “¿Fue Svalbard más húmedo que Bargoed Wales en los últimos 5 años?” …

Dado que la API necesita la latitud y longitud, el GPT confirma el enfoque. Si hubiéramos configurado una API de geocodificación como una acción, esto no sería necesario, pero por ahora el uso de coordenadas centrales será suficiente.

El GPT llamó a la API para ambas ubicaciones, extrajo datos y comparó …

Crecí en Bargoed y puedo decir honestamente que es un lugar MUY lluvioso. Llamando a la API directamente, los valores anteriores son correctos.

Limitaciones

Durante este análisis, se presentaron algunos desafíos.

En primer lugar, parece haber un límite en la cantidad de interacciones permitidas por día con GPT-4. Esto se alcanzó después de una hora o dos de pruebas, lo cual parece ser inferior a los límites publicados de GPT-4, por lo que podría estar relacionado con la naturaleza de vista previa de los GPTs. Esto evitaría cualquier implementación de producción, pero se espera que se resuelva como parte del lanzamiento de la tienda GPT.

El rendimiento también puede ser algo lento en ocasiones, pero dado que el GPT estaba llamando a una API externa y ejecutando código, no es irrazonable. La UX es muy buena, indicando claramente al usuario que las cosas están en progreso.

El costo es desconocido, o al menos, no pudimos ver ningún impacto significativo en los costos, pero continuaremos monitoreándolo. Los GPT generan código y analizan respuestas extensas de las APIs, por lo que los costos de tokens podrían ser un obstáculo para muchas organizaciones en su uso.

Conclusiones y trabajo futuro

En este análisis, solo utilizamos los puntos finales ‘indicadores’ de la API NASA Power. No sería mucho trabajo utilizar todos los puntos finales de Poder de NASA e incorporar la geocodificación para crear un chatbot climático realmente completo.

Los GPTs ofrecen una forma de bajo código para desarrollar agentes de IA de última generación que pueden interactuar automáticamente con APIs y generar código para realizar análisis de datos. Tienen el potencial de ser un cambio de juego, pudimos crear un chatbot climático bastante avanzado en solo unas pocas horas sin escribir una línea de código.

No son perfectos aún, la UX de configuración es muy, muy buena, pero hay áreas en las que el usuario se queda adivinando, como la notificación de errores de la API. La configuración de APIs externas requiere conocimientos técnicos y algunas APIs podrían no tener el archivo openapi.json requerido, lo que dificulta su implementación. El costo también puede ser prohibitivo, pero es difícil decirlo aún, ya que los GPTs están en vista previa. Como siempre, con cualquier aplicación de LLM, gran parte del trabajo consistirá en garantizar la corrección de los hechos y aplicar los flujos de trabajo de diseño y desarrollo típicos necesarios para cualquier proyecto de software.

Los GPTs son asombrosos, pero no son mágicos… todavía.

Referencias

Para Predicción de Recursos Energéticos Mundiales (POWER) de la NASA: “Estos datos se obtuvieron del Centro de Investigación de Langley de la NASA (LaRC), Proyecto POWER, financiado a través del Programa de Ciencias de la Tierra/Ciencias Aplicadas de la NASA”.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

ULTRA Modelos de base para el razonamiento del gráfico de conocimiento

Entrenar un solo modelo genérico para resolver conjuntos de datos arbitrarios siempre ha sido un sueño para los inves...

Ciencia de Datos

12 Modelos Mentales para la Ciencia de Datos

En el campo en constante evolución de la ciencia de datos, las habilidades técnicas para manejar y analizar datos son...

Inteligencia Artificial

La investigación liderada por UMD impulsa el Panel de datos sobre el enjuiciamiento del condado de Montgomery.

Investigadores de la Universidad de Maryland ayudaron a la Oficina del Fiscal del Estado del Condado de Montgomery a ...

Inteligencia Artificial

Conoce los Modelos de Difusión Compartimentados (CDM) Un enfoque de IA para entrenar diferentes modelos de difusión o indicaciones en distintas fuentes de datos.

Con los avances recientes en tecnología y en el campo de la Inteligencia Artificial, ha habido mucho progreso y mejor...

Inteligencia Artificial

¿Dónde ocurre la IA?

¿Hacia qué sector deberían dirigirse los investigadores en ciernes? ¿La academia o la industria?

Inteligencia Artificial

Búsqueda de Google en India ahora está impulsada por IA | Aprende cómo usarlo

Google ha desatado una innovación revolucionaria que redefinirá la forma en que los indios y japoneses exploran el va...