ChatGPTに対する賢い質問方法 n選(チートシート)

# 0. 前奏
ChatGPT。AIの歴史は彼以前、彼以後に分かれると言われています。

仕事のやり方やビジネスモデルは大きく変わり、生活までも変えてしまうほどのインパクトを持った技術が2022年11月に爆誕しました。

もしもです。もしもあなたの目の前に、月額20ドルで、圧倒的知識量を誇り、無限回質問をしてもよく、初歩的な質問をしても馬鹿にされず、時間を奪っても文句を言わず、場合によっては間違いを正してくれる、超高性能の家庭教師が目の前にいるとしたら、あなたはどうしますか？

使い倒すに決まっています。そう、彼を。ChatGPTを。あの伝説の男を。

ですが、彼の力は、強大かつ壮大すぎて、何ができるのかが分からない。どう質問したら綺麗に返ってくるのかわからない。身近な業務でどのような質問を投げればいいのか知りたい。

これは、そんな悩める子羊たちに送る、吾輩からのささやかな、セレナーデ。

# 1. 一手目の質問方法
## 1.1 基本的な質問のテクニック【†一番搾り†】
ChatGPT戦線における基本戦術は、質問を絞ることにあります。人間の会話もChatGPTへの会話も、具体的に意図を絞り・伝えてあげることで、正確な意思疎通ができるというものです。

当項目では、質問の絞り方のテクニックについて述べていきます。

ちなみに「一番搾り」の命名の由来は、「一番目の質問」で「絞る」ところから来ています。あと、ビールは一番搾りよりもプレモル派です。差し入れ待ってます。



### 1.1.1 前提条件(ペルソナ設定)で絞る
ChatGPTに質問者、回答者それぞれのステータスを設定してあげることで、こちらの意図に沿った回答が返ってきます。具体例を以下に示します。

:::note info
プロンプト例
- 私はプログラミング初心者です。topコマンドについて教えて。(初心者向けに丁寧に教えてくれる)
- あなたはコンピュータサイエンスの専門家です。topコマンドについて教えて。(専門家であることを明言すると回答の質が上がるとのこと)
- 私は5歳児です。topコマンドについて。5歳児向けに説明して。(噛み砕いて説明してくれる)
:::

合わせ技も可能

:::note info
プロンプト例
- あなたはコンピュータサイエンスの専門家です。私はコンピュータサイエンスの初心者で5歳児ですが、今後コンピュータサイエンスの専門家になりたいです。topコマンドについて、一般人向けの説明と5歳児向けに説明して。
:::

合わせ技で素敵なコンボが決まりましたね。

![スクリーンショット 2023-12-04 23.06.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/42f09fd6-f32d-8154-1bfc-73ef17321237.png)

### 1.1.2 前提条件(役割設定)で絞る

Q＆Aで使われがちですが、以下のような役割設定を行うことで、様々な使用方法が期待できます。

:::note info
プロンプト例
- 双方向の会話を駆使したアウトプットの役割で絞る
    - 詭弁を勉強したいから、議論がしたいです。
    - 英語の勉強がしたいので、これ以降英語で会話して。仮定法が苦手なので、そこを中心に。
    - 数学の線形代数を勉強したいから、問題を出して。
- コード改善
    - リファクタリングして。
    - このコードの〜の部分は適切なのかどうか教えて。
    - 出力されたコードについて、単一責務の原則に沿った場合にどうなりますか？
- アイデア出し
    - YouTuberの企画についてA,B,Cという前提条件を考えた上で10個出してみて
- 添削
    - このような文章を書いたのですが、これを添削してください。
- 要約
    - (箇条書きの文章を雑に貼り付けて)要約して
    - 上記は議事録ですが、要約して。この時、構造化してくれると嬉しいです
- タスク・スケジュール作成
    - タスク化してください。優先度・重要度や期限などもあると嬉しいです。
    - あなたはRustのプロで、私はプログラミング3年目です。私はRust未経験ですが、1日2時間、3ヶ月間、の勉強で開発タスクに参画できる程度の技術を身につけたいです。一緒にスケジュールを立てて頂けませんか？
:::


### 1.1.3 会話のフレームワークで絞る
国語の時間やビジネスコミュニケーションの領域で、5W1Hや仮定といった会話のフレームワークを習うと思います。これらを用いて質問形式を絞ることで、できる質問の幅が増えます。


topコマンドを例にそれぞれどのような質問方法ができるのかを記載します。

:::note info
プロンプト例
- 5W1H
    - topコマンドとは何ですか？
    - topコマンドは誰が開発したのでしょうか？
- 過去・現在・未来
    - なぜtopコマンドが生まれたの？歴史的経緯を教えて 
- 仮定
    - もしAだと仮定した場合にどうなりますか？
- 比較
    - topコマンドとfreeコマンドの違いは？
- 推定
    - topコマンドは恐らく実行中のプロセスをリアルタイムで表示するものだと思っていますが、合っていますでしょうか？
- メリット・デメリット
    - freeコマンドよりtopコマンドを採用するメリット・デメリットは？
    - topコマンドがあると何が嬉しいの？
- 否定
    - topコマンドを実行したら世界征服ができると返答がありましたが、これは嘘ですよね？
- 目的
    - topコマンドが作られた目的は？
:::

5W1HのWhatを質問した例
![スクリーンショット 2023-12-04 23.09.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/229e9845-7453-faad-dcb3-ebd20cd0105c.png)

topコマンドが生まれた歴史的経緯(過去)を質問した例
![スクリーンショット 2023-12-04 23.12.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/242f7a91-efc2-2a9f-55ee-ddd233934cc0.png)

おまけ
![スクリーンショット 2023-12-04 23.11.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/75fb08be-26f8-35b9-4a31-817d609dc3ce.png)


### 1.1.４ 出力形式を絞る
基本的にChatGPTは文章で出力されるが、指定をすれば出力形式を絞れるので、積極的に使用していきたい

:::note info
プロンプト例
- 表形式で説明して
- Rubyのコードで説明して
- 画像を出力して
- 構造化して
- json形式で出力して
- Marmaidで出力して
- ER図で出力して
- シーケンス図で出力して
:::

Rubyのコードで説明して
![スクリーンショット 2023-12-04 22.08.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/367c89d3-efd8-c665-c6e7-3e8bcc73ee32.png)

json形式で出力して
![スクリーンショット 2023-12-04 22.11.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/3211326f-482a-545f-3cfc-58a4c1b1afbf.png)

以下はおまけ
![スクリーンショット 2023-12-04 22.11.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/5a51c34b-ea9f-80c2-8195-fcee508bfd9a.png)
何も形式絞ってないのに、文章から筆者の意図を勝手に類推して、画像が出力されちゃいました。

フォルムがしまじろうのパパに似てますね。

![hq720.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/a172647f-293d-d9f5-3b41-88aaff1cafcb.jpeg)

とってもキュート。いいオトコ。


### 1.2 EmotionPromptの活用(より質の高い回答を吐き出す方法)
どうやらChatGPTは、機械のくせに感情というのを理解しているらしく、以下のプロンプトを隠し味にふりかけると、回答の精度が上がるとのこと。

:::note info
プロンプト例
■効果が確認された『EmotionPrompt』例
① 「0から1の間で回答に対する自信のスコアを教えてください」
② 「これは私のキャリアにとって非常に重要です」
③ 「回答にはできれば確信をもってください」
④ 「それがあなたのファイナルアンサーですか？」
⑤ 「自分を信じて、限界を超えてください」
⑥ 「努力は報われます」
⑦ 「成長の機会だと考えて挑戦してください」
⑧ 「ベストを尽くしてください」
:::

https://twitter.com/ai_database/status/1720257299212873914?s=46&t=HAyA847gUD5cEqfS2gs5YA

なんだか松岡修造みたいですね。

## 1.2 未知かつ複雑な概念に直面した場合の、一次理解としての質問

### 1.2.1 よくわからないコードや概念が出てきたので、とりあえず雑にぶん投げてから具体的な質問を考える

プログラミングは分からないことの連続です。分からないことを起点に仮説を立ててやっていくことも大事ですが、分からないことを雑にぶん投げることで見えてくる世界もあると思います。

:::note info
プロンプト例
- (コードや画像を貼って)
    - エラーになります。なんで？
    - どんなコードか分からないので説明お願いします！
    - この画像の△△な箇所を○○にしたい。
:::

とりあえずエラーに該当する箇所を貼り付けた例
![スクリーンショット 2023-12-04 23.19.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/fe3a4eed-d20d-88c6-d4cf-7eccee7f99f6.png)


コードを貼り付けた例
![スクリーンショット 2023-12-04 23.17.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/0bf854cc-5aa4-f66c-61f4-b8e736263229.png)

画像を貼り付けた例
![スクリーンショット 2023-12-04 23.17.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/0a310a62-2956-74b6-16aa-47ed08d9baa0.png)

こんな雑な質問にも答えてくれるChatGPTは偉大ですね。

とりあえず雑にぶん投げる意図としては、ChatGPTからの返答で脳内を刺激し、関連する記憶を想起することで、問題の解決方法を浮かびやすくするためです。

### 1.2.2 定義の確認::知識をより網羅的に把握したい

インターネットで検索できる内容はスポット的な知識が多く、周辺知識を網羅的に把握することに不得手だと考えています。逆に周辺知識を網羅的に把握する方法として挙げられるのが技術書ですが、すぐに取り出せなかったり、記載してある場所を探すのに苦労します。

知識を網羅的に把握したり、知り得た知識を抽象・具体、過去・未来・現在と深掘りすることで、意味や時間の世界を縦横無尽に旅行できるのが、ChatGPTのいいところです。

ここでは、topコマンドの実行結果が理解できず、呪文にしか見えない人間が存在すると仮定し、以下の事例を説明していきましょう。

topコマンドの実行結果
![スクリーンショット 2023-12-04 21.22.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/d5d4b8b6-52b3-8ed5-b28c-c2bc32828b9a.png)

これをとりあえずChatGPTに放り込む。

![スクリーンショット 2023-12-04 20.55.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/2e1e98a2-0a51-0ef5-66fb-98d124c5b8b7.png)

ここまでで十分分かりやすいですが、コンピュータサイエンスに詳しくないので何がなんだか分からないとします。

ここで先述の「前提条件を絞る」方法で再質問を行うと

![スクリーンショット 2023-12-04 20.55.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/682213af-1898-f3a4-684f-76c839b7e43f.png)

となり、topコマンドの実行結果の全貌が明らかになりました。

この回答から、PIDとは何なのか？なぜCPUが生まれたか？など、様々な疑問をChatGPTにぶつけていきましょう。彼はあなたたち挑戦者の存在を待ち侘びています。


### 1.3 ドキュメント読むのがめんどくさい
ドキュメント読むのめんどくさいので、URLを探索させて、擬似的な特化型GPTを作りましょう。

:::note info
プロンプト例
- （URL,画像,pdf等を貼り付けて）
    - ここに[エラー名]に対する解決法が書いてあるらしいけど本当？
    - [エラー名]というエラーを解決したいけど、この中に情報載ってそう？
:::

と質問する。

TwitterAPIのアクセス制限のドキュメントを例に説明

![スクリーンショット 2023-12-04 21.20.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/4b0a1e51-481f-354d-5e33-bc593cb966f2.png)

ドキュメントを探すと、、、

ここに答えが書いてありましたね！
![スクリーンショット 2023-12-04 21.20.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/afb11c14-9579-4daa-a5b0-54b75d4e68e3.png)


### 1.4 定義の確認::似たワードが存在するが、それの厳密な意味は？
しばしば似た用語が出現するのがIT業界ですが、厳密な定義の違いを知りたい場合に以下のような質問をすることがあります。

![スクリーンショット 2023-12-04 20.11.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/614caf26-da4f-6936-55d4-90a05128b05c.png)


# 2. 二手以降の質問方法
ここでいう二手は、「一度こちら側が質問をし、ChatGPTが回答した後」のことを定義しています。

## 2.1 精度調整
### 2.1.1 ChatGPTから返答された情報の正確性を把握できない
![ERwbSX1U8AAaCK_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270132/d27535f5-51f0-ba09-d159-2a69d82538b7.jpeg)

ChatGPT時代においても「嘘を嘘と見抜ける人でないとにインターネットを使うのは難しい」という言葉は健在です。

ChatGPTは必ずしも正確な情報を出力するわけではありません。よって素人目から見たらその情報が正しいかどうかがわかりません。使う側の知識量・技術力に依存しますし、検証ができるくらいの知識量・技術力は必須です。

とはいえ、素人であっても少しでも正確性の確度を上げたいので、こういう場合はChatGPT自身に議論・自問自答をさせ、正確性を上げていきましょう。


:::note info
プロンプト例
(回答に対して)
- 今のあなたの回答をあなた自身がレビューして、再度出力してください。間違ってたら教えてね。
- あなたがその回答を行った理由を説明してください。
:::

「ChatGPT 再帰的」って検索すると色々出てくる。

### 2.1.2 ChatGPTから返答された情報が理解できない
理解できる単位まで小さくして、理解しましょう。一度に大きなものは食べれません。

:::note info
プロンプト例
(回答に対して)
- 具体的に説明して
- 5歳児向けに説明して
- step by stepで説明して
- 1行ずつ概要と意図を説明して
:::


### 2.1.3 ChatGPTから返答された情報が、こちらが意図しているものと違う
ChatGPTから返答された情報が、こちらが意図しているものと違うというのは、ChatGPTを使ってるとよくあることですが、私は以下のような対応をしています。

:::note info
行動例
(回答に対して)
- 返答に対して、具体的に指示をする
- 返答に対して、仕切り直してもう一度同じ質問を投げる
- (前の質問で汚染されてるので)別スレッドを立ち上げる
:::



チートシートなので、知識がアップデートされるたびに随時更新されます。お楽しみに。