みんなが知らないプロンプトテクニック6選

以下のプロンプティングのレビュー論文を読んでいると意外と知らないプロンプトテクニックが載っていました。

https://arxiv.org/pdf/2406.06608

今日はその中でも役立ちそうな隠れプロンプトを6個紹介します。
みなさんどれだけ知っていますか？
ではいきましょう。

## 1. SimToM (Simulated Theory of Mind)


### 説明
複数の人物やオブジェクトを含む複雑な質問に対処するテクニック。ある人物が知っている事実のセットを確立し、それのみに基づいて質問に答えます。
- パースペクティブテイキング：特定のキャラクターが知っている情報のみをフィルタリングします。
- シミュレーション：フィルタリングされた情報に基づいて質問に答えます。

### プロンプト例
```:プロンプト1.パースペクティブテイキング

以下は、複数の場所で起こる複数のキャラクターに関する一連の出来事です。

あなたの仕事は、指定されたキャラクター{character}が知っている出来事のみを出力することです。

以下のルールがあります：
1. キャラクターは自分が行うすべての出来事を知っています。
2. キャラクターが特定の部屋/場所にいる場合、その部屋で起こるすべての出来事を知っています。これには、他のキャラクターがその場所に入る/出ること、その場所にある物の位置、誰かが物を別の場所に移動させることなどが含まれます。
3. キャラクターがある場所を離れ、その場所にいない場合、その場所内で起こるいかなる出来事についても知りません。ただし、その場所に再び入ることはできます。

ストーリー：{story}

{character}はどの出来事を知っていますか？
上記のルールに従って出来事のみを出力し、説明は提供しないでください。
```

```:プロンプト2. シミュレーション
{perspective}
あなたは{name}です。
上記の情報に基づいて、以下の質問に答えてください：
{question}
答えは簡潔に、1文で十分です。上記の選択肢から1つを選んでください。
```
### 論文
https://arxiv.org/pdf/2311.10227


## 2. Rephrase and Respond (RaR)

### 説明 
RaRは、LLMに質問を言い換えて詳細化させてから回答させる手法です。これにより、LLMは人間の意図をより良く理解し、より正確な回答を生成できるようになります。
RaRは以下の2つのステップで構成されています：

- Rephrase (言い換え): LLMに元の質問を言い換えさせ、詳細化します。
- Respond (回答): 言い換えられた質問に基づいて回答を生成します。

### プロンプト例 
```
1. 次の質問を別の言葉で言い換えてください：[元の質問]
2. 言い換えた質問に対して回答してください。
```
### 論文

https://arxiv.org/pdf/2311.04205

## 3. Re-reading (RE2)

### 説明
プロンプトに「もう一度質問を読んでください」というフレーズを追加し、質問を繰り返すテクニック。

### プロンプト例
  ```
  質問：[元の質問]
  もう一度質問を読んでください：[元の質問の繰り返し]
  #思考誘導プロンプト（例："Let's think step by step"）みたいなのを入れてもいい#

  回答：
```
### 論文

https://arxiv.org/pdf/2309.06275

## 4. Step-Back Prompting

### 説明
複雑な質問に対処するテクニック。質問を直接解くのではなく、より抽象的な高レベルの概念や原理を導き出し、それに基づいて推論をするテクニック

抽象化：元の質問からより一般的な「step-back」質問を生成します。
推論：抽象化で得られた高レベルの概念や原理に基づいて元の質問に答えます。

### プロンプト例
```:プロンプト1.抽象化（ステップバック）
あなたは世界知識の専門家です。あなたの仕事は、質問をより一般的な「step-back」質問に言い換えることです。以下に例を示します：

元の質問：何がバッタの群れを引き起こすのか？
Step-back質問：昆虫の大量発生の原因は何か？
```

```:プロンプト2.推論
元の質問：何がバッタの群れを引き起こすのか？

(プロンプト1の回答)バッタの群れは気候変動や農業慣行の変化などの環境要因によって引き起こされることが多い。

```
### 論文

https://arxiv.org/pdf/2310.06117


## 5. Least-to-Most Prompting

### 説明

Least-to-Most Promptingは、複雑な問題を小さな部分問題に分解し、段階的に解決していくテクニックです。
大体は以下のステップに分けてプロンプトを実行します。

- 問題分解：複雑な問題を単純な部分問題に分割
- 段階的解決：各部分問題を順番に解決の生成
- 統合：最終的に、部分的な解答を組み合わせて全体の問題を解決策を提示

### プロンプト例
```:プロンプト1. 問題分解
以下の問題を解くために必要な段階を特定してください。各段階を簡潔に説明し、番号を付けてリストアップしてください。
問題：カフェでエスプレッソマシンを使ってラテを作る手順を説明してください。
```



```:プロンプト2. 段階的解決
以下の問題の解決手順に従って、各ステップを実行してください。前のステップの結果を使用して、次のステップに進んでください。
問題：カフェでエスプレッソマシンを使ってラテを作る手順を説明してください。
解決手順：
(プロンプト１での回答を記載)
エスプレッソの抽出
ミルクの準備と泡立て
ラテの組み立て

```

```:プロンプト3. 最終解答
これまでの各ステップの結果を使用して、元の問題に対する最終的な解答を提供してください。
問題：カフェでエスプレッソマシンを使ってラテを作る手順を説明してください。
(プロンプト１とプロンプト２での回答を記載)
ステップ1: エスプレッソの抽出 - {エスプレッソ抽出の手順}
ステップ2: ミルクの準備と泡立て - {ミルクの泡立ての手順}
ステップ3: ラテの組み立て - {ラテの組み立て手順}
```

### 論文

https://arxiv.org/pdf/2205.10625

## 6. Complexity-based Prompting

### 説明


Complexity-based Promptingは、複雑な例を選んでアノテーションし、それらをプロンプトに含めることで、モデルの推論能力を向上させるテクニック。

- 複雑な例の選択：より多くの推論ステップを含む例をプロンプトとして選びます。
- 複雑性に基づく一貫性：生成された複数の推論チェーンの中から、より複雑なものを優先して最終的な回答を決定します。



### プロンプト例 

```:プロンプト1. 複雑な例の選択
以下の問題を解くために、複雑な推論プロセスを含む例を選んでください。各例は多くの推論ステップを含むものとします。
問題：{complex_problem}
複雑な例1：
{complex_example_1}
複雑な例2：
{complex_example_2}
```

```:プロンプト2. 問題解決
上記の複雑な例を参考にして、以下の問題を解いてください。各ステップを詳細に説明してください。
問題：{problem_to_solve}
解答：
```

```:プロンプト3. 複雑性に基づく一貫性
以下の問題に対して、複数の解答を生成してください。その後、最も複雑な推論プロセス（最も多くのステップを含むもの）を持つ解答を選んでください。
問題：{problem_for_consistency}
生成された解答：

{solution_1}
{solution_2}
{solution_3}
```
### 論文

https://openreview.net/pdf?id=yf1icZHC-l9

## 最後に

みなさん、どのぐらい知っていましたか？
名前だけ知らないみたいけど、使ってたみたいなのもあったかと思います。
ぜひレビュー論文も読んでみてください。

https://x.com/hudebakonosoto