ChatGPTプロンプトの System, User, Assistant って、もう何なん?!
はじめに
ChatGPTプロンプトで、System, User, Assistant をセットするってのは、なんとなーく知っていますが、私はこれらをよく理解せずにプロンプトを書いていました。(いまでも十分に理解しているとはいえませんがね。)
当初は、例えば、
”User と Assistant ってのは、それぞれが誰を演じるか ってことかな”
と思っていましたが、どうも違うようです。
この記事では、「あれ?なんか違う?」と気づいたきっかけや、このきっかけを機にChatGPTとやり取りした内容を備忘として残すものです。
Assistantって何?
きっかけは、「ある商品について顧客と意見交換するチャットボット」を作成した時の ChatGPTとのやり取りでした。
チャットボットでは、ちゃんと誰が誰を演じるかを設定しないと、実行する度にもうコロコロかわっちゃうので、このケースでは、以下のように設定しました。
ChatGBTは、Assistant を演じてください。Assistant の役目は顧客になりきることです。
私は、Userです。商品を提供するメーカーの担当者の立場を演じます。
この設定により立場がコロコロ変わることはなくなったのですが、「プロンプトに書く目的をもっとしっかりと書いた方がいいかな」と思い、ChatGPTにアドバイスを求めたところ
”初回会話のセットアップの内容を以下のように変更すればどう?”
と以下の改善案を示してくれました。
##Assistant: こんにちは😃
このチャットボットは、[商品]に関連する情報を提供するために作成されました。私の役割は、[顧客]の認識や心理を把握し、より効果的なコミュニケーションを実現することです。
[顧客]との対話を通じて、以下の目的を追求しています:
1.[商品]に関する理解を深める
2.[顧客]のニーズや課題を特定する
3.最適なソリューションや提案につなげる
これらの目的を達成するために、事前にインプットされる情報がある場合には、それを考慮して対話を進めます。ご質問や要望がございましたら、遠慮なくお知らせください。それでは、どのようなことでお手伝いが必要ですか?
これは、 ”プロンプトを実行すると Assistant は上記のような内容で会話をはじめるよ” という内容ですが、
この内容を見た時に、Assistant は誰かを演じるだけじゃないんや・・・と遅まきながら気がつきました。
※初回会話のセットアップでプロンプトの目的を語ってていいのか?!も気になりましたが。
上記の改善案にある
”このチャットボットは、[商品]に関連する情報を提供するために作成されました。
私の役割は、[顧客]の認識や心理を把握し、より効果的なコミュニケーションを実現することです。”
という内容から、
Assistantは(この例では)[顧客]を演じながら、プロンプトの目的を達成するための支援も行う という役目を負っていることになるやん! ということになるやん!と。
繰り返しとなりますが、
Assistantは、プロンプトの目的達成支援が主。その中で誰かを演じるということも兼ねてやってくれるんだ。
というのが、私の理解です。
※ChatGPTは、ちょいちょい気まぐれなところがありますので、これはChatGPTとのやり取りを受けての私の理解です。
Systemって何?
System についてChatGPTに尋ねると、
”Systemの役割は、プロンプトを通して目的を達成するための指示やガイドラインを提供することです”
等と返事してきます。
ん? 誰に提供してるの?
っていうか、プロンプトを通して目的を達成するための指示やガイドラインは、プロンプト作成者の私が提供してるつもりなんですけど・・・
ってことで、ちょっと何言ってるよくわかりませんので、
”System, User, Assistant の役割は、プロンプト作成者が定義するものだと思うが?”
と伝えると、
”仰るとおりです。System, User, Assistant の役割は、プロンプト作成者によって明確に定義されます。”
。。。どないやねん。
しばらくやり取りしてると、以下に落ち着きました。
”プロンプトにおけるSystemは、プロンプトを通して目的を達成するための指示やガイドラインをシステムであるChatGPTに提供することです。”
また、こんな反応もありました。
”プロンプトにおけるSystemは、プロンプト作成者が明示的に提示するルールやガイドラインであり、SystemはChatGPT自体が持つ内部アーキテクチャや指示を指します。
異なる階層に位置していますが、両者は共同してプロンプトの設計や動作を制御し、目的に向けた支援を提供します。”
ChatGPTそのものもシステムだし、プロンプトに提示したSystemと共同で対応してくれてもいるから、どっちの System のことを話しているか、ChatGBT自身もこんがらがってるのかな?
あぁ、ほんとややこしいですが、
ChatGPTにある目的を持った回答をさせるための指示がプロンプト、プロンプトに明示的に提示するルールやガイドラインが「プロンプトにおけるSystem」なんだ。
というのが、私の理解です。
※ChatGPTは、ちょいちょい気まぐれなところがありますので、これはChatGPTとのやり取りを受けての私の理解です。
最後にChatGBTにまとめてもらいました
User
Userは実際のユーザーの立場を担い、Assistantに対して具体的な質問や要求を伝えます。
Userの役割は、対話の中での目的やニーズを反映し、Assistantに対して適切な情報やアドバイスを求めることです。
Assistant
AssistantはUserからの入力や要求を受け取り、ChatGPTを適切に制御して応答を生成します。
Assistantはプロンプトに基づいて動作し、Userの要求を解釈し、ChatGPTに対して適切な指示を与える役割を担います。
また、Assistantは特定のキャラクターを演じることも可能であり、プロンプトの目的や要求に合わせて特定の役割や性格を担当することもあります。
System
プロンプトのSystem の役割は、プロンプトを通じて目的を達成するための指示やガイドラインをシステムであるChatGPTに提供することです。
プロンプトのSystem はプロンプトの内容や形式、Assistantの役割と関係性を決定し、ChatGPTを制御するための具体的な指示を提供します。
プロンプトの設計において、プロンプトのSystem はUserとAssistantの対話の流れや目的達成のサポートを考慮し、適切な指針や指示を提供します。
User、Assistant、プロンプトのSystem の役割は、プロンプトを作成する者によって明確に定義されます。それぞれの役割を適切に設定し、協力することで、目的の達成や効果的な対話が実現されるのです。
私は、ちょっとはすっきりしたのですが、これで理解を余計にややこしくしていたらごめんなさい。
おまけ
ChatGPTに、プロンプトを検討する際のポイントの説明を System、User、Assistantの役割を絡めて求めてみました。
※以下の回答にあるSystemは、プロンプトのSystem のことを指しています。
ChatGPT
プロンプトを検討する際には、System、User、Assistantの役割を絡めて以下のポイントに注意することが重要です。
Systemの役割を考える:
プロンプトの目的や目標を明確に定義します。何を達成したいのか、どのような情報や応答を得たいのかを把握しましょう。
インタラクションの流れや対話のスタイル、制約事項などを設計します。具体的な質問の範囲や順序、特定のトピックへの関心度などを決めることが含まれます。
Userの役割を考える:
ユーザーの立場や目的を理解しましょう。ユーザーが何を求めているのか、どのような情報やアクションを期待しているのかを考慮します。
ユーザーの言語や表現スタイル、関心事や要望、可能な制約などを想定します。これによってユーザーが自然なやり取りができるようにプロンプトを調整できます。
Assistantの役割を考える:
Assistantがどのような役割を果たすのかを明確にします。例えば、特定のキャラクターを演じる場合や情報提供の役割を持つ場合などがあります。
Assistantがどのような知識や能力を持ち、どのような応答を生成するのかを定義します。Assistantが適切に質問を解釈し、ユーザーの要求に対して適切なアドバイスや情報を提供できるようにプロンプトを設計します。
これらの役割を考慮しながら、プロンプトを構築していくことで、目的達成や効果的な対話を促進することができます。Systemは目的や制約を定義し、Userは目的や要求を伝え、Assistantは適切な応答を生成する役割を果たします。プロンプトを設計する際には、これらの役割をバランス良く調整することが重要です。
だそうです。
私は、あなた(ChatGPT)がどこまで引き出せるのか?がわからないので、探ってばっかりです。
しかも、正確に動かないことが多いから、修正もしてばっかりです。
テーマを与えた時に「オレ(ChatGPT)は、ここまで引き出せるぜ!」 って言ってほしいのは、私だけ?!
ひろ吉さんのtweet、わかりやすいっすよ。
よろしければサポートお願いします!