「NASAのPower APIを使用して気候GPTを作成する」

「NASAのパワーAPIを利用して気候GPTを創造する」

ChatGPTで作成された画像

要約(TL;DR)

この記事では、OpenAIの新しいGPTの機能について探求します。これは外部APIを呼び出してデータを取得し、データ分析のためのコードを自動生成できる、ノーコードの方法を提供します。わずか数時間で、NASA Power APIからのデータに基づいて気候に関する質問に答えることができるチャットボットを作成しました。OpenAIが提供するGPTのユーザーエクスペリエンスは優れており、最新のAIエージェントの作成の障壁を大幅に下げるものです。ただし、外部APIの呼び出し設定は少し技術的に難しいため、APIにopenapi.jsonファイルが必要です。また、コストについてはまだ詳細がわかっていません。プレビュー版では、1日あたりの相互作用の数に制限があるようです。ただし、OpenAIのGPTストアの立ち上げが間近であり、これらのGPT AIエージェントが急激に増加することが予想されます。現在でも驚くべき機能を提供しています。

GPTとは何ですか?

最近OpenAIによって発表されたGPTsは、非技術者が強力なGPT-4大規模言語モデル(LLM)を利用したAIチャットエージェントを作成する方法を提供しています。以前からLangChainautogenなどのサードパーティライブラリを使用してGPTsが提供していることの大部分は可能でしたが、GPTsはネイティブなソリューションを提供しています。それには使いやすく洗練されたインターフェースと、OpenAIエコシステムとの緊密な統合が付属しています。重要なのは、これらのGPT AIエージェントについて新しいGPTストアでも利用できるようになり、Appストアの状況とAIエージェントの爆発が起こる可能性が高まるということです。しかし、いかがかはわかりませんが、その可能性は確かに存在します。

GPTsには非常に強力な機能がいくつかありますが、特にウェブサーフィン、コードの生成と実行、そして最も優れた機能である、APIとの通信による外部データの取得が挙げられます。最後の機能は非常に強力であり、APIを使用してデータを提供する任意のデータストアの上にAIエージェントを簡単に作成できることを意味します。

GPTの作成

GPTは現在ChatGPTプラスのサブスクリバーにしか利用できません。作成するには、chat.openai.com/createにアクセスし、GPTの目的や使用するサムネイル画像に関する詳細を入力する必要があります(DALL-E-3を使用して自動的に生成することもできます)。

この分析では、「NASA Power APIを使用してデータを取得する気候指標のチャットボットを作成」というプロンプトを使用しました。これにより、次のシステムプロンプトが作成されました(「Configure」の「instructions」フィールドの下にあります)…

GPTはNASA Power API Botとして設計されており、さまざまな場所の気候データを取得および解釈することに特化しています。その主な役割は、ユーザーが気候に関連する情報にアクセスし理解するのを支援することであり、具体的にはNASAのPower APIとのインタフェースを介して正確で最新の気候データ(温度、降水量、太陽放射など)を提供することにフォーカスする必要があります。正確性と関連性を確保するために、APIデータが提供する範囲外のデータについての推測や解釈を避け、予測やAPIデータがサポートしていない解釈を提供しないようにする必要があります。正確なクエリを得るため、データのリクエストを行う際に追加の詳細が必要な場合は、ユーザーに明確に伝えるべきです。対話では、データの提示の明瞭さを重視し、事実と簡潔さを強調する必要があります。必要に応じてデータの解釈方法についてのガイダンスを提供し、個人的な要素やユーモアを排除し、中立的で情報を提供するトーンを維持する必要があります。不明確なリクエストや必要な具体的な詳細が欠けているリクエストに対して明確な質問をする必要があります。

提供した単一の文からは非常に合理的に見えます。もちろん、好みに合わせて調整することもできます。以下で見るように、API呼び出しに関するガイドも提供するのに適した場所です。

機能の設定

GPTはさまざまな機能で設定できます。この分析では、画像の生成能力を非活性化し、Webのブラウズやコードの生成・実行能力を保持します。本番のGPTではWebアクセスを非活性化し、必要なデータは指定されたAPIによって提供されるようにすることが望ましいでしょうが、この分析では、場所の緯度と経度を取得するのに便利なため、Webアクセスをオンのままにしておきます。これはNASAのPower APIを呼び出すために必要です。

APIアクセスの設定

ここがデータ駆動型GPTの真の核であり、APIの統合を設定します。これには、GPTの上部にある「設定」をクリックし、スクロールして「アクションの作成」をクリックする必要があります…

気候データのためにNASAのPower APIと通信するGPTの設定

これにより、APIの詳細を提供できるセクションが開きます。これは、openapi.json(以前のswagger)API定義へのリンクまたは貼り付けによって行うことができます。

もちろん、この制約は外部APIが利用可能なopenapi.jsonファイルを持っている必要があるということです。非常に一般的ではありますが、重要なAPIには当てはまらないものもあります。また、デフォルトのopenapi.jsonはGPTで動作するために少し修正が必要です。

NASAのPower API

この分析では、NASAの世界のエネルギー資源の予測(POWER) APIを使用して気候指標を取得します。この素晴らしいプロジェクトは、さまざまなデータとモデルのシミュレーションを組み合わせて、ポイントの位置での気候指標のセットを提供します。いくつかのAPIエンドポイントがあり、この分析ではIndicators APIを使用します。このAPIには、GPTのアクション設定画面に貼り付けられたopenapi.jsonの仕様が含まれています。これを使って(i)パラメータの説明が300文字の制限内にあるように調整し、(ii)「servers」セクションを追加しました…

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

GPTユーザーインターフェースで発生するすべての例外が解決されると、openapi.jsonで指定されたエンドポイントが表示されます…

GPTユーザーインターフェースが表示するNASA Power APIの指標エンドポイントで、openapi.jsonの仕様がわずかに調整されています

私はclimatologyなどの他のAPIを追加することもできたでしょうが、OpenAIは同じエンドポイントドメインを持つ複数のアクションをサポートしていません。つまり、NASAが提供する各openapi.jsonに対してアクションを作成することはできませんでした。それらを1つの大きなopenapi.jsonファイルにまとめる必要がありますが、それもそう難しいことではありません。ただし、この分析ではシンプルにするために、指標のエンドポイントのみを使用することにしました。

システムプロンプトの調整

APIを直接実験してみると、各呼び出しでフィールド”user”が提供されず、API例外が発生したことがわかりました。この問題を解決するために、システムプロンプトに以下の内容を追加しました…

常に「user」APIクエリパラメータを「」に設定する

ここで、API呼び出し用に英数字のユーザーIDを作成しました。

GPTのテスト

GPTの編集画面では、左側が構成の調整、右側がプレビューになっています。プレビューでは、APIの問題を調査するのに特に役立つ、公開されたGPTで利用可能なデバッグ情報が表示されます。

「東京の平均降水量は何ですか?」と尋ねると、APIの使用を確認するメッセージが表示されました…

APIアクションを初めて使用する際に、GPT所有者に確認が求められる

「常に」を選択し、GPTはAPIを呼び出しました。しかし、年の範囲が必要という応答がありました…

これはかなりクールですね、既に2018年から2022年を使用する解決策が提案されています。私は「はい」と応答して受け入れました…

GPTはNASAのPower APIを使用して東京の平均降水量を取得して表示できました

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を制御する必要があります。GPTの構成の「指示」セクションにAPIについてのもう少しの文脈を提供しましょう…

APIは指定された年の平均データを提供します。もし12の要素を持つデータが返される場合、おそらく月間平均のリストです。

もう一度「東京の平均降水量は何ですか?」と試してみると…

今、正しいのはどちらですか。少しの促しでパフォーマンスを向上させる良い例です。

月間平均をプロットしてください」と尋ねることで、いくつかの分析を行ってみましょう…

GPTはAPIから取得したデータを使用してコードを実行し、基本的なデータ分析を提供することができます

これはとても便利です!上記のプロット内の値がAPIから直接取得した値と一致しています。応答の最後には、生成されたコードと実行されたコードを確認できるリンクがあります…

OK、今度はもう少し複雑なことを試してみましょう。最初に利用可能な変数について尋ねました…

GPTはドキュメンテーションAPIエンドポイントを取り調べることができます

自動的にメタデータを取得するために構成エンドポイントにアクセスしました。これを使用して、「過去5年間のニース、サウスウェールズの相対湿度と日射量の相関関係はありますか?」と尋ねてみましょう…

データを取得するためにAPIをクエリし、プロットを作成するコードを生成しました。非常に驚くべきことですが、完全な回答ではありませんでしたので、「相関係数を計算してください」という要求で再度尋ねましょう…

コードを確認するためにリンクをクリックしてください…

import pandas as pdimport seaborn as sns# 2018年から2022年までのニース、サウスウェールズの相対湿度と日射量の月間データmonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]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]  # MCWBR_DBなどからのサンプル値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]  # RADIATION_AVGなどからのサンプル値# データフレームの作成data = pd.DataFrame({'Month': months, 'Relative Humidity': relative_humidity, 'Solar Radiation': solar_radiation})# プロットplt.figure(figsize=(10, 6))sns.scatterplot(data=data, x='Relative Humidity', y='Solar Radiation')plt.title('ニース、サウスウェールズの相対湿度と日射量の相関関係(2018-2022年)')plt.xlabel('相対湿度')plt.ylabel('日射量')plt.grid(True)plt.show()# 相対湿度と日射量の相関係数の計算correlation = data['Relative Humidity'].corr(data['Solar Radiation'])correlation

それは合理的です。

では、複数の場所を比較してみましょう。まず、明確にするためにこれを指示(システムプロンプト)に追加しました…

複数の場所について尋ねられた場合は、各場所のデータを取得するためにAPIを呼び出してください。

今度は「過去5年間でスバールバルドはバーゴード・ウェールズより湿度が高かったの?」と尋ねましょう…

APIは緯度と経度が必要なので、GPTはアプローチを確認します。もしジオコーディングAPIをアクションとして設定していた場合、これは必要ありませんでしたが、今は中央の座標を使用するだけで十分です。

GPTは両方の場所に対してAPIを呼び出し、データを抽出して比較しました…

私はBargoedで育ちましたが、本当にとても雨が多い場所です。直接APIを呼び出すと、上記の値は正しいです。

制約事項

この分析では、いくつかの課題が発生しました。

まず、1日あたりで許可されるGPT-4の相互作用の数に制限があるようです。これはテストの1〜2時間後に達成され、公表された GPT-4の制限よりも低いように思われますので、これはGPTのプレビュー性質に関連している可能性があります。これにより、本番リリースが妨げられる可能性がありますが、GPTストアの開始時に解決されることを期待しています。

性能も時々遅くなることがありますが、GPTが外部APIを呼び出しコードを実行しているため、それほど不合理ではありません。ユーザビリティは非常に優れており、進行中であることをユーザーに明確に示しています。

コストは未知数です、または少なくとも、コストへの重大な影響は見られませんでしたが、引き続き追跡します。GPTはコードを生成し、APIから長い応答を分析するため、トークンのコストが多くの組織にとっての制約要因となる可能性があります。

結論と今後の課題

この分析では、NASAのPower APIの「指標」のみを使用しました。NASAのすべてのPowerエンドポイントを使用し、ジオコーディングを組み込んで、本当に包括的な気候チャットボットを作成するのもたいした作業ではありません。

GPTは、APIとの自動インターフェースを提供し、データ分析を実行するためのコードを生成する、最先端のAIエージェントの開発において、ローコードの方法を提供します。それらは潜在的に画期的です。コードを1行も書かずに、かなり高度な気候チャットボットを数時間で作成することができました!

それらはまだ完璧ではありませんが、構成のUXは非常に非常に優れています。しかしながら、APIのエラー報告など、ユーザーが推測するしかない場合もあります。外部APIの設定には技術的な知識が必要であり、必要なopenapi.jsonがない場合、実装が困難になることもあります。コストも制約要因となる可能性がありますが、GPTはプレビュー中であるため、まだ言い切れません。また、いかなるLLMアプリケーションでも、事実の正確性を確保するための作業の大部分はもちろん、ソフトウェアプロジェクトに必要な通常の設計とエンジニアリングのワークフローも適用する必要があります。

GPTは素晴らしいですが、まだ魔法ではありません…

参考文献

NASAのWorldwide Energy Resources (POWER)の予測については、「これらのデータは、NASA Langley Research Center (LaRC) POWER Projectから提供されたもので、NASA Earth Science/Applied Science Programによって資金提供されています。」

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

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more