Создание ГПОт на основе API энергии NASA

Создание ГПОт на основе энергии NASA с использованием API

Изображение, созданное в ChatGPT

TL;DR

В этой статье мы рассмотрим новую функцию GPTs от OpenAI, которая предлагает способ быстро создавать AI-агентов, которые могут автоматически вызывать внешние API для получения данных и генерировать код для ответа на вопросы анализа данных. За несколько часов мы создали чат-бота, который может отвечать на вопросы о климате на основе данных из API NASA Power, а также выполнять задачи анализа данных. Пользовательский опыт GPT, созданный OpenAI, отличный и существенно снижает барьеры при создании современных AI-агентов. Однако настройка вызова внешних API может быть немного сложной с технической точки зрения и требует наличия файла openapi.json в API. Кроме того, стоимость пока неизвестна, и, несмотря на предварительный просмотр, кажется, что у GPTs есть ограничения на количество взаимодействий, разрешенных в день. Однако с неминуемым запуском GPT store от OpenAI мы можем увидеть взрывное увеличение числа этих AI-агентов GPT, и они уже предлагают некоторые удивительные возможности.

Что такое GPT?

Недавно были запущены GPTs от OpenAI и предлагают способ для неспециалистов создавать чат-агентов AI на основе мощной модели большого языкового модуля (LLM) GPT-4. Хотя возможность делать то же самое, что и предлагают GPTs, существует в сторонних библиотеках, таких как LangChain и autogen, GPTs предлагают родное решение. Это сопровождается простым и удобным интерфейсом и тесной интеграцией с экосистемой OpenAI. Важно отметить, что они вскоре будут доступны также в новом магазине GPT, что повышает возможность появления ситуации с магазином приложений и взрыва AI-агентов. Или нет, сложно сказать, но потенциал определенно есть.

GPTs обладают некоторыми очень мощными возможностями, в частности возможностью сидеть в интернете, генерировать и выполнять код, а также важной возможностью взаимодействовать с API для получения внешних данных. Последнее очень мощно, потому что это означает, что должно быть легко создавать AI-агентов поверх любого хранилища данных, представляющего данные с помощью API.

Создание GPT

GPTs в настоящее время доступны только для подписчиков ChatGPT Plus. Чтобы создать их, вам нужно посетить chat.openai.com/create, где вас попросят указать некоторые детали о том, что должен делать ваш GPT, и выбрать миниатюрное изображение, которое вы хотите использовать (оно может быть создано автоматически с помощью DALL-E-3).

Для этого анализа я использовал запрос «Создать чат-бота для климатических показателей, использующего API NASA Power для получения данных». Это создало GPT со следующим системным запросом (в поле ‘Инструкции’ в разделе ‘Настройка’)…

GPT специализируется как бот API NASA Power, способный получать и интерпретировать климатические данные для разных местоположений. Его основная задача - помощь пользователям в доступе и понимании информации, связанной с климатом, в особенности путем взаимодействия с API Power от NASA. Он должен сосредоточиться на предоставлении точных и актуальных климатических данных, таких как температура, осадки, солнечная радиация и другие соответствующие параметры окружающей среды. Чтобы обеспечить точность и подходящую информацию, бот должен избегать спекуляций на данных вне его представленной области и не предлагать прогнозы или интерпретации, превышающие данные API. Он должен помогать пользователям формулировать запросы на данные и уточнять, когда требуются дополнительные сведения для точного запроса. Во взаимодействиях бот должен быть фактическим и прямолинейным, акцентируя ясность в представлении данных. Он должен предлагать руководство по толкованию данных при необходимости, но поддерживать нейтральный информативный тон без персонализации или юмора. Бот должен явно запрашивать уточнение, если запрос пользователя является неясным или не содержит необходимых деталей для получения соответствующих данных из API NASA Power.

Что кажется вполне разумным на основе одного предложения, которое я предоставил. Это, конечно, может быть скорректировано по вкусу, и, как мы увидим ниже, также является хорошим местом для направления чатбота в отношении вызовов API.

Настройка возможностей

GPT может быть настроен с различными возможностями. Для нашего анализа мы отключим возможность генерировать изображения и сохраним возможность просмотра веб-страниц и генерации и выполнения кода с помощью Code Interpreter. Для производственного GPT я, вероятно, бы отключил доступ к вебу и убедился, что все необходимые данные предоставляются указанными API, но для нашего анализа мы оставим его включенным, так как он удобен для получения широты и долготы для мест, необходимых для вызова API NASA Power.

Настройка доступа к API

Это настоящее ядро данных ориентированных на GPT, настройка интеграции с API. Для этого вам понадобится нажать «Настроить» в верхней части вашего GPT, прокрутить вниз и нажать «Создать действие»…

Настройка GPT для связи с API NASA Power для получения климатических данных

Это открывает раздел, где вы можете предоставить информацию о своем API, указав либо ссылку на определение API openapi.json (ранее swagger), либо вставив его.

Конечно, это создает ограничение, что внешнее API должно иметь доступный файл openapi.json. Хотя это очень распространено, это не относится ко многим важным API. Кроме того, по умолчанию openapi.json часто требует небольшой настройки для работы с GPT.

API NASA Power

Для этого анализа мы будем использовать API Prediction of Worldwide Energy Resources (POWER), предоставляемое NASA, чтобы получить климатические показатели. Этот удивительный проект объединяет широкий спектр данных и модельных симуляций, чтобы предоставить набор API для климатических показателей в точечных местах. Существует несколько конечных точек API, для этого анализа мы будем использовать конечную точку Indicators API, включающую определение openapi.json, которое было вставлено в панель конфигурации действия GPT. Он требовал небольшой обработки для (i) обеспечения ограничения описания параметров до 300 символов; (ii) добавления раздела «серверы»…

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

Когда все исключения в пользовательском интерфейсе GPT были устранены, появилась указанная конечная точка в openapi.json…

Конечные точки API NASA Power, которые отображает пользовательский интерфейс GPT для слегка скорректированного определения openapi.json

Я бы добавил другие API, такие как климатологию, но OpenAI не поддерживает несколько действий с одном доменом конечных точек, то есть я не мог создать действие для каждого предоставляемого NASA openapi.json. Мне бы пришлось объединить их в один большой файл openapi.json, что не очень сложно, но я выбрал сохранить вещи простыми для этого анализа и использовать только конечную точку показателей.

Настройка системного приглашения

Проводя некоторые эксперименты с API напрямую, я обнаружил, что поле “пользователь” не предоставляется в каждом вызове, что вызывает исключение API. Чтобы обойти это, я добавил это в системное приглашение …

ВСЕГДА устанавливать параметр запроса API 'пользователь' равным '<MY API ID>'

Где я создал буквенно-цифровой идентификатор пользователя для вызовов API.

Тестирование нашего GPT

На экране редактирования GPT левая панель служит для настройки конфигурации, правая – для просмотра. Я обнаружил, что предварительный просмотр предоставляет дополнительную отладочную информацию, доступную в опубликованном GPT, особенно полезную для расследования проблем с API.

При запросе “Что такое среднегодовое количество осадков в Токио?”, мне было предложено подтверждение использования API …

При первом использовании действия API владелец GPT получает запрос на подтверждение

Я выбрал “Всегда”, и GPT вызвал API. Однако он получил ответ о необходимости указать диапазон годов …

Это довольно круто, он уже предлагает решение использовать годы 2018–2022, которое я принимаю, ответив “Да” …

GPT смог получить и представить среднегодовое количество осадков в Токио с использованием API NASA Power

Используя кнопку “Попробуйте сами” на странице API, введите указанный выше диапазон годов и широту/долготу Токио, равные 35.6895/139.6917, получаю ответ. Так как я не был знаком с именами переменных, я спросил GPT …

GPT помогает представить имена переменных в API

Вернувшись к ответу API, мы видим, что …

"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  }

Хм, таким образом, базовые данные API фактически предоставляют данные для каждого из 12 месяцев, но ответ GPT взял первые 5 и представил их как годовые средние значения.

Все выглядело замечательно, но, как мы часто обнаруживаем, нам нужно немного приучить LLM, чтобы избежать галлюцинаций. Давайте предоставим немного больше контекста об API в разделе “Инструкции” конфигурации GPT …

API предоставляет данные, усредненные для указанного диапазона годов. Если возвращается данные с 12 элементами, вероятно, это список месячных средних значений.

Попробуем еще раз “Что такое среднегодовое количество осадков в Токио” …

Как сейчас правильно. Хороший пример повышения производительности с небольшой подсказкой.

Давайте попросим его провести анализ, задав вопрос: “Пожалуйста, постройте график среднемесячных значений“…

GPTs могут запускать код, используя данные, полученные из API, для предоставления базового анализа данных

Это очень практично! Значения, отображенные на приведенном выше графике, соответствуют значениям, полученным непосредственно из API. В конце своего ответа есть ссылка, где вы можете просмотреть сгенерированный и выполненный код…

Хорошо, теперь давайте попробуем что-то более сложное. Сначала я спросил, какие переменные доступны…

GPTs могут отправлять запросы к документации через API

Он автоматически получил доступ к конечной точке конфигурации для получения метаданных. Используя это, давайте спросим: “Коррелирует ли относительная влажность с солнечной радиацией в Ниафе, Южный Уэльс за последние 5 лет“…

Он запрашивает данные из API, а затем генерирует код для создания графика. Довольно удивительно, но он не ответил на весь вопрос, поэтому давайте настаиваем, задавая: “Пожалуйста, рассчитайте коэффициент корреляции“…

Нажав на ссылку, чтобы увидеть код…

import pandas as pdimport seaborn as sns# Ежемесячные данные о относительной влажности и солнечной радиации в Ниафе, Южный Уэльс с 2018 по 2022 годмесяцы = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]относительная_влажность = [4.2, 4.3, 4.7, 4.6, 4.0, 4.0, 3.7, 3.4, 3.4, 3.3, 3.1, 3.5]  # Выборочные значения из MCWBR_DB или подобногосолнечная_радиация = [0.84, 1.65, 2.81, 4.35, 5.36, 5.45, 5.45, 4.34, 3.29, 1.94, 1.03, 0.65]  # Выборочные значения из RADIATION_AVG# Создание DataFramedata = pd.DataFrame({'Месяц': месяцы, 'Относительная Влажность': относительная_влажность, 'Солнечная Радиация': солнечная_радиация})# Построение графикаplt.figure(figsize=(10, 6))sns.scatterplot(data=data, x='Относительная Влажность', y='Солнечная Радиация')plt.title('Корреляция между Относительной Влажностью и Солнечной Радиацией в Ниафе, Южный Уэльс (2018-2022 годы)')plt.xlabel('Относительная Влажность')plt.ylabel('Солнечная Радиация')plt.grid(True)plt.show()# Расчет коэффициента корреляции между относительной влажностью и солнечной радиациейcorrelation = data['Относительная Влажность'].corr(data['Солнечная Радиация'])correlation

Что разумно.

Хорошо, а что насчет сравнения нескольких местоположений? Сначала я добавил это в Инструкции (системную подсказку), чтобы быть ясным…

Если запрашивается о сравнении нескольких местоположений, вызывается API для каждого местоположения для получения данных.

Теперь давайте спросим: “Был ли Свальбард в прошлые 5 лет более влажным, чем Баргоед, Уэльс“…

Поскольку для работы API необходимы широта и долгота, GPT подтверждает подход. Если бы мы настроили геокодирование API в качестве действия, это не было бы обязательно, но пока достаточно использования центральных координат.

GPT вызывал API для обоих местоположений, извлекал данные и сравнивал…

Я вырос в Баргоуде и могу честно сказать, что это очень дождливое место. При прямом вызове API значения выше верные.

Ограничения

В ходе этого анализа возникли несколько проблем.

Во-первых, кажется, что есть ограничение на количество взаимодействий с GPT-4 в день. Это было достигнуто через час или два тестирования и, казалось бы, это ниже опубликованных ограничений GPT-4, поэтому возможно, это связано с экспериментальной версией GPT. Это может предотвратить запуск в продакшн, но можно надеяться, что это будет решено в рамках запуска GPT Store.

Производительность иногда может быть немного медленной, но, учитывая, что GPT вызывает внешнее API и выполняет код, это не является неразумным. Пользовательский интерфейс очень хорош, четко указывая пользователю, что происходит.

Стоимость – это неизвестно или, по крайней мере, мы не могли заметить значительного влияния на затраты, но продолжим отслеживать это. GPT генерирует код и анализирует обширные ответы от API, поэтому токенные затраты могут стать мешающим фактором для многих организаций при их использовании.

Выводы и дальнейшая работа

В данном анализе мы использовали только «индикаторы» конечных точек API NASA Power. Не составит большого труда использовать все конечные точки NASA Power и включить геокодирование для создания действительно всестороннего климатического чатбота.

GPT предлагает способ разработки AI-агентов последнего поколения с помощью низкоуровневого кода, способных автоматически взаимодействовать с API и генерировать код для выполнения анализа данных. Они могут иметь революционное значение, мы смогли создать довольно продвинутый климатический чатбот всего за несколько часов, не написав ни одной строки кода!

Они еще далеки от совершенства, но UX конфигурации очень хорош, однако есть области, такие как отчет об ошибках API, где пользователю остается только догадываться. Настройка внешнего API требует технических знаний, а некоторые API могут не иметь необходимого openapi.json, что делает их более сложными для реализации. Стоимость также может быть запретной, но пока сложно сказать, так как GPT находится на стадии предварительной версии. Как всегда, при любом применении LLM большая часть работы будет заключаться в обеспечении фактической правильности и типичных процессов проектирования и инжиниринга, которые, конечно же, применимы для любого программного проекта.

GPT потрясающие, но они еще не волшебство… пока что.

Справочная информация

Для Предсказания мировых ресурсов энергии NASA (POWER): «Эти данные были получены из центра исследования NASA Лэнгли (NASA Langley Research Center (LaRC)) и финансируются через программу научных и прикладных исследований NASA Earth Science/Applied Science Program».