Function Callingとは
生成AI界隈でのFunction callingを知ってますか?単にあるプログラムが関数を呼び出すわけではありませんね。GPTを代表とする生成AI(以降AI)が、ユーザーまたはClientとなるプログラムからの問い合わせに応じて何を実行するかを決める方式をFunction callingと呼びます。Function callingにより、AIが呼び出すFunctionを選択することができます。
人間とAIの以下の会話で説明しましょう。
[人間]:明日大阪へ出張するから、梅田駅の近くのホテルを予約して。
[AI](旅行サイトのWebAPIを実行し、梅田駅付近のホテルを収集)はい、〇〇ホテルと□□ホテルが空いています。それぞれ一泊の料金は・・・。〇〇ホテルにお一人、1泊でよろしいでしょうか。
[人間]:うん、それで。
[AI](旅行サイトのWebAPIを実行、予約処理実行)〇〇ホテルを予約しました。
[人間]:傘は必要かな。
[AI]:(天気予報のWebAPIを実行し、大阪の明日の天気を取得)明日の大阪は快晴の予報のため傘をお持ちになる必要はありません。
AIは人間が要求することを正しく認識したうえで、適切なWebAPIを実行することができています。これまで秘書がやっていた業務の一部を置き換えているようですね。
現時点では秘書ほど賢いAIや、AIに向けて適切なWebAPIを公開しているWebサイトは少ないと思われますが、Function callingがこのようなやり取りを実現するのに役立つ技術であるといえます。出張などの一般的な問い合わせに限らず、医療、プログラミング、教育、デザインなど幅広い領域でFunction callingが役立つと考えられます。
MVCからMVAへ
Microsoftも幾つかのセミナーでMVCからMVAを謳っています。Model-View-ControllerのControllerをAIに置き換えることで、より柔軟性を持ったシステムを構築できる可能性を示しています。(一方でAIをシステムに含めることで同じ入力に対する出力が一定でなくなるという副作用があり、適用する際に考慮が飛うようです)
AIが適切なModelを呼び分けることで、あらかじめどのモデルを実行すべきかプログラムとして記述する必要がなくなります。プログラマがあらかじめ定義するのはModelの役割と使い方のspec(OpenAPI形式など)を記述し、AIに対してendpointを公開するのみです。(認証をどうするかなど細かいところはありますが、MVCと概ね同様の考慮が必要)
2/20 の東京でのイベント:「MVC から MVA モデルへ:生成 AI を組み込んだ次世代 AI 駆動アーキテクチャ設計思想 / From MVC to MVA Model」
4/16 大阪でのイベント:「[A3] MVC から MVA モデルへ:生成 AI を組み込んだ次世代 AI 駆動アーキテクチャ設計思想」
OpenAIの例
さて、Open AIのdocにもFunction callingの項目があります。
OpenAI APIを使いながらFunction callingを使ってみましょう。