function callingを試してみる
原宿ぽむ選手撮影の「ぽむとれーと」が届いた。被写体は坂崎ユカ選手。たかがポートレート、なんて思ってた時期が私にもありました。
function callingの実装
今日は1日かけてFunction Callingの実装を試す。あとで絶対にブログに書こうと思うけど、すこしメモを。
たとえば「今日の天気を教えて」みたいな命令をしたいとき、ChatGPTは今日の天気情報を持っていないし、そもそも「今日」が何日かも知らない。
このような「まだできないこと」を補完してあげられるのがfunction callingなのでは、という理解。
ゆえに、
- 今日の日付を取得する
- 指定された天気を調べるAPIを呼び出す
という2つの関数をfunction callingとして利用できるようにする。そうすると、次のような感じでAIが処理してくれる
AIの処理イメージ
今日の天気を教えてほしい
まず今日の日付を知りたいから、今日の日付がわかる関数を呼び出そう…今日は2023年8月27日なのか。
2023年8月27日の天気を教えてほしい
この日の天気に関する情報は、天気を調べるAPIを呼び出せばよさそうだ。日付は2023年8月27日…JSON形式のデータが得られたぞ。
2023年8月27日の天気を教えてほしい。天気の情報は{JSON形式のデータ}を参照。
これなら返答できるな。返答しよう。
感想
このとき大事なのは「今日の天気を取得する関数」を作ってはいけないのだろう、ということ。通常の設計と同様に、無駄な依存関係は省くべきだ(※そのうえで複数のfunctionをまとめて利用したいケースはあるかも、と思っている)。
このあと画像生成のfunctionも追加したことで、「今日の天気をイラストで表して」みたいなことも回答してくれるようになった。
これの凄いところは、自分しか欲しくない機能を自分で作れるところだと思う。
たとえばNotionで管理しているデイリーログのページに何かを追加してほしい。そのための関数をOpenAIが用意してくれることはありえない。でも自身で実装することは簡単にできる。
前に「多くの情報をひとつに集めることが重要」と書いたけれど、さらにその確信を深めた。せめてAPI経由ですべての情報にアクセスできるべきだ。「めちゃくちゃ便利だし内部にAI機能も設けられているけれど、外部サービスと自由に連携できない」というサービスは、すくなくともAI目線ではもう使い物にならないサービスになるかもしれない。
※今日の天気を表したイラスト。プロンプトさえ改善すれば、結構いい感じになるのではと夢見ている。