問題解決支援ツール「SocialBooster Lite」にChatGPTを組み込んでみた
TwitterもNoteもQiitaもChatGPTの話で持ち切りですね。半信半疑だったシンギュラリティがいよいよ間近に迫っていると実感させられます。
ChatGPTすごい
ChatGPTがもたらしたAIブームとこれまでのAIブームとの違いは,その身近さにあるのではないでしょうか。これまでの「AI」といえば,「太平洋を隔てた西海岸でのお祭り」といった印象で,テレビやニュースで見かける事はあれど,筆者の生活に影響を与えるほどではありませんでした。
国内でAIチックなAPIが利用できなかったかというと,そういうわけでもなく,これまでもGoogleやAWSがAIチックなAPIを提供していました。ただ,それらのAPIのexampleを見ても自身の開発するサービスに導入するイメージが湧かず,手を出せずにいた経営者やプログラマーも多いように思われます。
AIが使えそうで使えないような状況の中,「ChatGPT」は登場しました。技術者に知られるや否や瞬く間に普及していき,最近では私が愛用する超高機能メモサービス「Notion」やプログラマーの戸籍謄本たるGithubにまでChatGPTが導入され,AI技術がはじめて私のQOLにポジティブな影響を及ぼす事になりました。
しかし,この便利さを素直に享受できないのが人間というものです。サンプル文の生成や文章の要約で筆者の生産性向上に貢献する一方で,ChatGPTが筆者の能力をじわじわと退化させ,私の領分を侵食している気がしてなりません。今はまだ私の忠実な助手に過ぎないものの,これ以上の進化を許せば,私の助手からパートナーに,ゆくゆくはパートナーから保護者へと昇格してしまうかもしれません。
なんとかChatGPTに一矢報いたい。
ChatGPTが様々なサービスに導入され,社会が良くなっていく様を何もせず見ているのはプログラマーとしての矜持が許しません。幸いにも,まだChatGPTを導入したサービスはまだ多くはなく,今のうちにリリースすればChatGPT関連ツールの先駆者の末席ぐらいには置いてもらえそうです。そんな下心を胸に,筆者がかねてより開発していた「SocialBooster Lite」にChatGPTを組み込むという一大プロジェクトを開始したのでした。
SocialBooster Liteとは
「SocialBooster Lite」は筆者が2022年に開発した問題解決支援ツールです。問題解決SNSと題して2020年に開発された「SocialBooster」を後継するアプリケーションとして開発されました。
問題解決の意思決定の現場は閉鎖的
問題解決という抽象的な概念に着目したのは、生活や仕事といったかたちで社会で広く行われている問題解決そのものを改善することで、波及的に様々な社会問題を解決できると考えたからです。日々多くの人が関与している問題解決のプロセスですが,その多くは属人的かつ閉鎖的な環境下にあり,人々が自由に意思決定に参画できる状況にありません。
ある分野においては政治家の誰をも凌駕する学生も,ある業界をプロ以上に知り尽くした主婦もいるはずです。問題解決が属人的かつ閉鎖的な環境にある事は,これら名もなき専門家を意思決定の場から排除する事と同義なのです。
問題解決を最大化する
意思決定への参加に資格を設けることは、決定の速度や質を現実的なものにする反面、集約される知識や判断を制限します。そこで,議論のプロセスや内容をWEBプラットフォーム上に外在化し,意見の提案者と意見を分離させることで,意思決定から意見の提案者の人格を除外し,提案された意見のみを検討することにしました。
SocialBooster Liteは,政府や企業,はては近所の社会人サークルにみられる問題解決や意思決定のすべてに,人々が参画できるインターネット上のプラットホームとして機能します。
SocialBooster Liteの問題解決モデル
SocialBooster Liteについて簡潔に説明すると以下のようになります。
SocialBooster Liteは人々の問題解決の支援を目的としており,ユーザーに意見の共有機能,意見の紐づけ機能,意見に対する評価(の集計・計算)機能,意見の整列機能を提供しています。
意見の共有機能では,ユーザーによる意見の登録を可能にします。
意見の紐づけ機能では,ユーザーが紐づけ機能により意見と意見を紐づけ,問題解決の道筋を構築できるようにします。
意見の評価(の集計・計算)機能では,ユーザーの投票を集計・計算し,意見の社会における優先順位を算出します。
意見の整列機能では,意見の優先順位を元に意見を整列します。
SocialBooster Liteで優先順位が高く,上位に表示された意見は,「社会で進展を望まれていながら,必要な対応がされていない」事を意味します。人々が上位に表示された意見を優先的に扱う事で,社会資源の分配における過不足の是正が期待できるのです。
ChatGPTを組み込んでみた
「SocialBooster Lite」はLaravel 9,Vue3,Inertia.js,Tailwindを使用して開発しました。
ChatGPTの組み込みにはorhanerday/open-aiを使用しました。
modelにはgpt-3.5-turboを使いました。
ChatGPTのカスタマイズ
ChatGPTをカスタマイズする方法はfine-tuneとプロンプトデザインの2つがあるそうです。前者は大変そうだったので,簡単で成果が出やす
いと言われるプロンプトデザインに挑戦してみました。
以下がsystem roleで入力した最初の文章になります。この文章からChatGPTはSocialBooster Liteというサービスを理解するんですね。
この次に,assistant roleで下の画像の文章を登録しました。ここで,ChatGPTに自分の立場を分からせる事ができるようです。「あなたは何者ですか?」と尋ねると「SocialBooster LiteのAIアドバイス機能です」と答えるようになります。(たまに違う事を言いますが)
ChatGPTにいろいろ聞いてみた
先程のプロンプトデザインを行った上で,ChatGPTにいろいろ聞いてみました。この機能へはこちらからアクセスできます。
SocialBooster Liteとは何ですか?
SocialBooster Liteの目的は何ですか?
SocialBooster Liteの良いところと悪いところは何ですか?
あなたは何者ですか?
SocialBooster Liteの問題解決モデルについて教えてください。
プロジェクトの見本を生成してください。
政治をテーマとしたストレス、ニーズ、アイデア、プロジェクトの見本を生成してください。
福祉をテーマとしたストレス、ニーズ、アイデア、プロジェクトの見本を生成してください。
人権をテーマとしたストレス、ニーズ、アイデア、プロジェクトの見本を生成してください。
SocialBooster Liteが中心的な役割を果たす小説を書いてください。
SocialBooster Liteを政治家向けに説明してください。
ChatGPTの実力がわかるような質問を心がけてみましたが,いかがだったでしょうか。これがgpt-4に劣るgpt-3だというのだから,gpt-4の一般公開が待ち遠しいですね。
Bing のChat AIのような標準のChat機能に加えて,SocialBooster LiteではNotionのような文章の推敲機能も用意しています。ただ個別に機能を作るのは大変だったので,urlパラメーターを使ってプロンプトを自動入力できるようにしました。
画面下部のAIアドバイスを使用して見本を生成するボタンを押すと,AI アドバイスページのテキストエリアに推奨のプロンプトを記入してくれる仕組みです。
推奨のプロンプトというのは,テキストエリアの「ストレス」である「相対的貧困が増加している状況だ。」に対して,「ニーズ」の意見を提案しようとしていますが,良い意見が思いつきません。見本を見せていただけますか?のことです。
まとめ
ChatGPTの導入は成功だと考えています。SocialBoosterならびにSocialBooster Liteの難点に「説明」の大変さがありますが,ChatGPTを活用すれば正確さはさておいても,雰囲気を手早くユーザーに伝えてくれます。
また,熟練の方でもSocialBooster Liteの文法制限に引っかかってしまう事があるのですが,ChatGPTを使えば意見のどこに問題があるのかがすぐに分かるようになるので,意見の登録促進につながるでしょう。
今はプロンプトデザインしか行っていませんが,gpt-4が出たらfine-tuneにも挑戦してみようと考えています。SocialBooster上で評価が高いとされる,
意見をChatGPTに流し込めれば,今よりも高い精度でサンプル文を生成したり,ユーザーの登録した意見の問題点を指摘できるようになりそうです。ChatGPTによりユーザーが登録する意見の品質が向上し,登録される意見の品質が向上することでChatGPTが更に賢くなる,そんなサイクルが起こればアツい事間違いないですね。
この機能は既にSocialBooster Liteのサイト上で公開しているので,どなたでも自由にご利用いただけます。OpenAIにクレジットカードを登録しているのであまり使いすぎないでくださいね。(※もちろんリミットは設けていますが,来月まで誰も使えなくなります)
好き勝手に使わせてもらいます。