ChatGPT APIの回答を元に適切な処理を行うfunction callingについての基礎知識(初心者向け)
ChatGPT APIを利用する時にGPTから返ってきた回答を元に、次の処理を行わせたい場合があります。そのような時に使えるのが、function callingという機能です。
この記事では、背景知識としての一般的なITシステムの仕組みの説明も含めて、function callingの基本的な説明を行います。
一般的なAPI呼び出しとCallbackの概要
まず、一般的なAPI(Application Programming Interface)呼び出しとCallback(コールバック)関数について理解することが重要です。
呼び出しに応じて、天気や株価情報を返してくれる(Web)APIがあるとします。(Web)APIから返ってきたレスポンス(回答)を元にCallback関数が呼び出され処理を行います。
例えば、レスポンスに含まれる株価情報がデータのみの場合、それを元にCallback関数でグラフを描画して、画面に表示したりします。
Callback関数は1つとは限りません。レスポンスの内容に応じて呼び出すCallback関数を切り替えることも出来ます。
あるいは、呼び出したCallback関数内で、どの機能を次に呼び出すかの判断を行うようにします。
下の図は、(Web)APIを呼び出して、返ってきたレスポンスを元に処理を行う一般的なフロー図です。
API呼び出し: アプリケーションが外部サービスに対して何らかの操作を要求します。
APIサーバー: 外部サービスがその要求を受け取り、必要な処理を行います。
レスポンス: 処理が完了した後、結果がアプリケーションに返されます。
Callback関数: レスポンスを受け取った後、特定の関数(コールバック関数)が自動的に実行されます。
結果の処理: コールバック関数内でレスポンスに基づいた処理が行われます。
ChatGPT APIのFunction Calling
ChatGPT APIのfunction calling機能は、この一般的なコールバック処理をさらに拡張したものです。この機能を使うと、API呼び出し時に特定の関数定義を渡すことができます。そして、ChatGPTからのレスポンスには、どの関数をコールバックとして使用すべきかの情報が含まれます。
通常のAPIにおけるCallback関数の処理との違いは、どのCallback関数を呼び出すかの判断をChatGPT側に任せられる、という点です。
つまり、通常のプログラミングでは、判断させるのが難しい(条件分岐の設定が難しい)文章の内容(文脈や含まれる情報)に基づいて、どのようなCallBack関数を使用するかを判断させることが出来る、というのが、ChatGPT APIのfunction calling機能の大きなメリットです。
使い方の例
関数定義の送信: APIリクエストを作成する際に、特定の関数(例:getWeatherInfo)の定義を渡します。
レスポンスの受信: ChatGPTからのレスポンスには、コールバックとして使用すべき関数(例:getWeatherInfo)の情報が含まれます。
関数の実行: レスポンスをパースして、指定された関数(getWeatherInfo)を実際に呼び出します。
このように、function calling機能を使用することで、ChatGPT APIをより柔軟に活用することが可能です。