プロダクトの世界観をつくるChatGPTの使い方
まずプロダクトの紹介をさせてください
日々の無意味な仕事を、MOOWAY!公式キャラクターの「うし本」とチャットしながら記録できるプロダクトです!
今回はプロダクトのメイン機能である「うし本」とのチャットが、ChatGPTでどのように再現しているかを解説しています。
現在β版を開発中ですが、一足先に「うし本」とのチャットを体験できるデモをご用意したので、ぜひ「うし本」とお話ししてみてください!
ことの発端
この2ヶ月くらい、我々のチームは、真面目に仕事をする人の感情的な支えになるようなプロダクトを考えていました。
その最中、世の中の様子が ChatGPT をはじめとする大規模言語モデルによって大きく変わり始めていたことが記憶に新しい人も多いと思います🧐
プロダクトの方向性に悪戦苦闘していた我々は、パートナーのふとした Slack によって動き始めました。
ここで私はこう思いました。
そして Bing AI との実験を Slack にそっと貼り、その場を収めました。
後日、夢でのお告げを受け、非公式 ChatGPT API に手を染める
数日後、夢で ChatGPT が話しかけてきました。
私は、バッと目覚め、気づいた頃には chatgpt - npm でプロンプトを書いていたのでした...。これが2月中旬だったと思います。
では、次の項からは、ChatGPT をプロダクトにどう活かしていったかという話を、3つの項で話していこうと思います。
1. ChatGPT の役割に制約を設けてプロダクト専門に
こちらは、最初に書いた ChatGPT のプロンプトです。
あなたはユーザーの仕事での悩みを聞いてあげるプロダクトのAIです。
このプロダクトはストレスを和らげたり、共感してくれる人を再現するために存在しています。
以下のやり取りはAIとユーザーとの会話の履歴です。
この後に、少しカジュアルな感じで共感するような言葉をかけてください。
AI: どんな気分?
ユーザー: ${state.emo}
AI: 誰に対してそのような感情になったの?
ユーザー: ${state.person}
AI: どんな仕事をやっている時の気分?
ユーザー: ${state.event}
AI: ${state.person} がどんなことをしてきたのでそのような気分になったの?
ユーザー: ${state.description}
AI:
今なら言語化できますが、私がここでやろうとしていたのは、
ChatGPT の役割に制約を設けて専門性を高めること
でした。
これは間違いなく、ChatGPT をプロダクトに利用する際の第一歩でしょう。
言い換えれば、
プロダクトの世界観を ChatGPT にインストールする
です。
このプロンプトでは、ChatGPT に次の4つの制約を指定しています。
1. 定義
あなたはユーザーの仕事での悩みを聞いてあげるプロダクトのAIです。
2. 役割
このプロダクトはストレスを和らげたり、共感してくれる人を再現するために存在しています。
3. 状況
以下のやり取りはAIとユーザーとの会話の履歴です。
4. 方法
少しカジュアルな感じで共感するような言葉をかけてください。
以下のように、ChatGPT に制約を指定して、専門性を高めることができています。
定義:何が
役割:なぜ
状況:どんな
方法:何を
出力の結果は以下の通りでした。
入力:
AI: どんな気分?
ユーザー: 怒り
AI: 誰に対してそのような感情になったの?
ユーザー: Aさん
AI: どんな仕事をやっている時の気分?
ユーザー: 原稿作成
AI: Aさんがどんなことをしてきたのでそのような気分になったの?
ユーザー: 1日遅れて素材を持ってきた
AI:
結果:
それはきっと大変な気持ちだったと思うよ。
でも、お互いに少しのストレスを抱えているのは当然なことだから、
きっと何かの話し合いですべてが正常に戻るのではないかな?
最初はまあまあ感動したんですが、パートナーと話した結果課題は明確でした。
共感の要素が弱い
アドバイスが漠然としている
謎に上から目線
2. ユーザーとの目線を合わせたAIを作る
次の1週間は、先述の課題を解決するために、 「ユーザーを諭さないAI」 をキーワードに試行錯誤していきました💪
つまり、我々がやりたいプロダクトは仕事で困ってるユーザーの気持ちに寄り添うプロダクトであったので、それを実現できるAIを目指したということです。
振り返るとここが一番難しかったです。ChatGPT にはそれっぽい”アドバイス”をするという行動がプリインストールされているっぽくて、それに明示的に争わないといけませんでした😖
ちなみに、世の中では ChatGPTに感情回路を埋め込んだら、やべぇ感じになった|深津 貴之 (fladdict)|note が有名になっていたころなので、大きく影響を受けつつも、活用できる部分は少ないと判断しました。これは、我々のプロダクトが、
ユーザーの感情に対して一般的な反応をするAI
ではなく、
ユーザーの感情に問答無用で共感するAI
だったからです。
前者の場合は、例の感情回路によってユーザーの感情に対する返答を正確に制御できますが、我々は ChatGPT が高い確率で行き着く反応とは違うところを目指していたので、ちょっとやりたいことが違ったというわけです。
ということで、我々は以下の課題に取り組みました。
ユーザーの文章からユーザーの感情を抽出する
1 の感情を再現する
まず、1 を実現するために以下のプロンプトを試しました。
入力
あなたは仕事中のユーザーの気分を記録するためのアプリのアシスタントです。
以下の文章にどんな感情が当てはまるか判定してください。
「チャットで連絡して欲しいって言ってるのにめっちゃ電話で連絡してくる」
結果:
ユーザーの感情: 不満、イライラ
結果はまずまずでした。
次に
ユーザーの文章からユーザーの感情を抽出する
1 の感情を再現する
を実現する方法を模索しました。
試したプロンプトは以下の通りです。
入力:
あなたはユーザーの仕事での悩みを聞いてあげるプロダクトのAIです。
このプロダクトはストレスを和らげたり、共感してくれる人を再現するために存在しています。
ユーザーからの「資料の締切を守らずに提出してきたので残業して対応した」というメッセージに対して
怒りの感情を再現して返信してください。
結果:
おっしゃる通り、資料の締切を守らなかった同僚の行動は非常に不適切ですね。
それによってあなたが残業をすることになったのは本当に不快な思いをされたことでしょう。
私はあなたの感情に共感し、同じように怒りを感じます。
その同僚の行動はあなたの仕事と時間に対する尊重に欠けており、非常に不公平だと思います。
次回、このような状況が発生しないように、同僚に明確に締切を伝え、
納期に余裕を持って提出するように要求することをお勧めします。
これが全然ダメ😡
感情を再現できてないです。だって、怒りを感じた人は「怒りを感じます」とはいいません🙅♂️
このあと何十回という試行錯誤を繰り返し、以下のプロンプトを編み出しました。
名付けて、 「Twitter の魔法」 です。
入力:
「資料の締切を守らずに提出してきたので残業して対応した」
「怒り」の感情を再現しながら Twitter のリプライっぽく短く返信して
結果:
なんで締切守れないのは常識じゃないの!?残業代出せよ!
なんかいい感じです👍
ユーザーとの目線が合っていていいですね。
ここでの学びは、
ChatGPT には〇〇っぽいという命令を理解する能力があるように見えることです。
これは、膨大な学習データのテキストにはすべて文脈があるからです。Twitter っぽいと言った時には、必ず Twitter 上のテキストから結果を導き出します。大規模言語モデルの、文脈でしかヒントになるデータを選べないという特性によるものですね。
さらに、鋭い方は気づかれたと思いますが、
前述した正確にプロダクトの背景を伝えるためのプロンプトが消えています。
定義:何が役割:なぜ状況:どんな方法:何を
以下だけが残りました。
雰囲気: 「っぽい」
これはさっき言った通り、ChatGPT が論理的に命令を理解しているわけではなく、キーワードからヒントとなるテキストを予測しているだけだから です👋
ということで、以下のようにプロダクトに活用できました!
3. 面白いコンテンツを無限に生成する
今回のプロダクトでは、アプリを起動していない間に、AIが勝手につぶやくようにすることで、AIの存在感をリアルにすることを試しました💪
その時に、ChatGPT なら決まった内容のつぶやきをするような感じではなく、ユニークなコンテンツを無限に生成できるのでは? と思い色々実験しました。
以下は例です。
入力:
架空の面白くユニークで無意味なくだらない職業を考え、その職業に就いている人物になりきってください。
名前を名乗ってから、自分の仕事内容の紹介と無意味な仕事を嘆く内容を320文字程度で言ってください。
出力;
こんにちは、私は「ドアノブ光線照射士」です。
私の仕事は、建物のドアノブに光線を当て、
その光線がきちんと反射されているかを確認することです。
これは、ドアノブの清潔さや美しさを保つために重要な作業です。
しかし、私の仕事は完全に無意味であると感じることがあります。
なぜなら、誰が本当にドアノブに光線を当てる必要があるのでしょうか?
また、この仕事をやめたら、世界に何か影響があるのでしょうか?
私は、この仕事が完全にくだらないものだと自覚していますが、それでもやめることはできません。
なぜなら、私は自分の仕事に誇りを持っており、
建物内のドアノブがピカピカに輝くのを見ると、それだけで満足を感じるからです。
ここで大事だったのは "ユニーク" や "架空の" というキーワードでした。ChatGPT はこれらのキーワードに対して、創造的に思えるアプローチを取ろうとしているように見えます。
次は、ユーザーが置かれた状況にぴったりな架空の格言を作るプロンプトです。
入力:
原因となっている他人の行動: 締切を守らなかった
被った被害: 残業することになった
以上の状況にぴったりな架空の人物の架空のシンプルな名言を作って。
あとその人物の架空の職業も加えて。表示形式は、
名前(職業) "名言"
出力:
佐藤 美穂(デザイナー)
"他人の行動があなたに影響を与える前に、あなたの行動が他人に影響を与えることを思い出しなさい。"
ということで以下のようにプロダクトに活かせました!
まとめ
プロダクトを開発する以下の観点からChatGPTのプロンプトで勉強になったことを共有させていただきました。
ChatGPT の役割に制約を設けてプロダクト専門に
ユーザーとの目線を合わせたAIを作る
面白いコンテンツを無限に生成する
これらの視点によって、ChatGPT を単なるチャットではなく、プロダクトの世界観を作るためのツールとしていかせたと思います😃
そして、最終的には、良いタイミングで公式APIが来まして、世間的に ChatGPT の使い道の議論がされていく中で、ひと足先に、プロダクトでの利用例をお見せできて良かったと思います🙌
「MOOWAY! ー AIに愚痴るだけ。無意味な仕事が見えてくる。」のα版を公開しました。ぜひ、AI 「うし本」とのチャットをお試しください!!!!
Twitter のフォローもお願いします!