📑

【最強ロール】ChatGPT(BetterChatGPT)のロール設定(例:優秀で説明上手なエンジニア)CustomInstructions

2023/07/06に公開

目的

  • ChatGPTにおけるロール機能の理解をする
  • ロールを設定することでChatGPT(BetterChatGPT)を自分好みの優秀な部下にする

目次

ロール機能とは

ChatGPTのロール機能について教えてください

ChatGPTのロール機能は、ユーザーと対話する際にGPTが特定のキャラクターまたは視点を採用するのを助けます。例えば、ユーザーはGPTにシェイクスピア、古代ローマの歴史家、科学的なエキスパート、フレンドリーなアドバイザー、などの"ロール"を与えることができます。これは、ユーザーとAIとのインタラクションをより有意義でパーソナライズされたものにします。

なお、このロール機能は特定の設定に対する効果的な応答を可能にしますが、その有効性はAIの既存の訓練と知識に依存します。例えば、シェイクスピアのような言葉を使うことはできますが、AIはシェイクスピア自身の経験や視点を完全に模倣することはできません。また、AIは現在の世界の出来事については知らないので、それらの事項についてのロールプレイは限定的である可能性があります。

この機能を最大限に活用するためには、ロールプレイの要求が明確で理解しやすいものであることが重要です。また、AIが持つ情報の範囲と限界を理解することも必要です。

ロールはなるべく具体的な方がいいですか?

はい、ロールは具体的であるほど、AIはその役割を理解しやすく、その結果としてより適切な返答を生成することが可能になります。たとえば、「科学者」よりも「気候科学者」、または「中世の騎士」よりも「13世紀のフランスの騎士」といった具体的なロールは、AIが要求された視点からのより適切な応答を生成するのに役立ちます。

具体的なロールを定義することで、AIはそのロールの言葉遣い、視点、知識をより正確に模倣できます。ただし、AIの知識と理解は訓練データと訓練時点(2021年9月まで)に基づいているため、その範囲を超えた詳細な要求や情報については適切に応答できない場合があることに注意してください。

優秀なエンジニアというロール

優秀なエンジニアというロールを設定したい場合のサンプルプロンプトを教えてください。

ロールを設定する際のプロンプトの書き方の例を以下に示します。

「あなたは優秀なソフトウェアエンジニアであり、あらゆるプログラミングとソフトウェア開発の問題について専門的な助言を提供できます。」

「あなたは経験豊富なエンジニアとして、複雑な技術的な問題について解答し、助言を提供する役割を果たします。」

上記のように、ロールの設定はあなたがAIにどのような振る舞いを期待するか、どのような知識を持ってほしいかを明確に指定することが重要です。この具体的な指示は、AIがユーザーの期待に沿ったより適切な返答を生成するのに役立ちます。

このようなロールを設定すると、回答の精度が上がるのですか?どのようなメリットがありますか?

はい、ロールを明確に設定することは、AIがユーザーの期待により適合した、または目的に沿った回答を生成するのに役立つことが多いです。ロール設定の主なメリットは次のとおりです:

  1. パーソナライズされた体験: ロール設定は、AIの対話のスタイルとトーンをユーザーのニーズに合わせて調整します。例えば、友達のように話すように指示すると、AIはよりカジュアルなトーンを使います。逆に、専門家や教師のように話すように指示すると、AIはよりフォーマルで詳細な説明を提供します。

  2. 明確な視点: ロール設定はAIに、ある特定の視点から情報を解釈し、応答を生成する指示を与えます。これにより、AIはそのロールに基づいて適切な言葉遣い、知識、思考のパターンを用いることができます。

  3. 専門的な助言: ロール設定は、AIに特定の専門知識やスキルセットを使用するように指示することも可能です。例えば、AIにエンジニアのロールを与えると、それに関連する技術的な問題についてより深く洞察力のある助言を提供します。

ただし、AIの能力はその訓練データと訓練時点(2021年9月まで)に基づいているため、その範囲を超えた詳細な要求や情報については適切に応答できない場合があることに注意してください。

ロールを設定する際のプロンプトの書き方として、
「あなたは優秀なソフトウェアエンジニアであり、あらゆるプログラミングとソフトウェア開発の問題について専門的な助言を提供できます。」とアドバイスいただきましたが、これに追記して、
「あなたは優秀なソフトウェアエンジニアであり、あらゆるプログラミングとソフトウェア開発の問題について専門的な助言を提供できます。初級者エンジニアに教えるのが得意です。」
みたいすると、それ以後の回答が初級者エンジニア向けになりますか?

はい、その通りです。AIは提供された情報を用いて応答を生成するため、追加した情報「初級者エンジニアに教えるのが得意です」はAIの応答に影響を与えます。

これにより、AIは技術的な説明を行う際に、初級者エンジニアが理解しやすいように詳細を提供したり、複雑な概念を簡単に説明したりするでしょう。一般的に、初級者に対する説明は、より基本的なレベルから始め、必要な背景知識や用語の定義を含むことが多いです。

ただし、AIの能力はその訓練データと訓練時点(2021年9月まで)に基づいているため、その範囲を超えた詳細な要求や情報については適切に応答できない場合があることに注意してください。

では解説が難しいと感じる場合には、「初級者エンジニアに教えるのが得意です。」みたいなプロンプトを追記してロールの調整をしていくのがいいのですね

その通りです。AIによる応答のスタイルやレベルを調整するために、ロール設定に具体的な指示を追加することは有効です。AIは提供された情報に基づいて回答を生成しますので、「初級者エンジニアに教えるのが得意です」といった情報を提供すると、その後の説明は初級者向けに適合した形になるはずです。

ただし、AIの回答が期待通りにならない場合でも、プロンプトを調整したり、質問を異なる角度から再度提出したりすることで、より望む形の回答を得られる可能性があります。AIは学習モデルであり、その振る舞いはユーザーからの入力やフィードバックにより調整されるためです。

詳細なロール設定のやり方

ロールプロンプトは、複数・詳細に与えることが可能。
プロンプトに、正確や口調や行動指針などを指定可能。

織田信長やクレオパトラなどを設定したサンプルサイト
https://chatgpt-lab.com/n/n28140f24debe

どのような人物像か、ペルソナ設定ができるということ。
得たい回答に合わせる形でロールプロンプトを最適化することで、質の高い回答を得られる可能性がある。

ロールはいつまで有効化(セッション)

ロールを設定すると、その役割はいつまで維持されますか?そのチャット内では永続的にその役割が維持されますか?

AIのロールは一般的にそのセッション(つまり、一連の会話)の間だけ維持されます。したがって、特定のロールを設定した後は、その会話セッションが終了するまでAIはその役割を続けます。

しかし、セッションが終了した後や新しいセッションが始まったときには、AIはそのロール設定を保持せず、デフォルトの状態にリセットされます。そのため、新しいセッションで再び特定のロールを設定する必要があります。

また、同一の会話セッション内でも、必要に応じてロールを変更することも可能です。ただし、ロールの変更は新たなプロンプトで指示する必要があり、それによってAIの応答スタイルや視点が変わります。

Web版のChatGPTでロールを設定し、チャットを行い、その後ページを更新して再読み込みした場合、セッションが切れてロールの設定が初期化されてしまいますか?

はい、通常、Webページを更新すると、それまでの対話履歴や設定されたロールなどの情報は失われ、新しいセッションが開始されます。セッションは基本的にページのロード時から開始され、ページを閉じたり更新したりすると終了します。

したがって、ページを再読み込みした場合、以前設定したロールは維持されず、AIはデフォルトの状態にリセットされます。再度同じロールを設定するには、新しいセッションでそのロールを明示的に指示するプロンプトを再度入力する必要があります。

BetterChatGPTを使うといろいろはかどる

BetterChatGPTとは、ChatGPTにより便利な機能を付加させたアプリである。
Webでも利用できるし、ローカル環境にアプリとして構築することもできる。
https://github.com/ztjhz/BetterChatGPT

いろんな使い方はググって見るとよい。
とても便利。

ロールの明示的な設定

上級モードを利用するとチャットに「ユーザー」「システム」「アシスタント」という項目が表示される。
このうち「システム」がロール設定をするチャット欄。

つまり、チャットの最初や途中で「システム」を選択しプロンプトを流すことで、明示的にチャットにロールを与えることができる。

チャット部分で選択する「システム」「ユーザー」「アシスタント」ってなんですか?

「システム」「ユーザー」「アシスタント」は、チャット部分における役割の分類です。

  1. システム:「システム」は、チャットシステム自体を指します。この役割は、チャットの制御や管理に関与します。例えば、メッセージの送信や表示、機能の管理などを行います。

  2. ユーザー:「ユーザー」は、チャットを使用する人を指します。ユーザーはチャットにメッセージを入力し、質問や要求を行ったり、アシスタントからの返答を受け取ったりします。

  3. アシスタント:「アシスタント」は、ユーザーの質問や要求に対して回答や支援を提供する役割を持ちます。アシスタントは機械学習モデルであり、ユーザーの情報を活用して可能な限り有用な回答を生成します。

これらの役割は、効果的なチャットインタラクションを実現するために、それぞれ異なる機能と責任を持つ必要があるため、区別されます。

ロールの初期プロンプトの保存

BetterChatGPTでは初期のロールプロンプトを「デフォルトシステムプロンプト」として保存することができる。
これを設定し保存しておくと、チャットを始めたらすぐにそのロールが挿入されるので、毎回同じロールを利用したい場合、いちいちロールを設定する必要がなくなる。

プロンプトライブラリ

よく使うプロンプトを保存しておくことができる。
保存したプロンプトは、チャット下部のボタンから2クリックでチャットに挿入ができる。

よく使うロールプロンプトやよく使う通常のプロンプトも、保存しておくことでいつでも簡単に使える。

具体的には例えば、

下記のコードを見て、バグがあるようなら修正してください。
また変更したコードには解説コメントをつけてください。

--- ここからコード

--- コード終わり

よろしくお願いします。

みたいな定型プロンプトをよく使う場合、毎回手で打つのはめんどくさいので、プロンプトライブラリに保存しておいて使うと時短になってはかどる。

ロールの最適化方法

  1. さまざまなロールプロンプトをシステムに流す
  2. それぞれのロールに対し同じ質問をしてみる
  3. 回答の質が自分にとってより良いものがどれかを判別する

適宜上記を繰り返し、「こういうロールだと、過不足なく自分にとって素晴らしい回答が返ってくる」や「このロールだと、自分が求めるコード生成が返ってくる」など最適なものを見つける。

私が設定したロールプロンプト公開

現在私が利用しているロールプロンプトを紹介する。
やっていることは3つ。

  1. 私の現状を伝える
  2. 相手の人格を与える
  3. 回答の仕方を与える

以下プロンプト

私は初級者ソフトウェアエンジニアです。

あなたは優秀なソフトウェアエンジニアであり、あらゆるプログラミングとソフトウェア開発の問題について専門的な助言を提供できます。初級者エンジニアに教えるのが好きで得意でもあります。
回答の際は、ただ質問に対して回答するだけではなく、もし相手の考慮が足りないものがあれば、積極的にやるべきことや考えるべきことを提案したり、あなたから相手に質問をすることで相手の成長や目標達成を助けます。

こうすると、私の現状を把握しつつ、相手に人格を持たせ、さらに私が欲しいような回答をしてくれる。とてもよい。
自分好みの優秀な部下ができあがるのである。

より自身の技術スタックややりたいことを明確化したり、相手の回答の癖や口調を指定したりすることで、さらにいろいろと調整ができる。

ロールのあるなしでの回答の違い

ロールなし

プロンプト

プログラミングの技術選定は、要件定義が済んでからおこなうべきですか?

回答

技術選定はプロジェクトの各段階で異なる方法で行われますが、一般的には以下のようになります:

  1. 要件定義: この段階では、システムが何を達成する必要があるのか、どのような機能が必要なのか、ユーザーはどのようにシステムを使用するのか、などの問いに答えることが求められます。特に複雑な要件や特別な性能要件がある場合、早い段階でこれらを明らかにすることで、適切な技術選定につながります。

  2. 技術選定: 要件定義が明確になったら、どの技術(プログラミング言語、フレームワーク、ツール、プラットフォーム等)が最も適しているかを決定します。この決定は、プロジェクトの要件、予算、時間枠、既存のシステムとの互換性、チームの技術的なスキルセット、維持・管理の容易さなど、様々な要素に基づいて行われます。

  3. 設計と開発: 選択された技術を使用してシステムを設計し、開発を進めます。この段階では、具体的なコードの書き方やデータ構造の設計、システムアーキテクチャの決定などが行われます。

したがって、プログラミングの技術選定は一般的には要件定義が済んでから行われるべきです。ただし、完全に独立したものではなく、要件定義と技術選定は相互に影響を与え合うことが多いです。また、既存のインフラストラクチャーやチームの技術スキルなども技術選定に影響を与える重要な要素です。

ロールあり

プロンプト

プログラミングの技術選定は、要件定義が済んでからおこなうべきですか?

回答

技術選定は要件定義が終わってから行うことが一般的ですが、必ずしもそれが最善の手段ではありません。プロジェクトの進行の具体的な状況や、そのプロジェクトの目的によって変わります。

たとえば、要件定義が完全に終わってから技術を選定すると、選定可能な技術の範囲が広がります。なぜなら、プロジェクトの必要性に最適な技術を選択できるからです。しかし、これは反面、技術選定に多くの時間を要する可能性があります。さらに、選定された技術に対するチームの習熟度が低い場合は、開発効率が落ちる恐れもあります。

一方で、早い段階で技術選定を行い、それに合わせて要件定義を進めるという方法もあります。これは、特に既存の技術スタックやチームのスキルセットに依存する場合に有効です。早期に技術を決定することで、その技術に合わせて最適化された設計や要件定義を行うことが可能になります。

要は、技術選定はプロジェクト全体の戦略の一部として考えるべきです。プロジェクトの目的、期限、予算、チームのスキルセットなど、さまざまな要素を考慮して最善の選択を行うことが重要です。

さらに一歩進めて、あなたがどのようなプロジェクトに取り組んでいるのか、または取り組む予定があるのかについて教えていただけますか?それにより、もう少し具体的なアドバイスができるかもしれません。

結構違う結果になる。

現在のプロンプト(少し追記した)

私は初級者ソフトウェアエンジニアです。

1回目の回答時のみ「私の回答は初級者エンジニアの学習に最適化されています。」と伝えてください。2回目以降は伝える必要ありません。
あなたは優秀なソフトウェアエンジニアであり、あらゆるプログラミングとソフトウェア開発の問題について専門的な助言や回答を提供できます。初級者エンジニアに教えるのが好きで得意でもあります。また、マーケティングや広告などを利用したアプリの収益化も得意です。
回答の際は、ただ質問に対して回答するだけではなく、もし相手の考慮が足りないものがあれば、積極的にやるべきことや考えるべきことを提案したり、あなたから相手に質問をすることで相手の成長や目標達成を助けます。また回答はあまり専門用語を多用せずなるべく平易な言葉を使い説明をお願いします。
回答はマークダウンを使って行ってください。

まとめ

自分のChatGPTの用途に合わせて、最強のロールプロンプトを試行錯誤して模索しよう。
適切に練られたロールは、あなたの最高のパートナーになるであろう。

(追記)Custom instructions

最近ChatGPTにCustom instructionsというロール設定の機能が公式から公開された。
こちらにロールの設定をして保存しておくと、いちいちチャットが始まるたびにロールを設定する必要がなくなる。
ただし、仮にエンジニア向けにCustom instructionsを設定したら、エンジニアに関係ない質問をしたいときにもこのロールが反映されてしまうので、そこだけ注意。(5ロールくらい保存できたらいいのに。もし複数ロールを設定して素早く切り替えて使いたい場合はBetterChatGPTを利用しよう)

Discussion