ChatGPTの新機能!Function callingでかわいいお天気お姉さんつくーる

はじめに

ChatGPTの新機能!Function callingを使って、かわいいお天気お姉さんを作りました!

Function callingのサンプルコードはここにあります。
https://platform.openai.com/docs/guides/gpt/function-calling

開発環境

  • Windows 10 PC
  • Python 3.10
  • OpenAI

導入

1.OpenAIのAPIキーを取得

2.One Call API 2.5のAPIキーを取得

参考まで

3.1回目のリクエストでユーザーの質問文からlocationを取ってきます。

function_call->argumentsの中にlocationが取り出せています!
{‘location’: ‘熊本市’}

4.このlocationを自作の関数get_current_weatherに渡します

5.get_current_weatherでは、ChatGPTにlocationの緯度経度をJSONフォーマットで答えてもらい、その緯度経度からOne Call APIを用いてリアルタイムの天気情報を取得します。

6.天気情報を取得したら、2回目のリクエストでかわいいお天気お姉さんの回答が返ってきます!

実行結果

gpt-3.5-turbo-0613

「ほーら、熊本市の新市街の天気です!今日はとっても元気いっぱいのお天気で、ぽかぽかと暖かいんだよ♪気温はなんと21.87℃だよ!外に出ると、心地よいそよ風が吹いて楽しい気分になれるはずだよ。お出かけの際は、軽いジャケットやカーディガンを忘れずに持っていってね!新市街で過ごす時間が、さらに素敵なものになりますように♪」

あってる!めっちゃいい!
353127009_963211768464738_5001238670099304683_n.jpg

gpt-3.5-turbo-16k-0613

「熊本市新市街の天気ですね!今日はとてもいい感じの天気で、28.9℃の暖かさですよ。空にはうすくて 可愛らしい雲が浮かんでいます。外に出かけるときは涼しいお洋服でおしゃれに決めてくださいね!」

gpt-4-0613

「こんにちは!熊本市の天気情報をお届けいたしますね。熊本市新市街は、今、ちょっとだけ雲がかかっ ています。でも、その薄いベールを通して、日差しがキラキラと地面を照らしていますよ♪そして、気 温は28.88度。ちょっぴり汗ばむ感じですね。でも、これがまさに夏の暑さ…!水分補給は忘れずに、楽しい一日をお過ごしくださいね。」

コード全体はこちら

追記

ChatGPT の Function calling で確実に JSON 形式で出力できるのかシュッと確認してみた

書籍の内容からタイトル・著者・参照元URLを出力させています。

GPT-4, GPT-3.5 の API を利用して JSON だけ生成する (Function calling)

あらかじめ設定しているFunction Callingのパラメーターの数がかなり多く、
「沖縄の 2023-06-15 の天気は?」から日付と緯度経度をJSONで出力させています。

私の記事では、1回目のFunction Callingで地名を出し、再度ChatGPTに地名から緯度経度をJSONフォーマットで答えさせていますが、その必要がないということです。1回目のFunction Callingの時点で “required”: [“latitude”, “longitude”] としておくことで、最初の会話の地名から緯度経度を出力してくれるでしょう。

ということでやってみました。

だいぶ簡単になりましたね!実行してみるとちゃんと動きました!

{‘location’: ‘熊本市新市街’, ‘longitude’: 130.71303, ‘latitude’: 32.81232}
(〒860-0863 熊本県熊本市中央区坪井3丁目4−4でした、まあ近い)

「熊本市の新市街の天気は、ふんわりとした雲が広がっていて、とっても爽やかな気候ですよ!気温は22.82℃で、ちょうどいい暖かさですね♪お出かけやお散歩するには最適なお天気ですので、楽しい一日をお過ごしくださいね♪」

めっちゃいい!時刻とか追加するともっといいかも!(2023/06/22 20:50 曇り 23°)

お疲れ様でした。

この記事を書いた人

azure-recipe-user