MENU

プロンプトを改善するには?具体的な手法を徹底解説 その1

  • URLをコピーしました!

ChatGPTを利用していて、時折、期待した応答が得られないことがありませんか? また、同じプロンプトを使っても、毎回結果が微妙に異なるなんてことはありませんか?

ChatGPTから質の高い応答を得るためには、適切なプロンプトを提供することが大切なのはわかっていても、どんなふうに改善すればいいのか、迷いますよね。

適切なプロンプトを作成するには、プロンプトを構成する主な要素を理解し、それらをうまく組み合わせて、少しずつ改善していくというプロセスが大切です。

効果的なプロンプトとは、応答の内容が正確で、一貫性と再現性が高いもの

それでは、これから2回に渡って、効果的なプロンプトの組み立て方をご紹介します。

もくじ

プロンプトを構成する主な要素

プロンプトは、いくつかの要素でできています。まずは主な要素を理解して、それをプロンプトに含めるかどうかを判断しましょう。

まず、「役割」「背景」「質問や指示」「文脈」「制約」という要素について説明します。

  • 役割: ChatGPTに演じてもらう役割。ChatGPTの応答を、特定の文脈や専門分野に沿ったものにします。
    • 例1: 友人としてのアドバイスをお願いします。
    • 例2: 専門家として、科学的な観点から説明してください。
  • 背景: 質問や指示の背景にある情報を提供します。
    • 例1: 最近、運動不足が気になっています。
    • 例2: 新しいプログラミング言語を学び始めました。
  • 質問や指示: 直接的な質問や指示を、明確に表現します。例を使う場合もあります。
    • 例1: 運動プランを作成してください。
    • 例2: プログラミングの基本を教えてください。
  • 文脈: 質問や指示に関連する詳細な文脈や追加情報を提供します。
    • 例1: 週に3回、30分間の運動が目標です。
    • 例2: 以前はPythonを使っていましたが、今はJavaScriptを学んでいます。
  • 制約: 応答における制限や、出力の形式を指定します。例を使う場合もあります。
    • 制限: 回答は200文字以内にしてください。
    • 出力の形式: 回答をリスト形式でお願いします。

ここに挙げた要素のうち「質問や指示」は必須と言えます。ChatGPTとチャットを始めたら、大抵の場合はこの要素のみを含むプロンプトを書いて、ChatGTPに送信するでしょう。

もちろん、これだけで十分な結果を得ることも可能だということは、これまでのコラムでお伝えしています。でも、ChatGPTの応答が希望通りでない場合、他の要素を追加することで、応答を改善できるかもしれません。

それぞれの要素については記事の後半で詳しく解説します。

重要なポイントは、それぞれの要素で以下の三つの原則を守ることです。

  • 具体性: 曖昧な言葉や表現を避け、具体的に要求する。
  • 正確性: 正確な情報を提供する。
  • 明確性: 要求や質問を明確にする。
具体性例えば「AIとは何か?」という質問よりも、「AIの基本的な原理とその応用例について教えてください」という指示の方がより具体的で目的が明確であるため、質が高いと言えます。
正確性「1968年まで続いた江戸時代について…」といった誤った情報を文脈などとして含めると、応答結果の精度が低下する可能性があります。(実際には、江戸時代は1868年で終わっています)
明確性「健康に良い食生活とは何か、そして運動の重要性について説明してください」という指示では、トピックが不明確で、何に重点を置くべきかがわかりにくいため、応答結果も明確でないものになりがちです。

なんとなくイメージがつかめてきたでしょうか?

プロンプトを指定するアプローチ:会話形式とフォーム形式

それでは、プロンプトの要素と効果について詳しく解説する前に、大切なことを解説します。

それは、ChatGPTにプロンプトを指定するアプローチ、つまりプロンプトの要素の渡し方です。このアプローチには大きく分けて二通りあります。

  • 会話形式(段階的):対話を進める中で、指示を与えていきます。
  • フォーム形式(一括式):最初にすべての要素を指定します。

下の図は、それぞれのアプローチでのChatGPTとの会話の流れを簡単に表しています。

このコラムで使っている「会話形式(段階的)」と「フォーム形式(一括式)」という用語は、著者による独自の表現であり、一般に広く普及しているわけではありません。しかし、プロンプトの要素を会話の流れに沿って段階的に与える方式と、フォームの項目のように一括で与える方法は、どちらも広く用いられているので、みなさんにもっと理解してもらえるように、ここでは「会話形式」と「フォーム形式」と表現しています。

要素が多くなると、はっきりしない、暗示的な指示ではChatGPTが混乱し、応答の精度が低くなる可能性があります。そうならないためにも、この二つのアプローチのどちらかを使って、要素それぞれの目的をはっきりさせましょう。

会話形式で指定する

会話形式では、プロンプトをインタラクティブに、段階的に改善しながら指定します。この方法は、電話でレストランにテイクアウトを注文する際のやり取りに似ています。つまり、一度きりではなく、何度かのやり取りを通して希望を伝える方法です。

段階ごとに結果がわかるので、ChatGPTの利用において一番自然な使い方と言えます。

ChatGPTの設計思想は「会話(Chat)」というコミュニケーションを通じて、誰でもAI(この場合は大規模言語モデル)を容易に活用できるようにすることにあります。ChatGPTにプロンプトを送信する際、その会話の中で交わされた過去のすべての内容が自動的にChatGPTに送信されるので、私たちは、ChatGPTが人間のように記憶しているかのように接することができます。ChatGPTは送信されたすべての内容を文脈として理解します。

この方法のいいところは、プロンプトを簡単に段階的に改善でき、モデルの性能や限界を把握できることです。短所としては、特に長い会話において、初期の部分がメモリ制限により切り捨てられることがあり、その結果、応答の精度に影響を与える可能性があります。

この方法では、出力結果を確認しながら、必要な要素を段階的に加えることが重要です。次回のコラムで詳しく解説します。

フォーム形式で指定する

フォーム形式では、プロンプトの要素を一括で指定します。これはオンラインフォームを使用してレストランのテイクアウトを注文する際のプロセスに似ています。つまり、質の高い応答を得るために必要な要素を、フォームの項目のように指定する方法です。

この形式の長所は、一回のプロンプト送信で、希望した応答を得られる可能性が高いことです。また、プロンプトの項目やその一部を「未知の値」としてパラメータ化し、プロンプトのテンプレートを作成して再利用することも可能になります。でも、短所としては、プロンプトの作成には、その内容が明確で一貫性があり、再現性が高くなるようにするための熟練が必要です。つまり、プロンプトの書き方に精通していることが求められます。

この形式は自動化にも適しています。例えば、システムの一部としてChatGPTを活用する場合、会話形式は効率が悪く、応答の一貫性も得られない可能性があります。その点、丁寧に作成したフォーム形式のプロンプトをテンプレートとして用意すれば、システムに組み込むことが可能になります。

このような自動化に適したプロンプトをどのように設計し、最適化するかに焦点を当てている分野を「プロンプトエンジニアリング」といいます。

プロンプトの要素とその効果

「会話形式」と「フォーム形式」の二つのアプローチについてわかったら、次は、プロンプトの要素とその効果について見てみましょう。

ここでは構成要素を俯瞰的に見るために、それらを一括で指定する「フォーム形式」を使ってみます。

例として、以下に「日本からアメリカに移住してきたばかりの人のための『タックスリターン(税務申告)の手引き』を作成してもらうプロンプト」を示します。

# 役割
あなたは、税務の専門家であり、特にアメリカに新たに移住してきた人向けの税務申告支援プログラムに携わっています。あなたの専門は、IRS(米国内国歳入庁)による税務申告のプロセスと、必要な書類の準備方法に関する教育です。

# 背景
アメリカに移住して初めての税務申告を行う日本人向けのガイドを作成しています。このガイドは、税務申告の基本的な理解を深め、自身で税務申告を行うためのステップバイステップの指示を提供します。

# 指示
税務申告に関連する基本的な用語の説明と、申告プロセスの概略、W-2や1040フォームの記入例、必要な書類のリスト、及びIRSの資源へのリンクを提供してください。

# 文脈
このガイドは、アメリカに新しく移住した人が初めて税務申告に直面した際に、申告プロセスを理解し、適切に対応するためのものです。正確でわかりやすい情報が重視されます。

# 制約
– ガイドは実際の税務申告に基づいている必要があり、専門用語の過度な使用を避け、初心者が理解しやすい言葉を使用してください。
– 文化的な違いを尊重し、異なるバックグラウンドを持つ個人が遭遇する可能性のある状況に配慮した内容を含めること。

# 禁止事項
– アメリカの税法や規定に関する誤解を招く可能性のある情報の提供は禁止します。
– 税務申告の法的アドバイスや確定されていない情報の提供は禁止します。

# 出力の形式
– ガイドはテキスト形式で提供されます。
– 以下のフォーマットに従ってください。  
– 税務申告のプロセスに関する導入部
– 基本的な税務用語とその定義
– 申告フォームのサンプルと記入例
– 必要書類のチェックリスト
– 全体のワードカウントは各セクションごとに2000語以内
– 日本からの移住者が理解しやすい言葉を使用してください。

フォーム形式では、プロンプトの要素は「#役割」のように「#」記号から始まる見出しの下に、プロンプトの項目として記述します。続く項目は、1行分空白を空けてから書きます。項目の順番はさほど重要ではありませんが、上の例では一般的な順番で記述しています。(順番が重要な場合もあります。別の機会に解説します)

プロンプトでは「#」や「-」や、時には「**ボールド文字**」などの記号を使用することは一般的ですが、絶対に必要というわけではありません。一貫性のある使い方をするのであれば、他の記号でも問題ありません。ただ、これらの記号はマークダウン表記と呼ばれ、ChatGPTは応答にマークダウンを使用することが多く、この形式で記述されたコンテンツも学習しています。そのため、これらの記号の意味を理解し、プロンプトにおいてもそれらを適切に解釈して応答を生成することができます。

それでは、それぞれの項目について詳しく見ていきましょう。

役割(role)

これはChatGPTに与える、会話上の役割に関する項目です。人間の会話においても、例えば片方に「学校の先生」、もう片方に「生徒」という役割がある場合、会話の内容はその役割に基づいて形成されます。ChatGPTとの会話でも、特定の役割を指定することで、応答の範囲や方向性を定めることができます。例えば、「予備校の先生」の役割を与えると、ChatGPTの応答は「予備校の先生が言いそうなこと」に基づくものになり、その結果、ユーザが生徒であれば、より有用な内容になる可能性が高まります。

役割は、直接的な質問や指示ではありませんが、その内容に大きく影響する重要な要素で、なおかつ会話を通して変わらない要素なので、最初の項目として書くことが一般的です。

効果
あなたは医療の専門家です。プロンプトの内容や応答は医療分野に限定されるので、それ以外の分野について誤って応答される可能性が低くなります。
あなたはソフトウェア開発の専門家です。同様に、応答はソフトウェア開発の分野に限定され、専門用語が出現する可能性が高くなります。

背景(background context)

背景情報は、プロンプトが扱うトピックや質問の背後にある状況や環境を説明する情報です。これにより、ChatGPTは提供された情報の文脈を理解し、より正確で関連性の高い応答を生成できます。

背景は、質問や指示の詳細ではなく、それらの前提になるような全体的な状況や目的を明確にするのに役立ちます。このように背景情報を設定することで、ChatGPTは提供されたコンテキスト内での応答を形成し、結果として応答の質の向上につながります。

背景は独立した項目として記述することも、役割などの一部として組み込むことも可能です。これは、役割と同様に、会話の方向性や内容に影響を与える重要な要素です。

効果
AI分野における最新のブレークスルーについての記事を読みました。それを踏まえて回答してください。この背景情報により、ChatGPTは最新の進歩に焦点を合わせた要約を提供できます。
私たちの会社は環境に優しい製品を開発しています。これにより、ChatGPTは環境に優しい製品に特化した市場戦略に関する具体的な応答をする確率が高くなります。

指示(instruction) と文脈(context)

指示(質問)と文脈はセットとして扱うと理解しやすいでしょう。指示はChatGPTへの具体的な要求で、文脈はその質問が置かれている状況や背景のことです。文脈を明確にすることで、ChatGPTはより有用で関連性の高い情報を提供することができます。文脈は、指示と一緒に一つの要素として設定することも、独立して指定することもできます。

効果
指示:夕食のためのレシピを教えてください。
文脈:私はグルテンフリーのダイエットをしており、野菜を多く含む夕食のレシピが欲しいです。
この文脈により、ChatGPTはただのレシピではなく、グルテンフリーで野菜を多く含むレシピを提供することができます。
指示:当社の環境持続可能性の取り組みについてのプレゼンテーションのアウトラインを作成してください
文脈:来週、環境持続可能性に関する学会でプレゼンテーションを行います。
この文脈のおかげで、ChatGPTは一般的なプレゼンテーションのアウトラインではなく、特定の聴衆(学会参加者)と主題(環境持続可能性)に合わせたアウトラインを提供できます。

指示は、単純なものから複雑なものまでさまざまです。特に複雑な指示では、複数のステップや条件に応じて内容が変化することがあり、明確な文脈の設定が特に重要となります。

より複雑な指示を含むプロンプトについては別のコラムで詳しく紹介する予定です。

制約(constraints)

制約は、ChatGPTの応答に対して設けられる制限やガイドラインです。これにより、生成される応答が特定の条件や要求に適合するように調整されます。制約を設定することで、不適切な内容の排除、特定の言語スタイルの応答の生成、特定のトピックやデータの使用を避けることができます。

主な制約の種類をまとめました。

目的
内容の制約あるトピックや言葉の使用を避けるように指示するこの回答で政治的な意見や表現は避けてください。この回答で特定の個人情報に触れないでください。
倫理的制約倫理的な基準や規範に基づいて応答するように指示する差別的な表現は使用しないでください。暴力的な内容を含めないでください。
時間的制約特定の時代や期間に関連する情報に焦点を当てるように指示する20世紀初頭のコンテキストに基づいて情報を提供してください。第二次世界大戦(1939-1945年)の時期に限定してください。
言語スタイルの制約特定の言語スタイルやトーンを要求するフォーマルなビジネス用語を用いて答えてください。カジュアルで日常的な会話調で応答してください。

制約を調整することは「制約設計(constraints design)」とも呼ばれ、プロンプトの中でも重要な位置を占めます。応答の内容が期待しているものと大きくずれている時は、こうした制約を与えて、応答の方向性を調整すると、うまく行くことが多いです。

まとめ

今回のコラムでは、プロンプトを分解してその構成要素を詳しく解説しました。ChatGPTから期待した応答を得るためには、それらの要素とその効果を理解し、ChatGPTにわかりやすい形で渡すことが大切だということがおわかりいただけたら嬉しいです。

次回のコラムでは、これらの要素をさらに発展させた、以下のプロンプトの工夫の仕方について解説します。

  1. 禁止事項
  2. 出力の形式
  3. 例を用いて応答の質を向上させる
  4. ChatGPTからの誤情報を減らす

執筆:渡邊毅(わたなべ つよし)
マイクロソフト本社ソフトウェアエンジニア - Dynamics 365/カスタマーケア/データアナリティクス・チームに所属。ビジネスインテリジェンスおよびAI機能の統合などを主に担当。趣味は釣りとゲームと3D印刷。プログラミング教育やChatGPTの活用方法についての無料マガジンを note にて公開しています。その他のブログはこちら。
個人ブログ
技術ブログ

  • URLをコピーしました!

この記事が気に入ったら
フォローをお願いします!

もくじ