この文書では、先の文章「ChatGPTで比較的曖昧な指示「電気つけて」でスマートプラグを制御する (1)」をChatGPT function-callに対応させることでさらに安定に物理デバイスへの指示が出来たことを説明します。

先日ChatGPTに追加された function-callingは自分的には結構多目的に使えて便利です。

OpenAI Platform

これを使って今まで文章認識で無理矢理判定文字列にしていた物理デバイス制御を大幅に安定化できました。

「user:居間の電気を付けて」+「system:この文が居間の電灯を付ける意味ならば、”はい”を返してください」→ChatGPT complation

ChatGPT 返答「assistant:居間の電灯を付ける意味のようです」

→プログラム的に「はい」が含まれているか判定(説明文章が返ってきて、含まれてないことが多々ある。。。)

ここに合わせてJSONで記述した関数定義を渡すと「ChatGPT側が必要そうなら、呼び出す関数引数」を準備して返す。それが関数呼び出しかどうかをプログラム判定してそれを実行する。実行結果をcomplationの会話のようにChatGPTに返す。その結果をcomplationして返事をしてくれる

「user:居間の電気をつけて」+「func:”living_light_on”,説明:”居間の電灯を付けます”」→ChatGPT complation

ChatGPT 返答「function call:”living_light_on”」

→プログラムでfunction calllを判定して、スマートプラグの居間の電源をオンにする

「func:”居間の電灯を付けました”」→ChatGPT complation

「assistant:居間の電灯をつけましたよ」

が実現できる(実際にはfunctionの説明や返答文は平易な英語を使用)。

ここで面白いのは「functionの説明に記述した機能を、まるでChatGPTが元々持っていたように振る舞うこと」です。

ChatGPTは自然言語処理に優れた機能を持ち、含意を理解して外部デバイスを操作することができます。例えば、比較的曖昧な指示である「電気つけて」という指示でも、ChatGPTはそれで電気機器の操作なのかを判定でき、それに応じてスマートプラグを制御することができます。

思惑としては亭主関白風「おい、あれ!」で何でも操作できることが狙いですが、実際には「おい、あれ」で行動を判定するにはさらに多い前提条件の提示が必要なので、今回は「主電源を入れて」「電気をつけて」「電気をオンして」など、意味はぶれないがしばしば言い回しがぶれるようなケースでも指示が働くレベルです。

https://miro.com/app/board/uXjVMZQBrag=/?share_link_id=969793638739