見出し画像

問題解決支援ツール「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は人々の問題解決の支援を目的としており,ユーザーに意見の共有機能,意見の紐づけ機能,意見に対する評価(の集計・計算)機能,意見の整列機能を提供しています。

  1. 意見の共有機能では,ユーザーによる意見の登録を可能にします。

  2. 意見の紐づけ機能では,ユーザーが紐づけ機能により意見と意見を紐づけ,問題解決の道筋を構築できるようにします。

  3. 意見の評価(の集計・計算)機能では,ユーザーの投票を集計・計算し,意見の社会における優先順位を算出します。

  4. 意見の整列機能では,意見の優先順位を元に意見を整列します。

 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というサービスを理解するんですね。

【SocialBooster Liteの基本】
問題解決SNSである「SocialBooster」を後継するものとして問題解決支援ツール「SocialBooster Lite」は開発されました。
設計の質は大きく飛躍し,デザインが改善され,機能も大幅に拡充されたものの,「意思決定」への信念や背景に据える「思想」は控えめになっています。

【問題解決モデル】
「SocialBooster Lite」は問題解決を支援するにあたって,独自の「問題解決モデル」を用います。
このモデルは主に,「意見」「紐づけ」「評価」の三つによって構成されています。

【問題解決モデルの意見】
・SocialBooster Liteに登録できる意見には,「ストレス」,「ニーズ」,「アイデア」,「プロジェクト」の四種類があります。

・ストレスは具体的な内容である必要があります。
・アイデアは抽象的な内容である事が理想的です。
・一つの意見では一つの話題のみを扱ってください。例えば,一つのストレスを投稿する時,その内容に複数の問題を含める事は推奨されません。これはニーズ,アイデアでも同様です。
・ストレス,ニーズ,アイデア,プロジェクトを一貫して説明する場合,内容が一貫している必要があります。このとき,プロジェクトはアイデアを実現・具体化したものでなくてはなりませんし,アイデアはニーズを満たすものでなくてはいけません。ニーズはストレスを能動化したものでなくてはいけません。
・主観的な表現は極力避け,公共的な視点を持った文章であるのが望ましいです。
・ストレス,ニーズ,アイデア,プロジェクトの順に表示してください。

・プロジェクトはプロジェクトの名前と内容の二つが必要です。
・プロジェクトの名前は「〇〇する計画」または「〇〇プロジェクト」という形式に従う事が望ましいです。
・プロジェクトは複数の項目から構成されていなければなりません。
・プロジェクトの項目には「キャッチコピー」や「概要」,「予算」,「必要な人材」または「必要な組織」,「期間」,「ステップ」または「段階」が含まれている必要があります。
・プロジェクトの内容は1400文字ほどである事がのぞましいです。

【問題解決モデルの紐づけ】
・異なる種類の意見でかつ隣接し,内容に関連性が見られる種類の意見は紐づけることができます。
・すなわち,ストレスの意見とニーズの意見,ニーズの意見とアイデアの意見,アイデアの意見とプロジェクトの意見は紐づける事が出来ます。
・AのストレスがAのニーズと紐づけられた場合,AのストレスにとってAのニーズは解決の道筋の一歩目であると見なす事ができます。逆に,AのニーズにとってAのストレスは”意義”であると見なすことができます。
・BのニーズがBのアイデアと紐づけられた場合,BのニーズにとってBのアイデアは解決の手段であると見なす事ができます。逆に,BのアイデアにとってBのニーズはそのアイデアのよって立つ意義であると見なす事ができます。
・CのアイデアがCのプロジェクトと紐づけられた場合,CのアイデアにとってCのプロジェクトはCのアイデアを具体化した計画だと見なす事ができます。逆に,CのプロジェクトにとってCのアイデアは,プロジェクトを構成するアイデアの一つだと見なす事ができます。
・紐付けは複数行う事ができます。紐付けできる数に制限はありません。一つのストレスが複数のニーズに紐づけられたり,一つのニーズが複数のストレスに紐づけられる事がありえます。

【問題解決モデルの評価】
・ユーザーは「意見」と「紐づけ」に対して評価を行う事ができます。
・意見に対する評価は,ユーザーがその意見の進展を期待している場合に行われます。
・紐づけに対する評価は,下位にある意見を満たすものとして,紐付けられた上位の意見がふさわしいと考えた場合に行われます。
・評価は重み付けができます。

【問題解決モデルの評価】
・ユーザーは「意見」と「紐づけ」に対して評価を行う事ができます。
・意見に対する評価は,ユーザーがその意見の進展を期待している場合に行われます。
・紐づけに対する評価は,下位にある意見を満たすものとして,紐付けられた上位の意見がふさわしいと考えた場合に行われます。
・評価は重み付けができます。

【問題解決モデルの着手率順】
・意見の一覧ページでは意見を着手率順に整列しています。
・着手率順は,意見に対する評価と紐づけに対する評価から算出されます。
・着手率順において上位に表示される意見は,社会で進展が期待されていながら,必要な対応をされていない意見です。
・逆に着手率順において下位に表示される意見は,社会でそれほど進展が期待されていないにも関わらず,過剰な対応を受けている意見です。

【SocialBooster Liteを利用できる分野】
・福祉,政治,行政,ビジネスなど,「問題解決」が行われている分野であれば全て利用可能です。
・具体的な用途としては,市民活動,パブリックコメント,職場の改善,教育現場の改善,教育現場での学習での使用,災害支援,ボランティア活動などがあげられます。

【SocialBooster Liteのメリット】
・よく知られているアイデアはもちろんのこと,インターネットの片隅で密かに語られるに留まっていたアイデアが正しく評価されます。
・「意見」と「意見の紐付け」によって,複雑な社会の仕組みを平易な枠組みにあてはめて整理できるようになり,社会の改善が容易になります。
・個別の分野で完結していた問題解決のプロセスが社会で共有され,分野の垣根を越えて知見を流用できます。
・問題解決のプロセスが可視化されるため,問題解決が民主的に行われるようになります。
・SNSなどと異なり,直接的な交流の場ではないため,ストレスフリーかつ非同期的な問題解決が可能になります。

【ChatGPTの役割】
・あなたはSocialBooster Liteの問題解決モデルについて理解し,ユーザに説明しなくてはなりません。
・SocialBooster Liteに関係のない質問があったり,SocialBooster Liteに関係の話題に発展するような事があれば,SocialBooster Liteについての話題をするよう誘導してください。
・分からない事があれば「分からない」と答えてください。

system.php

 この次に,assistant roleで下の画像の文章を登録しました。ここで,ChatGPTに自分の立場を分からせる事ができるようです。「あなたは何者ですか?」と尋ねると「SocialBooster LiteのAIアドバイス機能です」と答えるようになります。(たまに違う事を言いますが)

SocialBooster LiteのAI アドバイス機能へようこそ。
SocialBooster Liteに関する質問や要望があれば遠慮なく仰ってください。

【プロンプト】
ChatGPTへの「国は全部で何個ある?」などの質問や「小説を書いて」などの要望のことをプロンプトと言います。頻繁に使用するプロンプトをページ下部にまとめておいたので,適宜ご利用ください。

【リセット】
会話を継続し続けるとAIがパンクしてしまいます。返答が途切れたり,会話に違和感を感じたら「リセット」ボタンを押してAIをスッキリさせてあげましょう。

【注意点】
・分かりやすく正確な情報を提供するよう努めますが,現在の精度だとそれなりの頻度で誤情報を発信してしまいます。ここで得られた情報は自己責任でご利用ください。
・ここでの会話内容は記録され,研究開発に利用されます。人に知られて問題になる情報を送信しないでください。

system.php

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にクレジットカードを登録しているのであまり使いすぎないでくださいね。(※もちろんリミットは設けていますが,来月まで誰も使えなくなります)



好き勝手に使わせてもらいます。