【ChatGPT】プロンプトエンジニアが教える、ChatGPTを最大限に活用するためのプロンプト作成術

# はじめに
<!-- 発端や概要を記載 -->
皆さんこんにちは。
現在、とあるWeb開発企業でサーバーサイドエンジニア兼プロンプターとして勤務しております。

皆さんは普段ChatGPTを活用する際、プロンプトを意識して作成しておりますでしょうか。
そもそもプロンプトという言葉自体、聞き馴染みのない方も少なくないと思います。

### プロンプトとは
> 生成AIに対する命令や指令をプロンプトと呼びます。 与える命令・指示の内容によって回答が変わるため、プロンプトは重要です。 生成AIによる回答の精度を高めるには、指示・命令の書き方にこだわる必要があります。 求めている回答を得るための適切な質問の仕方や指示の出し方を考えなければいけません。

参照: https://jitera.com/ja/insights/28656#:~:text=%E7%94%9F%E6%88%90AI%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E5%91%BD%E4%BB%A4%E3%82%84,%E3%81%AA%E3%81%91%E3%82%8C%E3%81%B0%E3%81%84%E3%81%91%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82

要はプロンプトとは、生成AIに与える指示、命令文のことです。
生成AIは、こちらの命令次第で出力結果が如何様にも変化してしまうものなのです。

今回は実務でプロンプトと日々向き合っている私が、プロンプト作成で常日頃意識しているポイントについてまとめました。
実務で生成AIサービスに携わっている方だけでなく、日常的にChatGPT等を活用している方にも有益な内容となっているはずなので、最後までご覧いただけますと幸いです🙇‍♂️

# 目次
<!-- タイトルとアンカー名を編集 -->
1. [プロンプト作成のポイント](#プロンプト作成のポイント)
     [ユースケース](#ユースケース)
    1. [マークダウンで記述する](#マークダウンで記述する)
    1. [指示を項目で分ける](#マークダウンで記述する)
    1. [AIにプロを演じてもらう](#AIにプロを演じてもらう)
    1. [参考情報を合わせて渡す](#参考情報を合わせて渡す)
    1. [出力に制約を付ける](#出力に制約を付ける)
    1. [出力フォーマットを用意する](#出力フォーマットを用意する)
1. [完成](#完成)
1. [最後に](#最後に)

<!-- 各チャプター -->
<a id="#プロンプト作成のポイント"></a>
# プロンプト作成のポイント
以下にプロンプト作成で意識しているポイントを、ユースケースを混えて紹介します。

<a id="#ユースケース"></a>
## ユースケース
今回は一例として、不動産営業後のお客様に対して行うべき、次のアクションを提案してくれるようなプロンプトを作成してみたいと思います。

<a id="#マークダウンで記述する"></a>
## 1. マークダウンで記述する
まず大事なのは、マークダウン記法でプロンプトを記述することです。
マークダウン記法は生成AIにとって理解しやすい記法になるので、積極的に活用していきましょう。

マークダウン記法とはなんぞや？という方は、「見出し」、「リスト」、「コードブロック」の3つの記法だけでも覚えておくと大変便利です。

https://qiita.com/kouz496/items/adcf8c4dfabf192e1d34

<a id="#指示を項目で分ける"></a>
## 2. 指示を項目で分ける
皆さんはGPTに質問をする時など、思いついたまま大雑把に指示を投げていませんか？
簡単な質問をする時はいいかもしれませんが、より正確な回答が欲しいときは項目分けすることで情報が整理され、AIの理解しやすいプロンプトになります。

今回は下記のようなフレームワークを作成しました。
```
## 指示

## 参考情報

## 制約条件

## 出力フォーマット

```

<a id="#AIにプロを演じてもらう"></a>
## 3. AIにプロを演じてもらう
AIに特定の役割を演じてもらうのも効果的です。例えば、AIに「一流の不動産営業マン」と役割を与えると、回答の質が向上します。役割を明確にすることで、AIの回答が専門的で具体的になります。
```
## 指示
あなたは一流の不動産営業マンです。
"参考情報"を参考に、顧客に対するフォローアップの具体的な次のアクションを提案してください。
```

<a id="#参考情報を合わせて渡す"></a>
## 4. 参考情報を合わせて渡す
プロンプトに関連する参考情報を一緒に提供することも重要です。これにより、AIはコンテキストをより深く理解し、精度の高い回答を生成できます。例えば、質問に関連するデータや事例を追加することで、回答の質が向上します。
今回は、仮のお客様情報を与えることにします。
```
## 参考情報
- お客様のお名前: 佐藤様
- 顧客は30代の夫婦で、子供が2人の4人家族。
- 顧客は現在の住まいが手狭になり、広い家をお探し中。
- 顧客は通勤時間の短縮と子供の学校の近くであることを重視。
- 予算は5000万円以内。
```

<a id="#出力に制約を付ける"></a>
## 5. 出力に制約を付ける
AIの出力に制約を設けることも有効です。例えば回答の長さを指定したり、出力に縛りを与えることで、意図しない回答が出力される可能性を減らすことができます。
```
## 制約条件
- 出力の際は"出力フォーマット"を遵守してください。
- 顧客のニーズや希望をしっかりと理解し、それに基づいたアクションを提案してください。
- 出力の際は"参考情報"も合わせて参考にしてください。
- アクションは箇条書きで、それぞれ詳細な理由も明記してください。
- 【次に行うべきアクション】の項目は必要に応じて増減させて構いません。
```

<a id="#出力フォーマットを用意する"></a>
## 6. 出力フォーマットを用意する
最後に、出力フォーマットを用意することも重要です。例えば、回答を箇条書きで整理する、特定のテンプレートに沿って回答を生成するなど、明確なフォーマットを設定することで、利用者にとって理解しやすい結果を得ることができます。
```
## 出力フォーマット
・お客様の情報やヒアリング内容
[お客様の情報やヒアリングの内容など]

【次に行うべきアクション】
・[アクション1]
    [理由]
・[アクション2]
    [理由]
```

<a id="#完成"></a>
# 完成
完成したプロンプトがこちらになります。
```
## 指示
あなたは一流の不動産営業マンです。
"参考情報"を参考に、顧客に対するフォローアップの具体的な次のアクションを提案してください。

## 参考情報
- お客様のお名前: 佐藤様
- 顧客は30代の夫婦で、子供が2人の4人家族。
- 顧客は現在の住まいが手狭になり、広い家をお探し中。
- 顧客は通勤時間の短縮と子供の学校の近くであることを重視。
- 予算は5000万円以内。

## 制約条件
- 出力の際は"出力フォーマット"を遵守してください。
- 顧客のニーズや希望をしっかりと理解し、それに基づいたアクションを提案してください。
- 出力の際は"参考情報"も合わせて参考にしてください。
- アクションは箇条書きで、それぞれ詳細な理由も明記してください。
- 【次に行うべきアクション】の項目は必要に応じて増減させて構いません。

## 出力フォーマット
-------------------
【お客様の情報やヒアリング内容】
[お客様の情報やヒアリングの内容など]

【次に行うべきアクション】
・[アクション1]
    [理由]
・[アクション2]
    [理由]
-------------------
```
出力も問題なさそうですね！
```

【お客様の情報やヒアリング内容】
佐藤様、30代の夫婦で、子供が2人の4人家族。
現在の住まいが手狭になり、広い家を探している。
通勤時間の短縮と子供の学校の近くであることを重視している。
予算は5000万円以内。

【次に行うべきアクション】
・希望エリア内の物件リストの提供
顧客が重視している通勤時間と子供の学校の近くという条件に合う物件をリストアップし、詳細情報を提供します。これにより、佐藤様が希望に合った物件を具体的に検討できるようになります。

・物件の内見スケジュールの提案
実際に物件を見ていただくことで、広さや立地などを具体的に確認できるため、決断しやすくなります。佐藤様のご都合に合わせて内見のスケジュールを提案します。

・ファイナンシャルプランナーとの相談の手配
予算5000万円以内で最適な資金計画を立てるために、ファイナンシャルプランナーとの相談を手配します。これにより、佐藤様の資金計画がより明確になり、安心して物件選びができるようになります。

・近隣環境の情報提供
子供の学校や通勤に関する情報、近隣の生活環境（スーパー、公園、病院など）の詳細を提供します。これにより、佐藤様が新しい住環境を具体的にイメージしやすくなります。

・ローンの事前審査のサポート
住宅ローンの事前審査をサポートし、資金計画を具体化します。これにより、購入プロセスがスムーズに進むようになります。
```

<a id="#最後に"></a>
# 最後に
生成AIの出力の良し悪しはこちらの命令次第で決まります。プロンプト作成のポイントを押さえることで、生成AIの出力をより効果的に活用できるようになります。
今回のポイントやフレームワークはほんの一例なので、ぜひ皆さんでAIと対話しながらプロンプトの最適解を導き出してみてください。
最後までご覧いただき、ありがとうございました。