2023年06月09日
kintone用ChatGPTプラグインでプログラマは路頭に迷えるか
こんにちは、キン担ラボの本橋です。
kintoneプラグインを作っていると、あれもこれもプラグイン化したくなる衝動に駆られることがあります。ハンマーを持って全てが釘に見えた状態です。そんなときにChatGPT APIの使い方を知ってしまい、嬉々としてその釘をkintoneに打ち込んでみた実験記録です。
ChatGPTは何か?
ところでChatGPTは会話が成立する人工知能ですよね。これを別の側面から見ると『自然言語を理解するソフトウェア』です。
自然言語というのは、僕らみたいな天然知能同士が会話をするために使っている、たとえば日本語や英語のような言葉です。これまで人間はコンピューター言語を使わないとコンピューターと会話ができませんでした。そこに自然言語で会話できるように登場した通訳がChatGPTというわけです。
この天然知能とコンピューターをつなぐ通訳(プログラミング)が多くのプログラマのお仕事でした。なのでChatGPTが通訳者として登場したことで仕事がなくなるぞーと騒ぎたくなる気持ちもわかります。
一緒になって騒いでみたいので、試しに僕の仕事を肩代わりさせてみたいと思います。
実験してみた
今回試したのは、「自然言語処理」と呼ばれるテクノロジーをChatGPTにやらせてみようという実験です。自然言語処理とは、たとえば「以下の文章を読んで作者の気持ちを一言で表現しなさい」のようなもの。文章を読んで、短くまとめれば「要約」、主題を一言で表せば「トピック抽出」、作者の気持ちを代弁すれば「感情抽出」です。
作者の気持ちを和暦で答えよ
まずはわかりやすいところで日付の変換をさせてみましょう。kintoneカスタマイズでも頻出処理であるところの和暦西暦変換です。kintoneは標準だと西暦しか扱えません。
kintoneの日時フィールドから文字列化した「1979年8月2日 18時30分」という西暦表現のテキストを、「昭和54年8月2日」という文字列に変換してもらいたいと思います。kintone的には、この後のスナップショットの中にある自動計算フィールドを入力として、変換結果を出力フィールドに書き出します。
プロンプト
このあとに続く「YYYY年M月d日 H時m分」形式の日時表現から、西暦を和暦に変更して日付とともに出力してください。時刻は不要です。和暦は明治、大正、昭和、平成、令和のいずれかです。「令和WW年 M月d日」と出力してください。
お見事、「出力フィールド」に昭和の年月日が出力されました。
先日『日時表現から日付だけを抽出したい』というご依頼を頂いてプラグイン化したことがありました。ChatGPTを経由すればJavaScriptで処理を書かなくとも「こんな処理をお願いします!」と自然言語でプロンプトすれば叶えてくれるわけです。
順当に僕の仕事が一つ消滅しました。
作者の気持ちをスパム判定せよ
届いたメールがスパムかどうかを判定することはできるでしょうか。ためしに、あからさまなスパムメールの本文を入力テキストフィールドに貼り付けて、ChatGPTに以下のプロンプトで判断してもらいました。
プロンプト
以下のメールが届きました。このメールがスパムであるか判定して、10をスパムとして10段階評価で判定した点数を1行目に「スパム度: xx点」と出力してください。その次に空行を一行挟んで、なぜそのように判定したかを説明してください。
スパム度を10点満点で判定して、なぜそのスコアになったかの説明をしてくれました。
Webフォームとkintoneを連携してお使いの方も多いかと思います。入ってきたお問い合わせ文章のスパム度が高得点であるとき、その問い合わせは無視してもよさそうです。中身を読まなくてもお問い合わせの事前処理が可能になりました。
以前、Webフォームからの問い合わせを自然言語処理ライブラリを使ってサーバーサイドで分析をして適切な担当者に振り分けるkintone外部連携を作成したことがありましたが、今後はChatGPTにお願いすれば事足りますね。
またしても僕の仕事をAIに奪わせることに成功しました。
作者の気持ちを他のコンピューターに伝えよ
冒頭で自然言語とコンピューター言語について書きましたが、ChatGPTはコンピューター言語も得意です。ChatGPTにコンピューター言語を話してもらうこともできるわけです。ここではJSONというデータ形式で話してもらいましょう。
ChatGPTがJSONで話してくれれば、自分が作った他のプログラムとChatGPTを直接会話させることもできます。JSONで返してくれとプロンプトしてみましょう。
プロンプト
以下のメールが届きました。このメールがスパムであるか判定して、10をスパムとして10段階評価で判定した点数と、なぜそのように判定したかを説明して、
{ "chatgptkintone": { "spam-score": N, "description": "スコアについての説明" } }
というjsonを出力してください。
どこに出しても恥ずかしくないJSONで返してくれました。
ChatGPTからのレスポンスがJSONであれば、それをプラグイン側で受け取って、あれこれして、kintone上の適切なフィールドに振り分ける、みたいな処理につなげることもできます。その手の細かいお世話はプログラマの得意とするところです。
AIが奪った仕事を返してくれた瞬間です。
作者の名前を姓と名に分割せよ
kintoneに限った話ではありませんが、姓名をまとめて格納しているデータから姓と名に分割したい、という要望もよくあります。これは難題です。正直言って人間に判断させたって分からんものは分からない。時代を遡れば源九郎義経とか名前のルールも違ってきます。
細かいことは置いといてChatGPTにお願いしてみました。
プロンプト
この後に続く名前の姓名を分割して、男性か女性か推測してください。推測結果は、「姓/名(性別)」の形で一行ごとに出力してください。
きっちり分割してくれています。分かりにくそうな名前にも成功してますね。
もしこの姓名分割を従来の手法でプログラミングしようとすると、15万~30万件(応相談)くらいある名字の辞書を使って判定することになります。できないことはないですが、サイトウさんやワタナベさんのように、同音の漢字が多い姓を考えると遠い目になります。余談ですがモトハシの橋の字も
だったらしいです。
それはさておき、遠い目をしたくなるような仕事もChatGPTにまかせてしまうことができそうです。もし間違ったとしてもChatGPTの責任です。間違いを許容する社会への第一歩です。
路頭に迷うというよりは「プログラマのできることが増えた」事態になってきましたね。
本当に路頭に迷えるか?
ChatGPTはAPIがあるのでソフトウェア部品の一つと見立てられます。自然言語処理がAPI呼び出しで扱えるようになったとも言えます。プログラマの処理できる対象が自然言語にも広がったので、路頭に迷うどころか仕事が増えたんじゃないでしょうか。
いま僕らが手がけているような仕事はじゃんじゃんAIに肩代わりさせて、AIという新しいハンマーを存分に振り回しましょう。
釘はどこだ!
githubでプラグインを公開しました
ChatGPTとkintoneを連携させると、これまで難しかったいろんな自然言語処理のタスクを簡単にkintoneに組み込めることが今回の実験でわかりました。
https://github.com/motohasystem/KintoneChatGPTPlugin
ここまでの実験で使ったkintoneプラグインはgithubで公開しています。すぐにお試しいただけるzipファイルもあるので、良かったら試してみてください。この記事にある実験はver.0.3でお試しいただけます。(0.4から設定画面が変わりました
https://github.com/motohasystem/KintoneChatGPTPlugin/tree/main/dist
もっと高度なChatGPT連携をさせたい、とか、こんな課題を抱えているのだけどAI連携で実現できないか、とか、そんなご相談もお待ちしています。ぜひキン担ラボまでお問い合わせください。