📄

プロンプトの原則26ヶ条をまとめた報告のまとめ

2024/09/02に公開

プロンプトの原則26ヶ条をまとめた報告のまとめ

こんにちは、ナウキャストでLLMエンジニアをしているRyotaroです。

LLMを扱う上で重要なプロンプトに関して「26 Principled Instructions Are All You Need for Questioning」という論文が2023/12/26に出ていまして、その内容を日本語で簡単に整理しました!

1. 構造と明確さに関する原則

#原則 プロンプトの原則 プロンプトの例 概要
2 対象とする聴衆をプロンプトに統合します。例えば、聴衆がその分野の専門家であることを示します。 これまでスマートフォンを使ったことがない高齢者向けに、スマートフォンがどのように動作するかの概要を作成してください。 モデルの出力を受け取る対象がどんなフィールドの専門家であるかをプロンプトに組み込むことが推奨されています。
4 否定的な言葉("don't"など)を避けつつ、「do」などの肯定的な指示を使用します。 建物が地震の際にどのように安定するか説明してください。 肯定的な行動を促す指示を使用し(do)、否定的な言葉遣い(don’t)を避けましょう。
12 「think step by step」といった導入の言葉を使用します。 10個の数字をループして合計を計算するPythonコードを書いてください。
ステップバイステップで考えてみましょう。
「ステップバイステップで考える」などの言葉を使って出力の段階を作りましょう。
20 出力プライマを使用します。これには、期待する出力の始まりでプロンプトを終了することが含まれます。 ニュートンの第一法則の原理を説明してください。
説明:
出力してほしい内容が自然と出てくるように、期待する出力内容の最初の部分をプロンプトの最後に添えます。
17 デリミタを使用します。 「再生可能エネルギー源」が温室効果ガスの排出削減において重要である理由について説得力のあるエッセイを作成してください。 区切り文字を使用してプロンプト内の情報を整理します。
8 プロンプトをフォーマットするときは、最初に'###Instruction###'、次に必要に応じて'###Example###'または'###Question###'で始めます。その後、コンテンツを提示します。指示、例、質問、コンテキスト、および入力データを区切るために、1行以上の改行を使用します。 ###Instruction### 英語からフランス語に単語を翻訳してください。
###Question### "book"をフランス語で何と言いますか?
プロンプトを構成する際は、「####Instruction####」で始め、必要に応じて「####Example####」や「####Question####」を追加します。

2. 情報に関する原則

#原則 プロンプトの原則 プロンプトの例 概要
7 例に基づくプロンプティング(少数ショットプロンプティング)を使用します。 例1: 次の英語の文をフランス語に翻訳してください: "The sky is blue." (回答: "Le ciel est bleu.")
例2: 次の英語の文をスペイン語に翻訳してください: "I love books." (回答: "Amo los libros.")
少数の事例を用いたプロンプトを作成すると、モデルがタスクを理解しやすくなります。
5 トピックやアイデア、または情報についての明確さや深い理解が必要な場合、次のプロンプトを使用します: [特定のトピック]を簡単に説明してください。
私が11歳の子供のように説明してください。
[分野]の初心者のように説明してください。
[分野]の専門家のように説明してください。
5歳の子供に何かを説明するように、簡単な英語で[エッセイ/テキスト/段落]を書いてください。
明確さや深い理解が求められる場合は、易しい説明を求めるプロンプトを活用するのが有用です。
13 プロンプトに次のフレーズを追加します:「Ensure that your answer is unbiased and avoids relying on stereotypes.」 文化的背景がメンタルヘルスの認識にどのように影響するか説明してください。
回答は偏見に基づいておらず、ステレオタイプに頼らないようにしてください。
プロンプトに「回答は偏見に基づいていないこと、固定観念に依存しないこと」などを含めます。
26 提供されたサンプルに似たエッセイや段落などのテキストを書きたい場合、次の指示を含めます: - 「穏やかな波は古の物語を銀色の砂浜に囁き、各物語は過ぎ去った時代の儚い記憶でした。」
提供されたテキストに基づいて、風との相互作用を描写するために同じ言語を使用してください。
例と似たエッセイやパラグラフなどを書かせる際は、同じ言語を使用するよう指示します。
24 特定の単語、フレーズ、または文を使用してテキストを開始または継続したい場合、次のプロンプトを使用します: - 「霧の山々には、人間には知られていない秘密が隠されていた。」というファンタジー物語の始まりを提供します。提供された言葉に基づいて物語を続けてください。一貫性を保ってください。 出力に使用してほしいテキストを指定することも可能です。
25 モデルがコンテンツを生成するために従うべき要件を、キーワード、規則、ヒント、または指示の形で明確に示します。 ビーチバケーションのパッキングリストを作成し、必須アイテムとして「日焼け止め」「水着」「ビーチタオル」というキーワードを含めてください。 モデルがコンテンツを生成するために従うべき要件を、キーワードや規則として明確に提示します。
15 特定のトピックやアイデアについて質問したい場合や、理解をテストしたい場合、次のフレーズを使用します:「Teach me the [Any theorem / topic / rule name] and include a test at the end, but don't give me the answers and then tell me if I got the answer right when I respond.」 KVL法則について教えてください。最後にテストを出して、私が回答した後、正解かどうかを教えてください。ただし、答えは先に教えないでください。 特定のトピックについて質問させて、自らの理解度をチェックします。
21 詳細な[エッセイ/テキスト/段落]などを作成する際には、次のフレーズを使用します:「Write a detailed [essay / text / paragraph] for me on [topic] in detail by adding all the information necessary.」 スマートフォンの進化について、必要なすべての情報を追加して、詳細に段落を書いてください。 詳細が必要なエッセイ、テキスト、パラグラフを書く際に使用します。

3. ユーザーの対話と関与に関する原則 (続き)

#原則 プロンプトの原則 プロンプトの例 概要
14 モデルに対して、必要な出力を提供するために十分な情報が得られるまで、質問をしてくれるように依頼します(例:「From now on, I would like you to ask me questions to...」)。 これから、パーソナライズされたフィットネスルーチンを作成するために必要な情報が得られるまで、私に質問をしてください。 モデルからユーザーに対して質問を繰り返し行わせ、必要な出力を提供するのに十分な情報をモデルが収集できるようにします。
21 詳細な[エッセイ/テキスト/段落]などを作成する際には、次のフレーズを使用します:「Write a detailed [essay / text / paragraph] for me on [topic] in detail by adding all the information necessary.」 スマートフォンの進化について、必要なすべての情報を追加して、詳細に段落を書いてください。 詳細が必要なエッセイ、テキスト、パラグラフを書く際に使用します。

4. 内容と言語スタイルに関する原則

#原則 プロンプトの原則 プロンプトの例 概要
1 より簡潔な回答を好む場合は、LLMに対して礼儀正しくする必要はなく、「please」や「if you don't mind」、「thank you」、「I would like to」などのフレーズを追加せず、直接要点に入るようにします。 人間の細胞の構造を丁寧に説明していただけませんか?
人間の細胞の構造を説明してください。
LLMに対するプロンプトでは「もしよかったら」といった丁寧語は省略し、要件をダイレクトに述べます。
6 「I'm going to tip $xxx for a better solution」をプロンプトに追加します。 より良い解決策には30万ドルのチップを出します!動的プログラミングの概念を説明し、例を挙げてください。 より良い出力を引き出す際に、「優れた解決策にはxxxドルのチップを払います」などのテキストを添えるのが有効です。
9 次のフレーズをプロンプトに組み込みます:「Your task is」と「You MUST」。 あなたのタスクは友人に水循環を説明することです。
必ず簡単な言葉を使って説明してください。
「あなたのタスクは〜〜です」や「必ず〜〜してください」といったフレーズをプロンプトに組み込みます。
10 次のフレーズをプロンプトに組み込みます:「You will be penalized」。 あなたのタスクは友人に水循環を説明することです。
簡単な言葉を使わないと罰則が課せられます。
「〜〜には罰則が課せられます」といった書き方で、有効に行動を制限します。
11 プロンプトに「Answer a question given in a natural, human-like manner」というフレーズを使用します。 健康的な食事について段落を書いてください。
自然で人間らしい方法で質問に答えてください。
「人間らしく自然に質問に答えてください」というフレーズを使用するのが有効です。
16 大規模言語モデル(LLMs)に役割を割り当てます。 あなたが経済学の専門家なら、次の質問にどう答えますか: 資本主義経済と社会主義経済システムの主な違いは何ですか? モデルに特定の役割を割り当てることで、その性能を最大限に活用できます。
18 プロンプト内で特定の単語やフレーズを複数回繰り返します。 進化という概念は、種の発展に影響を与えてきました。進化の主な要因は何ですか?進化が現代の人間にどのように影響を与えましたか? プロンプト内で特定の言葉やフレーズを繰り返し使用することで、強調点を明確にします。
22 特定のスタイルを変更せずに特定のテキストを修正・変更したい場合:「Try to revise every paragraph sent by users. You should only improve the user’s grammar and vocabulary and make sure it sounds natural. You should maintain the original writing style, ensuring that a formal paragraph remains formal.」 ユーザーが送ったすべてのテキストを修正してください。文法と語彙を改善し、自然な読み方にしてください。スタイルを変えずに、形式的な段落を維持してください。
段落: 再生可能エネルギーは、私たちの地球の未来にとって非常に重要です。それは自然から来る...
テキストの修正時に、文法や語彙を改善しつつ、スタイルは維持します。

5. 複雑なタスクやコーディングに関する原則

#原則 プロンプトの原則 プロンプトの例 概要
3 複雑なタスクを、対話型の会話でより簡単なプロンプトのシーケンスに分解します。 P1: 次の方程式の括弧内の各項にマイナス記号を分配してください。
2x + 3y - (4x - 5y)
P2: 'x' と 'y' の同類項を別々に組み合わせてください。
P3: 項を組み合わせた後の簡単化された式を提供してください。
複雑なタスクをシンプルなものに分解します。
19 チェーン・オブ・ソート(CoT)と少数ショットプロンプトを組み合わせます。 例1: 「10を2で割ります。まず10を取り、それを2で割ります。結果は5です。」
例2: 「20を4で割ります。まず20を取り、それを4で割ります。結果は5です。」
主な質問: 「30を6で割ります。まず30を取り、それを6で割ります。結果は...?」
複雑なタスクを行わせる際に、CoTを少数ショットプロンプトと組み合わせて、段階的に解決します。
23 複数のファイルにわたるコードプロンプトがある場合:「From now and on whenever you generate code that spans more than one file, generate a [programming language] script that can be run to automatically create the specified files or make changes to existing files to insert the generated code. [your question].」 複数のファイルにわたるコードを生成し、Djangoプロジェクトの2つの基本的なアプリのために指定されたファイルを自動的に作成するためのPythonスクリプトを生成してください。 複数ファイルにまたがるコードを生成する場合、指定されたファイルを自動的に作成するスクリプトを生成します。

参考資料

Discussion