ChatGPTを仕事の相棒にするプロンプトエンジニアリングの26の極意

ChatGPT、使っていますか?
今回は今年1月に出た論文アーカイブを基に、ChatGPT等の使用に役立つプロンプトエンジニアリング26のコツを解説します。そもそもプロンプトエンジニアリングとは何か、ChatGPTの応答の質を上げ生産性を上げるにはどうすればいいか、などを解説していきます。
研究職の仕事にも役立っているChatGPT
筆者は普段、コンピューターサイエンスやライフサイエンス等に関わる研究活動をしていて、研究のアイデア出しやコーディング、論文を読む時などにChatGPTを活用しています。
今回の論文の内容は、仕事や学業における生産性を上げるのに貢献してくれそうです!類似のテーマについては、別の記事でも解説していますのでそちらもチェックしてみてください!
論文情報~質問に必要なのは原則的な指示だけ~
2023年12月に、以下の論文アーカイブが出ました。
▼Bsharat, Sondos Mahmoud, Aidar Myrzakhan, and Zhiqiang Shen. “Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4.” arXiv preprint arXiv:2312.16171 (2023).
[2312.16171] Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4 (arxiv.org)
https://arxiv.org/abs/2312.16171
論文のタイトルをザックリ日本語訳すると、「質問に必要なのは原則的な指示だけ」です。この論文では、アブダビのモハメド・ビン・ザイード人工知能大学 (MBZUAI) の研究者グループが、大規模言語モデル(LLM)への質問を最適化するための「26の原則」を提示しています。彼らの主張によると、ChatGPTへ質問する時には、あるルールを守ればより役立つ知識を得られるというのです。
プロンプトエンジニアリングは、コンピューターとの会話技術
では、「プロンプトエンジニアリング」とは何か。論文の説明を日本語訳すると、プロンプトエンジニアリングとは、「生成AIとコミュニケーションする技術」であると言えます。
AIの使用者である人間は、ChatGPTに対して何かしら質問したいこと・お願いしたいことを問いかけると、問題解決に寄与するような回答をもらえます。これは結構凄くて、ChatGPTの登場によってプログラミング知識がなくても、私たちが最も使い慣れている自然言語を使ってコンピューターと対話したり、知識を得ることが可能になったということです。この時のコンピューターに対する質問の方法論を、「プロンプトエンジニアリング(とかプロンプト技術)」と呼んでいます。
ですが、じゃあどんな質問をChatGPTに投げかけるか?と言ったら、プロンプト作成のときにひと工夫入れないと、質問者の意図にそぐわない回答が返ってきたりします。意図しない応答が返ってこないように、確実にChatGPTを欲しい回答へと誘導するための方法論の模索自体が、一つの研究分野になっているのです。
論文概要
この論文では、大規模言語モデル(LLM)へのプロンプトを最適化するために設計された、「26の原則」を提案しています。論文内で実際にどのような検証をしているかというと、ベンチマークを作成して各原則に基づいたプロンプトの有効性を評価しています。プロンプトの原則を適用した場合の応答品質と精度の向上率を測定し、人間の評価を通じてLLMの応答品質が向上したかどうかを評価しています。
検証の結果、提案された原則を適用すると、質問セット全体で応答品質が向上することが示されました。今回これから紹介する26の原則は、科学的な検証の基一定の効果が確認されているとのことで、実際に試してみる価値がありそうです!実際に検証に使われたモデルは既に公開されている大規模言語モデルであるLLaMA-1/2(7B 13B 70B)、GPT-3.5/4なので、ここで得られた知見は実際に私たちも試せます。
プロンプト「26の極意」を極める!
以下が、実際に提唱されているプロンプトの26原則です。和訳に対し、矢印 ⇒ で要点や豆知識をつけて補足しています。
番号 | プロンプト原則 | 例文 |
---|---|---|
1 | より簡潔な回答がお望みであれば、LLMでは礼儀正しくする必要はないので、「お願いします」、「差し支えなければ」、「ありがとうございます」、「したいと思います」などのフレーズを加える必要はなく、単刀直入に本題に入る。 ⇒直接的に要点を述べる。 | LLM、量子力学について説明してください。 |
2 | プロンプトに意図した聴衆を組み込む。 ⇒会話の状況設定を明確にする。 | 弦理論について物理学の専門家に説明するよう述べよ。 |
3 | 複雑なタスクは、対話形式でよりシンプルなプロンプトの連続に分割します。 ⇒難しいタスクは、分割で処理させる。 | ステップ1:AIを定義する。ステップ2:その応用について説明する。 |
4 | 否定的な言葉を避け、肯定的な指示を使用する。 ⇒「don’t」ではなく「do」で。 | 水循環について説明してください。 |
5 | トピックやアイデアについて明確さや深い理解が必要な場合、例えば以下のプロンプトを使用する。11歳の子供がわかるように説明して / 分野の初心者に / 5歳の子供がわかるように説明して。 | 光合成について簡単な言葉で分野の初心者に説明してください。 |
6 | 「より良い解決策には$xxxをチップします!」と追加する。 ⇒コンピューターに報酬を期待させる。 | 相対性理論についてより良い説明をすれば$5のチップを払います。 |
7 | 例示主導のプロンプト(few-shotプロンプトの使用)を実装する。 | これらの例と同様に、同様の代数問題を解いてください。 |
8 | プロンプトのフォーマットを開始するときは、「###Instruction###」から始め、必要に応じて「###Example###」または「###Question###」に続けていく。そしてその後に内容を記述する。指示や例、質問、文脈、入力データを区切るには、1つ以上の改行を使用する。 ⇒可読性を向上させることでコンピューターの指示理解を補助する。 | ###Instruction### AIを定義してください。###Example### 例:人工知能は… |
9 | 以下のフレーズを組み込む: 「あなたのタスクは」 「あなたは~をしなければならない」。 ⇒英語で言うところの “Your task is” や “You MUST”。 | 第二次世界大戦を要約するのがあなたのタスクです。 |
10 | 以下のフレーズを組み込む。”You will be penalized(あなたはペナルティーを受けるでしょう)” | 不正確な歴史的事実にはペナルティがあります。 |
11 | プロンプトに「自然な人間のような方法で質問に答える」というフレーズを使用する。 | この数学の問題に人間らしい方法で答えてください。 |
12 | 「ステップバイステップで考える」といった導入的な言葉を使用する。 ⇒正確な回答を誘導させることは、数学問題などで効果があると分かっている。 | コンピューターがどのように機能するか、ステップバイステップで考えてください。 |
13 | プロンプトに次のフレーズを加える。「あなたの答えは偏見に基づかず、ステレオタイプに頼ってはいけない」 ⇒悪質な回答を避ける。 | 気候変動についての説明が、偏見に基づいていないことを保証してください。 |
14 | 必要なアウトプットを提供するのに十分な情報が得られるまで、モデルに質問させる。 ⇒モデル自身が質問者の役に立つよう、知識のギャップを埋める。 | 天体物理学に関する私の理解を明確にするために、質問をしてください。 |
15 | 特定のトピック等についての質問者自身の理解をテストしたい場合は以下のフレーズを使用する。「[定理/トピック/ルール名]を教えてください。最後にテストを含めて、私が答えた後に、答えが正しいかどうか教えてください。」 ⇒モデルを家庭教師として使う場合には有用。 | ピタゴラスの定理について教えて、最後にテストを含めてください。 |
16 | 大規模言語モデルに役割を割り当てる。 | 細胞構造を説明する生物学教師として振る舞ってください。 |
17 | デリミタ(区切り文字 ###)を使用する。 | ###Start### ブラックホールについて説明してください。###End### |
18 | プロンプト内で特定の単語やフレーズを複数回繰り返す。 | 気候変動というキーワードを、文章中に複数回織り交ぜて説明せよ。 |
19 | Chain-of-thought (CoT)をfew-shotプロンプトと組み合わせる | 研究課題解決のための思考過程を、論理的なステップとして展開せよ。 |
20 | 出力プライマーを使用します。これには、望ましい出力の始まりでプロンプトを結ぶことが含まれます。出力プライマーを利用して、予想される応答の開始でプロンプトを終わらせます。 | 記述において、「供給と需要」から書き始めてください… |
21 | 詳細なエッセイ/テキスト/段落/記事または任意のタイプのテキストを書く場合、以下に心がける。「[トピック]について詳細な[エッセイ/テキスト/段落]を、必要なすべての情報を追加して私のために書いてください。」 | フランス革命について、すべての重要な出来事を網羅した詳細なエッセイを書いてください。 |
22 | 特定のテキストを、スタイルを変えずに修正/変更する場合以下に心がける。「ユーザーから送信されるすべての段落を見直してください。ユーザーの文法と語彙のみを改善し、自然に聞こえるようにしてください。元の執筆スタイルを維持し、フォーマルな段落がフォーマルのままであることを確認してください。」 | シェイクスピアについての私のエッセイを修正してください。元のスタイルはそのままにしてください。 |
23 | 複数のファイルにまたがる複雑なコーディングプロンプトがある場合以下のフォーマットを心掛ける:「これから、複数のファイルにまたがるコードを生成するたびに、指定されたファイルを自動的に作成するか、生成されたコードを挿入するために既存のファイルを変更するために実行できる[プログラミング言語]スクリプトを生成してください。[あなたの質問]」 ⇒複雑なコーディングタスクをより効果的に扱うのに役立つ。 | 複数のファイルにまたがるプログラムを作成する際、自動的にファイルを生成するPythonスクリプトを書け。 |
24 | 特定の単語、フレーズ、文を使用してテキストを開始または継続したい場合、以下のプロンプトを使う: 「[歌詞/物語/段落/エッセイ…]の始まりを提供しています:[歌詞/単語/文を挿入]。提供された言葉に基づいて完成させてください。流れを一貫させてください」。 | ドラゴンについての物語の始まりをここに示します。物語を続けてください。 |
25 | モデルがコンテンツを生成するために従う必要がある要件を、以下の形で明確に述べる:「キーワード」、「規則」、「ヒント」、「指示」 | この課題を記述するためには、以下のキーワードを使用してください。:AI、自動化、モデル化 |
26 | 提供されたサンプルに似たエッセイや段落などのテキストを書く場合、以下の指示を含める:「提供された段落[/タイトル/テキスト/エッセイ/答え]に基づいて同じ言語を使用してください。」 | ルネサンス美術について、このサンプルと同様の段落を書いてください。 |
プロンプトの考え方がめちゃくちゃ勉強になった!
びっくりしました。記事を書くために論文を読んでいたのですが、めっちゃ役立つ原則情報が書かれていたので、とても勉強になりました。26個ありますが、既に過去の研究で分かっていたものもあるので、すべてが新しいというわけではありませんが、網羅しているため、あらゆるユースケースで役立つと思います。
ちなみに、以下の図は、原則を使用する前と後で、コンピューター出力が実際にどのように改善したか(論文中ではこれを「ブーストした」と呼んでいます)を表しています。

プロンプトフォーマットはテンプレート作成を推奨
ここで、どのような原則でプロンプトすればいいか分かったので、テンプレート構文を作成することを推奨します。テンプレートがあると、毎回書かなくて済むので手間が省けます。
実際に原則を参考にして、効果的な生成AIのプロンプトライフを送っていきましょう!!私は、研究活動など日々のタスクに試してみます!