【OpenAI直伝】ChatGPTのプロンプトを上手に書く6つのコツ

【OpenAI直伝】ChatGPTのプロンプトを上手に書く6つのコツ

ChatGPTを使っている方の中で、

  • ChatGPTにどのように質問を書いたらいいかわからない」
  • ChatGPTが求めている答えを出さない
  • ChatGPTに正しい応答をさせるためのプロンプトのコツを知りたい

という悩みをお持ちの方は多いのではないでしょうか?

ChatGPTは、会話形式の文章で質問や指示に答えてくれる非常に便利なツールですが、たびたび求めている回答とは異なる応答を返してきて、「やっぱり使えないな・・・」と感じる方も多くいると思います。
実は、ChatGPTの応答精度は、ユーザーが入力する質問や指示(これら「プロンプト」といいます)の内容によって大きく左右されるのです。
そのため、「プロンプトの上手な書き方」はChatGPTを使いこなす上で、非常に重要です。

2023年12月、ChatGPTを開発・提供するOpenAi社が「プロンプトの書き方のコツ」ともいえるマニュアル(英語のみ)を公開しました。
主にOpenAIのAPIを利用してアプリケーション開発を行う開発者向けではありますが、一般のChatGPTユーザーにも非常に参考になる内容になっています。

そこでこの記事は、本家OpenAIが直伝する「ChatGPTのプロンプトの書き方のコツ」について、特に一般のChatGPTユーザーに有益な内容を中心に具体的なプロンプト付きでわかりやすく解説します。

この記事を最後まで読んで、ChatGPTのプロンプトに活用しましょう。

ChatGPTのプロンプトの6つのコツ

ChatGPTを開発・提供するOpenAI社が公開した「ChatGPTのプロンプトの書き方のコツ」を具体的なプロンプト付きでわかりやすく解説します。

OpenAIの参考記事:Prompt engineering

プロンプトの書き方で特に重要な基本的な考え方(戦略)は以下の6つです。

  • コツ1.明確な指示を書く
  • コツ2.参照テキストを提供する
  • コツ3.複雑なタスクをより単純なサブタスクに分割する
  • コツ4.モデルに 「考える」”時間を与える
  • コツ5.外部ツールの使用
  • コツ6.変更を系統的にテストする

では、以下で具体的に解説します。


コツ1.明確な指示を書く

プロンプトのコツとして、最も重要なことは「明確な指示を書く」ことです。
ChatGPTに、自分が求めている質問・指示に答えてもらう上で必要な情報や前提条件・背景・目的などを伝え、どのような出力形式(文章か箇条書きか表形式か)で、どの程度の分量で答えて欲しいのか、などできる限り明確に指示を出すことが重要です。

「明確な指示を書く」上で特に重要なテクニックを6つご紹介します。

コツ1-1.詳細な情報を書く

正確な回答を得るためには、プロンプトに詳細な情報を入れるようにしましょう。
詳細な情報がないと、ChatGPTはあなたが意図した応答とは異なる応答をしてしまうかもしれません。

例えば、以下の例でいうと「会議のメモを要約してください」というプロンプトだけでは、どのような形式で、どの程度の分量で要約したらいいのかわかりません。
プロンプトを書く際には、入社間もない新入社員に丁寧に指示をだすようなつもりで、自分が求めているタスクについて丁寧かつ詳細に情報を入力するようにしましょう。

▼プロンプトを詳細に書くよい例と悪い例


コツ1-2.役割(ペルソナ)を演じてもらう

ChatGPTに特定の役割(ペルソナ)を演じてもらい回答させることが有効なことがあります。

三重引用符で区切られたテキストについて、小学校の先生のように丁寧でわかりやすく解説してください。

“””(ここにテキストを挿入)”””


コツ1-3.区切り文字を使用して、指示と入力情報を明確に分ける

指示内容とcontext(入力情報)を明確に区別できるように、入力情報をトリプルクォーテーション(”””)、XMLタグ、セクションタイトルなどの区切り記号を活用しましょう

▼トリプルクォーテーション(”””テキスト~”””で区切る)

三重引用符で区切られたテキストを要約してください。

“””(ここにテキストを挿入)”””

▼XMLタグ(<>テキスト~</>)で区切る

同じトピックに関する 2 つの記事 (XML タグで区切られた) について、各記事の主張を要約してください。
次に、どちらがより良い議論を行うかを示し、その理由を説明してください。

<article> (ここに最初の記事を挿入) </article>

<article> (ここに 2 番目の記事を挿入) </article>

▼セクションタイトル(■■:テキスト~)で区切る

論文の要約とそのタイトルの提案が提供されます。
論文のタイトルは、読者に論文のテーマをよく理解させるものであると同時に、目を引くものでなければなりません。
タイトルがこれらの基準を満たしていない場合は、5 つの代替案を提案してください。

要約: (ここに要約を挿入する)

タイトル: (ここにタイトルを挿入)


コツ1-4.タスク実行の手順を指定する

タスク実行の手順(ステップ)を、ステップ1:~、ステップ2:~のように指定することで、より正確な応答が期待できます。

以下の三重引用符で区切られたテキストについて、次のステップで手順を実行してください。

ステップ 1 – ユーザーは三重引用符で囲んだテキストを提供します。「概要: 」という接頭辞を付けて、このテキストを 1 つの文で要約します。

ステップ 2 – ステップ 1 の概要を「翻訳: 」という接頭辞を付けてスペイン語に翻訳します。


“””(ここにテキストを挿入)”””


コツ1-5.例を示す

タスクの処理方法や出力内容などをプロンプトの中で例として示すことで、自分の指示内容を正確に伝えることができます。
これは Few-Shotプロンプトと呼ばれる、有名なプロンプト手法です。
応答のスタイルやトーン(口調など)などのように汎用的な指示が難しいタスクにおいて特に有効です。

以下の該当する文章からキーワードを抽出してください。

テキスト 1: Stripe は、Web 開発者が支払い処理を Web サイトやモバイル アプリケーションに統合するために使用できる API を提供します。
キーワード 1: Stripe、支払い処理、API、Web 開発者、Web サイト、モバイル アプリケーション

##
テキスト 2: OpenAI は、テキストの理解と生成に優れた最先端の言語モデルをトレーニングしました。当社の API はこれらのモデルへのアクセスを提供し、処理言語を伴う事実上あらゆるタスクを解決するために使用できます。
キーワード 2: OpenAI、言語モデル、テキスト処理、API。

##
テキスト 3: {text}
キーワード 3:


コツ1-6.出力の長さを指定する

出力の長さを指定することも効果的です。
出力の長さは、文字数段落箇条書きなどの数で指定できます。

▼出力を文字数で指定する

三重引用符で区切られたテキストを約 50 語に要約します。

“””ここにテキストを挿入”””

▼出力を段落数で指定する

三重引用符で区切られたテキストを 2 つの段落にまとめます。

“””ここにテキストを挿入”””

▼出力を箇条書きの数で指定する

三重引用符で区切られたテキストを 3 つの箇条書きで要約します。

“””ここにテキストを挿入”””


コツ2.参照テキストを提供する

ChatGPTは、「ハルシネーション」と呼ばれる、データとは異なったり存在しないものを誤って生成してしまうことがあります。
プロンプトの中で、参考となるテキスト(情報)を提供してそのテキストを参照して回答するように指示することで、このハルシネーションのリスクを軽減するのに役に立ちます。

コツ2-1.参照テキストを使用して回答するようモデルに指示する

ユーザーの質問・指示内容に関連する信頼できる情報(テキスト)をプロンプトに含めて、その情報を使って答えを出すように指示します。

質問に答えるには、三重引用符で区切られた提供された記事を使用してください。記事内で答えが見つからない場合は「答えが見つかりませんでした」と書いてください。

ユーザー<“””(記事を挿入)”””>

質問: <ここに質問を挿入>

コツ2-2.参考文献を引用して回答するようモデルに指示する

参照文献からの引用のみで回答するよう指示することも効果的です。

三重引用符で区切られた文書と質問が提供されます。
提供された文書のみを使用して質問に答え、質問に答えるために使用された文書の一節を引用してください。
この質問に答えるために必要な情報が文書に含まれていない場合は、単に「情報が不十分です」と記入してください。質問に対する回答が提供される場合は、引用で注釈を付ける必要があります。
関連する文章を引用するには、次の形式を使用します ({“引用”: …})。

“””<ここにドキュメントを挿入>”””

質問: <ここに質問を挿入>


コツ3.複雑なタスクをより単純なサブタスクに分割する

ChatGPTにおいて、複雑なタスクは単純なタスクよりもエラー率が高くなる傾向があります。
そこで、複雑なタスクをより単純なタスクに分割して指示することで、より正確に回答を出しやすくなります。

コツ3-1.インテント(意図)分類を使用する

複雑なタスクの場合、タスクを一連の段階に分解することが有効です。最初にユーザーの質問・指示のタイプ(意図)を分類して、その分類をもとに次細分化されたタスクを実行します。

コツ3-2.以前の対話を要約するかフィルタリングする

会話が非常に長くなる場合、会話の前のターンのやり取りを要約することが有効です。

コツ3-3.長い文書を断片的に要約し、再帰的に完全な要約を構築する

例えば、本のような非常に長いドキュメントを要約するには、全てを読み込ませて要約させるのではなく、ドキュメントの各セクションをまず要約して、各セクションの要約を統合して、全体の要約を生成するのが有効です。


コツ4.モデルに 「考える 」時間を与える

ChatGPTも、人間と同じように時間をかけて答えを導き出すことで推論ミスを減らす効果が期待できます。
特に有効な手法として、段階的な推論を重ねることでより正確な答えを導くことができます

例えば、数学の問題に対する生徒の解答が正しいかを評価させたいとします。
この場合、生徒の回答が正しいかを評価するように指示するプロンプトが最も単純なアプローチですが、生徒の回答を評価させる前に、ChatGPTに自ら試験問題の回答を推論するステップを行わせてから、生徒の回答を評価させる手順にすることで、より正確な応答が期待できます。

このように、問題の回答をすぐに求めるのではなく、中間推論のステップを経て、段階的な推論(思考連鎖)を重ねて解答に導くプロンプト手法を、Chain of Thought思考の連鎖)といいます。

Chain of Thoughtのプロンプト例は以下の通りです。

▼Chain of Thoughtのプロンプト例

このグループの奇数を合計すると偶数になります。: 4、8、9、15、12、2、1。
A: 奇数を全て加えると(9, 15, 1)25になります。答えはFalseです。

このグループの奇数を合計すると偶数になります。: 15、32、5、13、82、7、1。
A:

2行目の「奇数を全て加えると(9, 15, 1)25になります。」というステップを明示することで、ChatGPTに段階的な推論を行わせて、推論の精度を高めることが期待できます。
また、このプロントでは最初の2行で例を示していますが、このようにChain of Thoughtは、「コツ1-5.例を示す」のFew-Shotプロンプトと組み合わせることで、より良い成果を出すことが期待できます。

また、Chain of Thoughtをより簡単に実行させる方法は、「ステップバイステップで考えてみましょう」という一文をChatGPTに加えることです。
この1文を加えるだけで、ChatGPTの推論の精度が高まったとの研究結果も報告されています。

この手法を使えば、上記のFew-Shotプロンプトのように例示を加えなくても、推論の精度を高めることが期待できるため、zero-shot Chain of Thoughtと呼ばれています。

▼「ステップバイステップで考えましょう」を追加したプロンプト

私はスーパーに行って10個の缶詰を買いました。母に2つ、弟に2つ渡しました。それから5つの缶詰を買って1つ食べました。残りは何個ですか?
ステップバイステップで考えてみましょう。


コツ5.外部ツールの使用

代表的なものとして、RAGを活用して外部データを提供することでChatGPTの応答精度を高めることが期待できます。
外部ツールを使用して、応答精度を高める代表的な手法として以下の3つが挙げられます。

  • コツ5-1.エンベディングを使ったナレッジ検索(RAG)を実装する
  • コツ5-2.コード実行を使ってより正確な計算を行うか、外部APIを呼び出す
  • コツ5-3.モデルに特定の関数へのアクセスを与える

ただし、これらの手法はOpenAIのAPIを活用してアプリケーション開発を行う開発者向けの専門的な内容になるため、詳細は割愛します。


コツ6.系統的にテストする

ChatGPTの応答精度のパフォーマンスを高めるにあたって、プロンプトを変更したことに伴う影響を体系的に測定することが重要です。

これも、「コツ5.外部ツールの使用」と同じく、OpenAIのAPIを活用してアプリケーション開発を行う開発者向けの専門的な内容になるため、詳細は割愛します。


<参考>OpenAI公式のプロンプト集

OpenAIは、プロンプトの書き方のコツと合わせて豊富なプロンプト例(英語)を公開しました。
誰でも、無料で見れるので参考にしてみてください。

参考記事:OpenAI公式のPrompt examples


まとめ

この記事は、本家OpenAIが直伝する「ChatGPTのプロンプトの書き方のコツ」について、特に一般のChatGPTユーザーに有益な内容を中心に具体例付きでわかりやすく解説します。

まとめると、以下の通りです。

まとめ
・ChatGPTのプロンプトを上手に書くコツは以下の
コツ1.明確な指示を書く
コツ2.参照テキストを提供する
コツ3.複雑なタスクをより単純なサブタスクに分割する
コツ4.モデルに 「考える」”時間を与える
コツ5.外部ツールの使用
コツ6.変更を系統的にテストする

この記事が、ChatGPTの活用の参考になれば幸いです。


「ChatGPTマガジン」を運営するゴートマン合同会社は、クライアント様ごとの課題やニーズに応じたChatGPTの導入・活用のコンサルティングやChatGPTカスタマイズ開発などをご提供しています。

ご興味のある企業様はお問い合わせフォームよりお気軽にご相談ください。