見出し画像

OpenAI の Function Calling を iOS アプリに組み込んで実験

OpenAI API を使ったチャットアプリをリリースしたら、すぐに公式 ChatGPT アプリがリリースされてしまった!なので、公式アプリと差別化を図るべく OpenAI の Function Calling を使う仕組みを iOS アプリに実装して実験してみた。 Function Calling については下記のサイトを参照してね。

OpenAI の公式サンプルコードにもあった天気の情報を取得する Function Calling の記述例ではなく、 openai-cookbook のコードの記述を Swift で実装した。天気の情報は、iOS 16 以降から利用可能になった WeatherKit を使った。アプリでの実際の動作は、以下の動画のようになった。入力は編集しているが、API からの応答は編集していないので実時間である。gpt-3.5-turbo-0613 のモデルを利用。

実験したのは、2023年6月19日月曜日なので、明日の天気の結果は間違っている。これは、Function Calling に記述したコードに「今日」や「明日」といった情報を求める記述がないからと思う。週末までの天気予報に関しては、期待通りの結果が返ってきた。

実際にやりとりしたチャットログは次のような内容となる。オレンジ色の箇所が Function Calling のやりとりである。function_call: を含む吹き出しが API からの要求で、次の吹き出しがアプリから API に送信した内容である。(アプリからの吹き出しの向きが違うのはまだ改良途中だから)
このデータに「今日」や「明日」といった情報がないため、「明日の天気」の問い合わせに対して間違った情報(正確には今日の天気の情報)を送ってしまった。 これは、WeatherKit の WeatherService.weather(for: location, including: .daily) の結果に対して、num_days の値が 1 であったために、最初のデータである「今日」の天気の情報を送ったからである。


明日の天気の Function Calling の内容

次に週末までの天気のチャットログの内容である。num_days の値が 5 であるので、今日から5日分の天気予報の情報を API に送っている。num_days の 5 という値を API 側でどのように推測したのか不明だが、月曜日から開始であれば平日は5日で正しい気がする。火曜日以降でも試してみる必要がありそうだ。


週末までの天気の Function Calling の内容

今までは天気についてのチャットはできなかったので、ほぼ期待通りの結果となって便利さが増した。Function Calling 用の記述をもう少し改良すれば、より完璧な天気情報のやりとりを行えると思う。他にも色々と面白そうなことができそうだけど、まだまだ理解が足りなくて思い付かない。Function Calling の使用例をもう少し調べてみて、何ができるのか理解する必要があるな。


この記事が気に入ったらサポートをしてみませんか?