見出し画像

chatGPTで良いプロンプトを作る方法について、chatGPTと相談してみた

この記事の対象ユーザ

AIと壁打ちをして、考えを深めたい人向け。

ChatGPTが考える自分ができることは

  1. 質問への回答

  2. アイデア生成

  3. 文章の執筆・校正

  4. 翻訳

  5. 要約作成

  6. プログラミングコードの提案

  7. チュートリアル・解説作成

  8. ブレインストーミング支援

  9. 意思決定のための情報提供

  10. クリエイティブ作品(詩、物語)の作成

であると、当人(当AI)が執筆時点(2023年3月18日)に言っている。
とはいえ、これだけだと幅が広すぎてわかりづらい。このため、自分がモヤっと考えていることを壁打ちして明確化したり、精度を上げたり、盲点に気づいたりする、という co-pilot 的なやり方をしたい人(要するに私だ)向けに、記述する。

ChatGPTと話す前に、明確な目的を準備しよう。


現状、Web版のChatGPTには、PDFやMS-Wordなどのファイルを直接読み込ませることはできない。となると、質問は、ある程度細切れにしていく必要がある。
この場合、質問をするときの背景説明、文脈説明を最初にしておかないと、頓珍漢な答え、ないし、漠然とした浅い答えが返ってくる可能性が高い。
また、いきなりYES/NOで答えられるクローズドな質問をすると、それは質問者である人間の枠をでない回答になる可能性があるので、それも良くない。
Chatなので、ダラダラと書き付けるのもいいのだが、先方にもリソースがあるし、回数制限に引っかかってしまうかもしれない。
このため、せめて「何を求めるのか」という根本のところは、明確に持っておきたい。

まず最初に打ち込むプロンプト

私のおすすめは、壁打ちをしたい内容について、
「○○についての入門書を書きます。目次例を挙げてください」
というプロンプトを打ち込むことだ。

こうすると、包括的な内容が箇条書き形式、しかも大見出し小見出しベースで表示される。この中の論理構成と、抜け漏れダブりがないかをみていくと、自分の中のモヤモヤがより鮮明に言語化される。

chatGTPをcopilotするための入門書を書きます。目次例を挙げてください
に対して、以下のような回答があった。割と包括的である。全部書かせるという鬼畜のようなやり方もあるが、そうすると自分で全部読まないといけないので、この中から自分で聞きたい部分を中心に細かく聞いていく。

[注] 以下、回答とあるのは、執筆時点でのChatGPTの回答の引用である。読みやすさに配慮して、太字などにしたり改行を加えているのは筆者である。

回答:
1. はじめに
1.1 ChatGPTとは
1.2 AI技術の進歩とChatGPT
1.3 ChatGPTの応用分野
1.4 本書の目的と対象読者

2. ChatGPTの基本概念
2.1 GPT-4アーキテクチャの概要
2.2 トークンとシーケンス
2.3 Transformerモデル
2.4 学習データとファインチューニング

3. ChatGPTのセットアップとインストール
3.1 OpenAI APIの利用
3.2 サードパーティ製ライブラリの利用
3.3 セットアップとインストールの手順

4. ChatGPTを使ったプログラミング
4.1 プロンプトの設計
4.2 レスポンスの解析
4.3 モデルの調整
4.4 実践例:独自のチャットボット開発

5. ChatGPTの応用事例
5.1 コンテンツ生成
5.2 コード補完(CoPilot)
5.3 カスタマーサポート
5.4 教育とトレーニング
5.5 自然言語理解(NLU)タスク

6. ChatGPTの制限と倫理的考慮
6.1 モデルの制限と注意点
6.2 倫理的な使用方法
6.3 データプライバシーとセキュリティ

7. ChatGPTの将来展望とトレンド
7.1 モデルの進化と改善
7.2 トークンエコノミーとアプリケーション
7.3 人工知能と人間の共創

8. まとめ
8.1 本書で学んだことの要約
8.2 今後の学習へのアドバイス

付録
A. OpenAI APIのリファレンス
B. サンプルコードとチュートリアル
C. 用語集と参考文献

素晴らしい。かなり包括的だ。さて、これをもとに、深掘りをしていこう。そのためには、良いプロンプトを書いて、良い回答を得ないといけない。

良いプロンプトとは

例えば、英語で、欧米のような時差のある外国の人にメールで頼み事をするのだと思うといいかもしれない。何度もやり取りをすると、明後日の方向のことについて詳細に教えてくれるため、時間が溶ける可能性がある。このため、準備して問うことが大事。

基本的に注意すべきは以下の2点。

  • 前提条件、前提知識の共有

  • 明確で具体的な、内容及びアウトプットの形式指示

さて、ChatGPT自身に、どういうプロンプトが良いのか聞いてみた。

問い:良いプロンプトの特徴について記述してください。

回答:良いプロンプトの特徴は以下の通りです。

明確さ: プロンプトは、ChatGPTに何を求めているのかを明確に伝えるべきです。曖昧さがなく、具体的な指示や質問をすることで、モデルが適切な回答を生成しやすくなります。

具体性: プロンプトが具体的であればあるほど、ChatGPTは正確な情報を提供できる確率が高まります。具体的な文脈やキーワードを含めることで、モデルがより適切な回答を生成することが可能です。

文脈の提供: プロンプトに文脈を与えることで、ChatGPTがより適切な回答を生成しやすくなります。背景情報や関連する事実を提供することで、モデルはその文脈を考慮して回答を生成します。

問いかけの形式: 良いプロンプトは、適切な形式で問いかけることが重要です。例えば、オープンエンデッドな質問やクローズドな質問、リスト形式の要求など、求める回答の形式に応じてプロンプトを設計することが効果的です。

指示性: ChatGPTが求める回答のスタイルや制約を明示的に伝えることで、より目的に沿った結果が得られることがあります。例えば、「簡潔に」や「詳細に」などの指示を加えることで、回答の品質を向上させることができます。

反復性: 良いプロンプトは、モデルに何度も繰り返し実行できるものです。これにより、同じ問いに対して異なる回答を生成させたり、迅速にフィードバックを反映させたりすることが可能です。

総じて、良いプロンプトは明確で具体的であり、適切な文脈を提供し、求める回答の形式やスタイルに応じて設計されていることが重要です。これらの特徴を持つプロンプトは、ChatGPTがより正確で有益な回答を生成する可能性が高まります。

深掘りのステップ:回答を詳述してもらう方法

悪くない。悪くないが、腑に落ちるかというと、むり。例えば、「明確性」と「具体性」は記述内容が重複しているような感じもする。ケムに巻かれているのでは? という不安が拭えない。
原因は、ChatGPTがハルシネーションしているからかもしれないし、自分の問いが曖昧だからかもしれないし、単に自分の知識が不足して理解できないからかもしれない。
それを炙り出すために、深掘りが必要だ。

深掘りをするために、深掘りのポイントを示して質問をする。
AIは、とてもスマートだが自分ではモノを考えていないので、丸投げしたらいい感じにしてくれる、ってことはない。ギチギチに詰めていっても、相手はAIだから怒らないので、詰めていってみよう。


問い:悪い例と良い例を比較できるように記述し、もっと詳細に述べてください。

この場合は、「例の比較」という具体的な回答方法の明示と、「もっと詳細」という前回の回答よりも詳しいものを、という注文をつけて、深掘りをしてもらう。
[memo] 「もっと詳細」という程度の曖昧さは、理解してくれるらしい。嬉しい。

回答:以下に、悪いプロンプトの例と良いプロンプトの例を比較し、それぞれの特徴を詳細に説明します。
【悪い例】
プロンプト: "映画について教えて"
このプロンプトの問題点:
曖昧さ: 映画に関する質問が非常に広範であり、具体的な指示が不足しています。
文脈の欠如: 映画のジャンルや特定の映画に関する情報がないため、ChatGPTがどのような情報を提供すべきか判断できません。
問いかけの形式: 回答の形式が明確でなく、モデルがどのようなスタイルで回答すべきかわかりません。
【良い例】
プロンプト: "2020年に公開されたSF映画の中で、評価が高いトップ3を教えてください"
このプロンプトの良い点:
明確さ: 2020年公開のSF映画に関する情報を求めていることが明確に伝わります。
具体性: 評価が高い映画に絞り込むことで、より具体的な回答が期待できます。
文脈の提供: 特定のジャンルと年代に焦点を当てることで、適切な文脈が与えられています。
問いかけの形式: トップ3のリストを求めていることが明確であり、モデルが回答の形式を理解しやすいです。
これらの例からわかるように、良いプロンプトは具体的で明確であり、適切な文脈と回答形式を提供することが重要です。これにより、ChatGPTは正確で有益な回答を生成する可能性が高まります。逆に、曖昧で文脈が欠けたプロンプトでは、モデルが適切な回答を生成することが困難になります。

悪い点を挙げて、それを比較して良い例を挙げ、良い例がなぜ良い例かを説明してくれている。とてもわかりやすい。
ここには回答例は記さないが、「中学生にもわかるように」など対象年齢を下げるようにすると「適切な回答」が「ぴったりな答え」などに、変化させることができる。

深掘りのステップ:範囲の限定

広い範囲の質問をすると、広く回答をしようとしてくれるので、回答はどうしても浅くなる。このため、回答をもらいたいトピックをうまく狭めたい。
これは、Chat GPTによると、インクルード (include/含める)とエクスクルード (exclude/除外する)という言葉で表している。これについての説明は、Chat GPTの回答をそのまま引用してみよう。

プロンプトの作り方: インクルードとエクスクルード
インクルードとエクスクルードは、質問(プロンプト)を作るときに使う技法です。インクルードは、答えに特定の情報を入れることを指示します。エクスクルードは、答えから特定の情報を外すことを指示します。これにより、もっとぴったりな答えがもらえるようになります。

【インクルードの例】
質問: "インターネットで宣伝する方法を5つ、SEOも入れて教えてください。"

この質問では、わざと「SEO」を入れるように言っています。そうすることで、答えに必ず「SEO」についての情報が入ります。

【エクスクルードの例】
質問: "インターネットで宣伝する方法を5つ、SEOは除いて教えてください。"

この質問では、わざと「SEO」を外すように言っています。そうすることで、答えは「SEO」以外の宣伝方法について教えてくれます。
インクルードとエクスクルードは、こんな時に役立ちます。

特定の話題や情報に焦点を当てたい時: インクルードを使って、答えに特定の話題や情報を入れるように指示できます。
普通の情報や知っている話題を避けたい時: エクスクルードを使って、答えから特定の情報を外すように指示できます。
答えの範囲をちょうどよくしたい時: インクルードとエクスクルードを一緒に使うことで、答えの範囲をちょうどよくすることができます。

この技法を使うことで、質問に対する答えがもっとぴったりなものになります。

なお、これは「中学生に通じるような易しい書き方で記述してみてください」という注文をつけたものだ。「最適な」ではなく「ぴったり」という言い方になっていて、柔らかい言い回しになっていることがわかる。

深掘りのステップ:順を追ってきく

ChatGPTのweb版では、まだ、PDFなどのファイルをそのまま読み込ませて回答させることができない。回答の文章が長くなる場合、途中で回答が止まることもある。
量だけの問題ではない。人間側の指示が悪くて、明後日の回答が返ってきたら、それを修正するのが難しいので、時間がかかる。

このため、複雑な問いについては、分解した上で、順を追って質問をしていくことが必要だ。とはいえ、ウォーターフォールのように最初にガチガチに質問を設計して問うとなると、途中で食い違いが起きた時に、やはり修正が難しくなる。人間側に当意即妙な質問返しが必要となる。

ChatGPTはこれを、「ステップバイステップの手順」と「イテレーションによる改善」という二つの言葉で定義を分けていて、相互補完的に利用せよ、と記述してきた。内容をここに引用する。

問い:プロンプトの設計テクニック「ステップバイステップの手順」と、プロンプトの改善と評価:「イテレーションによる改善」とでは、何を言おうとしているのか、対比して詳細に述べよ

回答:プロンプトの設計テクニック「ステップバイステップの手順」とプロンプトの改善と評価「イテレーションによる改善」は、プロンプト作成プロセスの異なる側面を強調しています。以下に、それぞれの概要と対比を示します。

ステップバイステップの手順:
ここでは、プロンプトを設計する際に、情報を段階的に提示する方法を強調しています。このテクニックでは、回答を段階的に構築し、情報を徐々に組み立てることで、複雑な問題や多くの情報を扱う際にも理解しやすい回答が得られます。このアプローチは、特に長い説明や手順を求める場合に有効です。

イテレーションによる改善:
ここでは、プロンプト作成プロセスにおける試行錯誤の重要性を強調しています。イテレーションは、プロンプトとその回答を繰り返し評価し、改善するプロセスです。このプロセスでは、プロンプトを試し、得られた回答をチェックし、必要に応じてプロンプトを修正して改善します。このアプローチは、最適なプロンプトと回答を得るための継続的な改善を目指します。

対比:
ステップバイステップの手順は、プロンプト設計のテクニックであり、情報の提示方法に焦点を当てています。一方、イテレーションによる改善は、プロンプト作成プロセス全体の改善方法に焦点を当てており、どのようにして最適なプロンプトと回答を得るかに重点を置いています。

両者は異なるアプローチですが、プロンプトの設計と改善プロセスにおいて、相互補完的な役割を果たします。ステップバイステップの手順を使って効果的なプロンプトを作成し、イテレーションによる改善を通じてプロンプトと回答の質を継続的に向上させることが、最終的にはより適切で理解しやすい回答を得る

ステップバイステップの手順は、受験勉強でよくある問題のような感じか。大問の中に、大問を順序よく解けるような小問を順番に行う感じ。
イテレーションについては、次項に述べる。

深掘りのステップ:イテレーション:問う、検証する、更に問う

項は改めるが、ハルシネーション対策は常に必要。このため、イテレーション段階でも、AIは必ずしも正しいことを回答するわけではない、ということを肝に銘じて、取り組む必要がある。

問い:「イテレーションによる改善」について、ここでいうイテレーションの定義と、何をみたときに改善をするのか、またどういう改善をしていくのが良いか、良い例と悪い例を交え、中学生に教えるように記述してください

回答:
イテレーションとは、何度も試行錯誤を繰り返しながら、少しずつ改善していくことを意味します。プロンプトを作るときにも、イテレーションを使って、答えが分かりやすくなるように改善していきます。

イテレーションの方法:
プロンプトを試してみる: 最初に作った質問(プロンプト)を使って、答えをもらいます。
答えをチェックする: もらった答えが、分かりやすくて正確な情報かどうか確認します。
プロンプトを改善する: 答えが理想と違う場合、質問(プロンプト)を修正して、もう一度試してみます。

何を見て改善するか:
答えが理解しにくい場合: もっと分かりやすい言葉で説明してもらえるように、質問を工夫します。
答えが不正確な場合: もっと正確な情報をもらえるように、質問の内容を修正します。
答えが足りない場合: もっと詳しい情報をもらえるように、質問を具体的にします。

【悪い例】
質問: "スマホはどうやってつくられるの?"
答え: "スマホは工場でたくさんの部品を組み立てて作られます。"

【良い例】
質問: "スマホを作る際の主要な工程とそれぞれの役割について教えてください。"
答え: "スマホの製造には、設計、部品調達、組み立て、検査の4つの工程があります。設計ではスマホの形状や機能が決められ、部品調達では必要なパーツが集められます。組み立てでは、部品が組み合わせられてスマホになり、最後に検査で品質がチェックされます。"

この例では、最初の質問は答えが簡単すぎたので、もっと具体的な質問に改善しました。そうすることで、答えが分かりやすくて詳しいものになりました。

具体的な疑い方は、別項にて。
割と単純な内容に関する検索であれば、これでずいぶんいけるようになるのではないか、と思う。

いいなと思ったら応援しよう!