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
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.
- Desmitificar el relleno de datos
- Consultas de lenguaje natural potenciadas por IA para descubrimiento de conocimiento
- Los 5 pilares de las pruebas confiables de LLM
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”…
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…
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 …
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í” …
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 …
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” …
¡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 …
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- ¿Cómo funcionan los detectores de contenido de IA?
- Convertir CSV a PDF Solicitando a GPT-4 para la creación automática de informes de visualización de datos
- Investigadores de la Universidad de Stanford presentan FlashFFTConv un nuevo sistema de inteligencia artificial para optimizar convoluciones FFT en secuencias largas.
- Utilice Amazon SageMaker Studio para construir una solución de respuesta a preguntas RAG con Llama 2, LangChain y Pinecone para experimentación rápida.
- Científicos imprimen en 3D folículos pilosos en piel cultivada en laboratorio
- Pagaste $1,000 por un iPhone, pero Apple todavía lo controla
- Nueva herramienta para construir y reparar carreteras y puentes Inteligencia Artificial