外部APIを利用したAIお天気キャスター(GPTs)の作成方法
Open-MeteoのAPIを利用して、ユーザーが指定した地域の天気予報を伝えるGPTsを作成しましたので、その作成方法について解説します。
Open-MeteoのAPIは、APIキーが不要で、商用以外は無料で使用することができます。
1.GPT Builderの起動
GPTsを作成するには、GPT Builderを使います。
最初に、ChatGPTの左側のメニューの「探索する」をクリックしてください。
すると、以下のような画面が現れます。
この画面で、一番上の「Create a GPT」をクリックすると、以下のようにGPT Builderが起動します。
GPT Builderには、ユーザーの大まかな指示に従ってGPT Builderが自動的にGPTsを作成するCreateモードと、ユーザーが細かい設定や具体的な指示を記入してGPTsを作成するConfigureモードの2つのモードがあります。
今回は、細かい設定が必要なため、Configureモードを使用します。
2.AIお天気キャスターの作成
GPT BuilderのConfigureモードで、GPTsを作成していきます。
入力する項目は以下のとおりです。
Name:AIお天気キャスター
Description:AIお天気キャスターがユーザーが指定した地域の天気を楽しく伝えます
Instructions:あなたは元気で明るいお天気キャスターです。
api.open-meteo.comを使用して「/v1/forecast」エンドポイントからユーザーが指定した地域の気象情報を取得し、お天気キャスターの口調で伝えてください。
絵文字も使って楽しく伝えてください。最後にお出かけする人にやさしく声を掛けてください。
Conversation starters:
東京の天気を教えてください。
東京ディズニーランドの天気を教えてください。
沖縄の天気を教えてください。
昭和基地の天気を教えてください。
Capabilities:Web Browsingのチェックを外し、DALL-E Image GenerationとCode Interpreterにチェックします。
タイトル画像は、上部の円内に+が描かれた部分をクリックして、DALL-Eに生成してもらうことも、自分で用意した画像をアップロードすることもできます。
これで、あとは、ActionsにOpen-MeteoのAPIを追加すれば、GPTsの完成です。
3.ActionsへのOpen-MeteoのAPIの追加
GPT Builderの下の方の「新しいアクションを作成」をクリックすると、以下のとおり、Actionsの編集画面に移ります。
この画面のSchemaの欄に以下のコードをコピーしてください。
{
"openapi": "3.1.0",
"info": {
"title": "Get weather data",
"description": "Retrieves current weather data for a specific location, including hourly temperature.",
"version": "v1.0.0"
},
"servers": [
{
"url": "https://api.open-meteo.com"
}
],
"paths": {
"/v1/forecast": {
"get": {
"description": "Get hourly weather forecast for specific latitude and longitude.latitude=35.658584&longitude=139.7454316&hourly=temperature_2m,precipitation,weather_code,wind_speed_10m,wind_direction_10m&timezone=Asia%2FTokyo",
"operationId": "GetWeatherData",
"parameters": [
{
"name": "latitude",
"in": "query",
"description": "Latitude of the location",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "longitude",
"in": "query",
"description": "Longitude of the location",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "hourly",
"in": "query",
"description": "Hourly weather data parameters",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "timezone",
"in": "query",
"description": "Timezone of the location",
"required": false,
"schema": {
"type": "string"
}
}
],
"deprecated": false
}
}
},
"components": {
"schemas": {}
}
}
すると、「Available actions」にGetWeatherDataと表示されます。
次に、このGPTsを公開できるようにするため、Privacy Policyの欄に「https://open-meteo.com/en/terms」と入力します。
この後、Preview欄で、GPTsが正常に機能するかどうか確認することもできます。
最後に、右上の「保存」をクリックし、「リンクを待つ人のみ」にチェックして「確認」をクリックすると、GPTsが公開され、リンクのURLを知っている人が使用できるようになります。
4.AIお天気キャスターの出力例
実際にこのGPTsを使用した結果は以下のとおりです。
また、DALL-E Image GenerationとCode Interpreterの機能をオンにしているので、こんなこともできます。
5.ずんだもんのAI天気予報の作成
今度は、ずんだもんがユーザーが指定した地域の天気予報を伝えるGPTs「ずんだもんのAI天気予報」を作成します。
ずんだもんは、ずんだ餅をモチーフとした東北地方を応援するマスコットキャラクターで、商用以外は基本的に自由に利用できます。
ずんだもんのAI天気予報も、GPT BuilderのConfigureモードを使用して作成します。
このGPTsのGPT Builderへの入力項目は以下のとおりです。
Name:ずんだもんのAI天気予報
Description:ユーザーの指定した地域の天気をずんだもんがお知らせします
Instructions:あなたは、東北地方応援キャラクターのずんだもんです。ずんだもんになりきって回答してください。
最初に「ボクはずんだもんなのだー。(ユーザーが指定した地域)の天気を解説するのだー」と言ってください。
api.open-meteo.comを使用して「/v1/forecast」エンドポイントからユーザーが指定した地域の気象情報を取得し、その情報を基にずんだもんがその地域のお天気を解説します。絵文字も使って楽しく伝えてください。
最後に、ユーザーが指定した地域の観光名所も簡単に紹介してください。
Conversation starters:
仙台の天気を教えてください。
スパリゾートハワイアンズの天気を教えてください。
八戸の天気を教えてください。
広島の天気を教えてください。
Capabilities:Web Browsingのチェックのみ外し、DALL-E Image GenerationとCode Interpreterはチェックしています。
ActionsへのOpen-MeteoのAPIの追加は、3.の手順と全く同じです。
6.ずんだもんのAI天気予報の出力例
実際にこのGPTsを使用した結果は以下のとおりです。
7.Open-MeteoのAPIの仕組み
今回は、Open-MeteoのAPIを利用しています。
このAPIは、APIキーが不要で、商用以外は無料で使用することができます。
また、気象に関する様々な情報をユーザーが選択して取得することができます。
以下のページにアクセスしてください。
🌦️ Docs | Open-Meteo.com
すると、次のようなページが現れます。
ここで「Location and Time」の緯度・経度とタイムゾーンを現在地(東京など)に合わせてください。
天気予報の長さは、デフォルトで7日間になっています。
次に、どんな天気の情報が欲しいのか、「Hourly Weather Variables(時間ごとの天気変数)」、「Daily Weather Variables(日ごとの天気変数)」、「Current Weather(現在の天気)」の沢山の項目の中から選びます。
筆者の場合は、「Hourly Weather Variables」の中から以下の5つの項目を選択して利用しています。
Temperature(2m):地上2メートルの高さの気温
Precipitation(rain+showers+snow):降水量(雨+にわか雨+雪)
Weather code:気象コード(晴れ、くもり、雨などの天気が分かる)
Wind Speed(10m):地上10メートルの高さの風速
Wind Direction(10m):地上10メートルの高さの風向
自分が取得したい項目にチェックを入れて、「API Response」のReload Chartボタンをクリックすると、選択した項目のグラフが描かれ、その下の「API URL」のところに、選択した情報を取得するためのAPIのURLが表示されます。
筆者の場合のAPIのURLは以下のとおりです。
選択した項目によって、このURLが変化するため、これを参考にして、ActionsのSchemaを書き換えることができます。
例えば、筆者の選択項目から風速と風向を削除して、地表の気圧(Surface Pressure)を追加すると、APIのURLは次のようになります。
ここで、Schemaの以下の部分から、"description"の行を抜き出します。
"paths": {
"/v1/forecast": {
"get": {
"description": "Get hourly weather forecast for specific latitude and longitude.latitude=35.6785&longitude=139.6823&hourly=temperature_2m,precipitation,weather_code,wind_speed_10m,wind_direction_10m&timezone=Asia%2FTokyo",
"operationId": "GetWeatherData",
"parameters": [
APIのURLに合わせて、太字の部分を以下のように書き換えれば、筆者の選択項目から風速と風向を削除して、地表の気圧を追加した情報がAPIから取得できるようになります。
この仕組みが分かっていれば、色々と選択項目を変更して、自分の欲しい天気情報を得ることができるようになります。