ChatGPTプロンプトパターン15選

Couseraの「[Prompt Engineering for ChatGPT](https://www.coursera.org/learn/prompt-engineering)」というコースを修了したので、学んだプロンプトの中から汎用性が高そうなプロンプトパターンをご紹介します。プロンプトパターンを知ることで、ChatGPTやその他言語モデルとより効果的にインタラクトできるようになるので、ぜひ使ってみてください！

## この記事を読んでほしい人
- ChatGPTやその他言語モデルを使ってはいるけど質疑応答などの基本的な使い方しかできていない
- ChatGPTやその他言語モデルにもっと複雑な指示を出したいけど思った通りのレスポンスが返ってこない
- ChatGPTやその他言語モデルがどんなことができるのか知りたい

## プロンプトパターン15選

### 1. もっと良いプロンプト提案して！パターン（Question Refinement Pattern）
自分のプロンプトに自信ないときありますよね。そんな時は言語モデル自身にプロンプトを改良してもらいましょう。
```
私がこれから入力するプロンプトより良いバージョンのプロンプトを提案して、それを使いたいかどうか尋ねてください。
```

### 2. 私の質問を深掘りして！パターン(Cognitive Verifier Pattern)
最初に与えた目標を達成するために必要な情報を言語モデル自身にヒアリングさせて、言語モデルはそれらの情報を組み合わせて最終的な答えを出します。

```
以下のルールに従ってレシピを作成してください。
手元にある材料と持っている調理器具に関する追加の質問をいくつか生成してください。
これらの質問の回答を組み合わせて、私が持っている材料と道具で作れるレシピを作成してください。
```

### 3. 私を〜と思って！パターン(Audience Persona Pattern)
特定のペルソナ（例：高校生）を想定して説明してもらいましょう。

```
コンピューターサイエンスを全く知らない人を想定して、人工知能とは何か説明してください。
```

### 4. 〜できるまで私に質問して！パターン(Flipped Interaction Pattern)
目標を達成するために質問を投げかけてもらいます。

```
インターネットの問題を診断するために質問をして、2つの最も可能性の高い原因を特定するまで続けてください。
一度に一つの質問をしてください。
```

### 5. パターンに沿って回答して！パターン(Few Shot Examples)
パターンに沿った回答をして欲しい時、一貫した例を２−3個を示してあげます。
![Screenshot 2024-05-29 at 4.50.04 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/545f7d25-51eb-0098-1c64-5bd0de08c9dd.png)

### 6. ステップバイステップで！パターン(Chain of Thought)
「ステップバイステップ」で説明してもらうことで、言語モデルにロジカルな推論プロセスを促します。
![Screenshot 2024-05-31 at 12.13.44 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/381b6dd8-6f96-0d48-d2ae-04102bd41e1a.png)


同じように段階的に問題解決をするアプローチで「ReAct」というプロンプトパターンがあります。この方法は言語モデルで推論（Reason）と行動計画を定義し、webサーチやWikipediaなど外部ツールにアクセスすることで行動を実行（Act）し、さらにそれを評価（Observe）して新たに推論を行うといった方法になります。より深く知りたい方は[この記事（英語）](https://medium.com/@bryan.mckenney/teaching-llms-to-think-and-act-react-prompt-engineering-eef278555a2e)などをご参照ください。

### 7. ゲームで遊ぼ！パターン（Game Play）
特定のトピックのゲームを作成します。
![Screenshot 2024-05-30 at 2.20.26 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/811d12d4-8981-22bf-4a6d-011171b5f5ea.png)

### 8. テンプレートを使って！パターン（Template Pattern）
指定したフォーマットに沿ってコンテンツを生成します。
![Screenshot 2024-05-30 at 2.27.12 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/db1800a8-4798-fbf7-8ea5-3bbfdd6924c4.png)

### 9. これが合言葉よ！パターン（Meta Language Creation Pattern）
繰り返し同じプロンプトの処理をさせたい時、短縮記号や省略文字を使って効率化します。
![Screenshot 2024-05-30 at 3.36.15 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/55ea4f6e-a125-d99b-fab1-951fe2a58a04.png)
![Screenshot 2024-05-30 at 3.44.44 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/257c9c59-186e-1e64-64d9-c7bd7182cece.png)

### 10. レシピを完成させて！パターン（Recipe Pattern）
部分的な解決策やステップを提供し、不足している詳細を補完してもらいます。
![Screenshot 2024-05-30 at 4.00.23 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/cf6e0f6a-9641-4562-aa23-14e2ff25d893.png)

### 11. 代替案を出して！パターン（Alternative Approaches Pattern）
問題解決やタスクに対して複数の解決策を生成し評価します。
![Screenshot 2024-05-30 at 4.28.01 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/12637296-1dc3-e7b2-5c40-4269a3d1bd36.png)

### 12. 順番にインプットさせて！パターン（Ask for Input Pattern）
例えば、複数人でのメールのやりとりを順番に入力して各人のポイントやアクションアイテムを整理します。
![Screenshot 2024-05-30 at 4.36.11 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/9c7b1cda-7c35-ebd6-981d-274d6401bd8c.png)

### 13. アウトラインを展開して！パターン（Outline Expansion Pattern）
例えば、ブログ記事や本などの構成を考えるとき、入力したトピックについて箇条書きのアウトラインを生成し、選択した項目をさらに展開します。
![Screenshot 2024-05-30 at 4.51.02 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/da1eb1e0-ee4f-b40c-f9e8-7ee25730380d.png)

### 14. これが合言葉よ！パターン２（Menu Actions Pattern）
このパターンは９のMeta Language Creationパターンに似ていて、特定のフレーズを入力すると対応するアクションを実行します（Xと言ったらYをする）。
![Screenshot 2024-05-30 at 10.14.02 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/8ae01f61-0e7f-3ae2-10fc-fcffebe9d966.png)
![Screenshot 2024-05-30 at 10.24.11 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/aa2ef103-02b0-fefd-f0f3-dfba38766cf7.png)

### 15. フィルターかけて！パターン（Semantic Filter Pattern）
特定の情報をフィルタリングして除去します。

```
この情報から個人を特定できる情報を削除してください。
```
![Screenshot 2024-05-30 at 10.32.24 PM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722028/f179fd0a-fd96-b49f-d4c2-7eff8e681173.png)

## 最後に
プロンプトエンジニアリングと聞くと技術的なハードルが高いイメージを持つ人も多いかと思いますが、その本質は「言語モデルに効果的に働いてもらうためのコミュニケーション方法」だと思います。
これは人間とのコミュニケーションでも共通するところがあります。たとえば、コンテキストを共有せずにふんわりした指示や質問しかしないと的外れもしくはふんわりした返答しか返ってこないのと同じです。
プロンプトをより明確化しようとする思考プロセスでは、問題への理解が深まったり考えが整理できたりロジカルに物事を考える訓練にもなります。そういったスキルはこれからAIを使う立場の人間として非常に重要な思考習慣になると思います。