The Half Moon on St Clements
© Copyright Steve Daniels and licensed for reuse under this Creative Commons Licence.

 

今回は、生成系AIのプロンプトエンジニアリングについて、GoogleのBard / OpenAIのChatGPT / MicrosoftのBingに訊いてみました。

早速始めます。


 

私#1:

プロンプトエンジニアリングというのは、だれがいつごろ提唱しだしたのでしょうか?原典の論文のようなものがあれば教えてください。

Bard#1:

プロンプトエンジニアリングという用語は、2020年にGoogle AIの研究者であるOriol Vinyals氏によって提唱されました。Vinyals氏は、プロンプトエンジニアリングを「言語モデルにタスクを実行するように指示するために使用される人間のテキスト」と定義しています。

Vinyals氏は、プロンプトエンジニアリングを使用して、GPT-3言語モデルの性能を向上させるという論文を発表しました。この論文では、プロンプトエンジニアリングを使用して、GPT-3言語モデルが算術推論、コード生成、および質問応答などのタスクを実行できるようにしました。

プロンプトエンジニアリングは、大規模言語モデルの性能を向上させるための新しい技術として、注目を集めています。プロンプトエンジニアリングは、まだ発展途上の技術ですが、将来的には、大規模言語モデルが様々なタスクを実行できるようにする上で、重要な役割を果たす可能性があります。

プロンプトエンジニアリングに関する原典の論文は、次のとおりです。

Oriol Vinyals, et al. “Prompt Engineering for Natural Language Processing.” arXiv preprint arXiv:2005.14165 (2020).

この論文では、プロンプトエンジニアリングの概要と、プロンプトエンジニアリングを使用して大規模言語モデルの性能を向上させるための手法について説明しています。

 

ところが、原典の論文として示された「arXiv:2005.14165」について調べたところ:

https://arxiv.org/pdf/2005.14165.pdfの内容は、Google AIの研究者であるOriol Vinyals氏らにより書かれたものではなく、OpenAIのTom B. Brown氏ら31人の共著で、タイトルは「Language Models are Few-Shot Learners」となっており、Vinyals氏の名前は共著者の中にありませんでした。

そこで、同じ質問をChatGPT(GPT-3.5)にしたところ:

 

ChatGPT(GPT-3.5)#1:

「プロンプトエンジニアリング」は、OpenAIが提唱した技術であり、2021年に初めて公に発表されました。具体的な原典の論文という形ではなく、OpenAIのブログポストや公式ドキュメントなどで詳細が説明されています。

OpenAIは2021年6月に、GPT-3におけるプロンプト利用の一部を紹介するブログポストを公開しました。このブログポストでは、プロンプトエンジニアリングの考え方と利点について説明されています。

また、OpenAIは2021年10月に、プロンプトエンジニアリングの詳細な説明を提供する公式ドキュメントを公開しました。このドキュメントでは、プロンプトの作成方法や調整の手法、プロンプトの応用事例などが詳しく解説されています。

以上の情報を基にして、「プロンプトエンジニアリング」の提唱はOpenAIによって2021年に始まり、具体的な原典の論文は存在しないものと言えます。

 

私#2:

OpenAIが2021年10月に公開した「プロンプトエンジニアリングの詳細な説明を提供する公式ドキュメント」の英文タイトルと、公開されたドキュメントのURLを教えて下さい。

 

ChatGPT(GPT-3.5)#2:

申し訳ありませんが、私の知識は2021年9月までのものであり、2021年10月以降の情報は把握していません。そのため、OpenAIが2021年10月に公開した具体的なドキュメントの詳細やURLを提供することができません。

ただし、OpenAIの公式ウェブサイトやブログ、技術ドキュメントなどを検索してみることで、該当のドキュメントを見つけることができるかもしれません。OpenAIの公式ウェブサイトや公式ブログにアクセスし、最新の情報をご確認いただくことをおすすめします。

 

ChatGPTの回答では、プロンプトエンジニアリングを提唱しだしたのはGoogleではなく、OpenAIで、OpenAIの公式ドキュメントの中でプロンプトエンジニアリングという言葉を使いだしたといっています。

そこで、その公式ドキュメントについて、ChatGPTに尋ねてみたのですが、(案の定)GPT-3.5ベースのChatGPTは情報提供を拒んだので、GPT-4で「Web browsing」機能をオンにしたGPT-4べースのChatGPTに同じ質問をしたところ:

 

ChatGPT(GPT-4 Brouse with Bing)#2:

OpenAIが2021年10月に公開したプロンプトエンジニアリングについての公式ドキュメントの英文タイトルは「Best practices for prompt engineering with OpenAI API」で、公開されたドキュメントのURLは以下の通りです:https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api&#8203

 

私#3:下記URLの内容を日本語で800文字くらいに要約してください。https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api&#8203

 

ChatGPT(GPT-4 Browse with Bing)#3:

OpenAI APIを使用する際のプロンプトエンジニアリングのベストプラクティスを要約します。以下のガイドラインは、効果的な指示を作成し、希望する結果を得るために考慮すべきです。

  • 最新のモデルを使用する: 2022年11月時点で最適なモデルは、テキスト生成には “text-davinci-003″、コード生成には “code-davinci-002″です。
  • プロンプトの冒頭に指示を置く: 指示とコンテキストを明確に分けるために、”###”や”””を使用します。
  • 詳細で具体的に指示する: 望む結果、長さ、形式、スタイルなど、できるだけ具体的で詳細な指示を行います。
  • 希望する出力形式を例で明示する: モデルは具体的な形式要件が示された場合により良い反応を示します。
  • ゼロショットから始め、フューショット、それでも効果がなければファインチューニングする: 最初はゼロショットを試し、次にフューショット、それでも効果がなければファインチューニングを行います。
  • “ふわっとした”不明瞭な表現を減らす: より具体的で明確な表現を使用します。
  • 何をしないかだけでなく、何をするべきかを指示する: モデルに何をしないかだけでなく、何をするべきかを具体的に指示します。
  • コード生成時には「先導する単語」を使用する: モデルを特定のパターンへと誘導するために、”import”や”SELECT”のような単語を使用します。
  • さらに、モデルの出力を調整するためによく使用されるパラメータについても理解することが重要です。主にmodel、temperature、max_tokens、そしてstopがあります。

 

私#4:

これは、OpenAI APIを使う場合のプロンプトエンジニアリングのベストプラクティスについて書かれたものだと思いますが、APIではなく、ChatGPT Plusをブラウザで使う場合のプロンプトエンジニアリングについて解説したものは、別にあるでしょうか?

 

ChatGPT(GPT-4 Browse with Bing)#4:

ChatGPT Plusを使用する際の特定のプロンプトエンジニアリングに関するベストプラクティスについての公式な文書を見つけることができませんでした。しかし、OpenAI APIを使用する際のプロンプトエンジニアリングに関するベストプラクティスは、一般的にChatGPT Plusを使用する際にも有用であると考えられます。なぜなら、どちらも同じGPT-3モデルをベースにしているからです。したがって、以下のヒントが役立つかもしれません:

  • 最新のモデルを使用する。
  • 指示をプロンプトの最初に置き、###または”””を使用して指示とコンテキストを分ける。
  • 望ましいコンテキスト、結果、長さ、形式、スタイルなどについて、具体的で詳細な説明を行う。
  • 望ましい出力形式を例で示す。
  • ゼロショットから始め、それがうまくいかなければフューショットを試し、それでもうまくいかなければファインチューニングを行う。
  • 「フワフワした」または不正確な説明を減らす。
  • 何をしないかだけでなく、代わりに何をするかを明示する。
  • コード生成に特化 – モデルを特定のパターンに向かせるために「リーディングワード」を使用する。
  • また、モデルの出力を調整するためによく使用されるパラメータは「model」と「temperature」です。ただし、ChatGPT Plusではこれらのパラメータを直接調整することはできません。

したがって、ChatGPT Plusを使用する際には、プロンプトの構築と表現の工夫が特に重要になります​。

私の情報は2021年9月までのものなので、それ以降にChatGPT Plusの利用ガイドが公開されている可能性もあります。具体的な情報を求める場合は、OpenAIの公式サイトや関連資料をご確認いただくか、OpenAIのサポートにお問い合わせいただくことをお勧めします。

 

OpenAIの公式サイトを確認しましたが、現時点ではChatGPT Plusをブラウザで利用する場合のガイドラインは出ていないようです。

プロンプトエンジニアリングの提唱者に関してはBardよりもChatGPTのいうことが正しいようですが、一応Bingにも同じ質問(私#1)をしてみました。

 

Bing#1:

プロンプトエンジニアリングは、人工知能、特に自然言語処理における概念の一つです。AIが実行すべきタスクの説明を、明示的に与えるのではなく、たとえば質問として入力に組み込むことができます1。2019-2020年にかけて、GPT-2およびGPT-3言語モデルがプロンプトエンジニアリングの重要なステップとして登場しました。

1: https://ja.wikipedia.org/wiki/プロンプトエンジニアリング

 

Prompt Engineering Guideには、プロンプトエンジニアリングに関する最新の論文が掲載されています。これらの論文はリリース日順に並べ替えられており、毎日更新されます。また、これらの論文の要約が毎週ガイドに取り入れられています。

この領域に関する重要な論文としては、”Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing”(2021年7月)が挙げられます。

2: https://www.promptingguide.ai/jp/papers

 

Bingは、プロンプトエンジニアリングの情報源として日本語版のWikiのURLを教えてくれましたが、確かに、詳しく書かれています。

また、https://www.promptingguide.ai/jp/papersには、日本語でプロンプトエンジニアリングに関する最新の論文がリストアップされていました。

そこで、続けてBingに質問を続けることにしました。

 

私#5:

プロンプロエンジニアリングについてわかりやすく説明しているサイト名を、URLとともにいくつか紹介してください。

Bing#2:

プロンプトエンジニアリングについてわかりやすく説明しているサイトとして、以下のサイトがあります。

  • DevelopersIOの「【徹底解説】これからのエンジニアの必携スキル、プロンプトエンジニアリングの手引「Prompt Engineering Guide」を読んでまとめてみた」。

https://dev.classmethod.jp/articles/how-to-design-prompt-engineering/

  • ITmedia NEWSの「「プロンプトエンジニアリング」の“教科書”、日本語版が登場 無償でAIの上手な使い方を解説」。

https://www.itmedia.co.jp/news/articles/2304/05/news175.html

これらのサイトでは、プロンプトエンジニアリングについて詳しく解説されています。

 

私#6:

それぞれのサイトで書かれていることを、もう少し詳しく紹介してもらえますか?

Bing#3:

  • DevelopersIOの「【徹底解説】これからのエンジニアの必携スキル、プロンプトエンジニアリングの手引「Prompt Engineering Guide」を読んでまとめてみた」では、プロンプトエンジニアリングについて詳しく解説されています。この記事では、プロンプトエンジニアリングが「LM (言語モデル)を効率的に使用するために、プロンプト (言語モデルへの入力)を開発・最適化する比較的新しい学問分野」と定義されています。また、プロンプトエンジニアリングを学ぶことで、LLM (大規模言語モデル)の能力と限界を理解することに役立ちます。
  • ITmedia NEWSの「「プロンプトエンジニアリング」の“教科書”、日本語版が登場 無償でAIの上手な使い方を解説」では、海外コミュニティー「AI」が作成した資料「プロンプトエンジニアリングガイド」の日本語版が無料公開されていることが紹介されています。この資料では、プロンプトエンジニアリングに関する基礎知識から使用アイデア、注意点などが記載されています。

これらのサイトでは、プロンプトエンジニアリングについて詳しく解説されています。

 

私#7:

プロンプトエンジニアリング初心者には、どちらのサイトの方が分かりやすいでしょうか?

Bing#4:

プロンプトエンジニアリング初心者にとって、DevelopersIOの「【徹底解説】これからのエンジニアの必携スキル、プロンプトエンジニアリングの手引「Prompt Engineering Guide」を読んでまとめてみた」が分かりやすいかもしれません。この記事では、プロンプトエンジニアリングについて詳しく解説されており、基礎知識から応用まで学ぶことができます。

ただし、個人的な好みや理解度によって異なるため、両方のサイトを参照してみることをお勧めします。

 

私#8:

わかりました。

次に、日本語のサイトでなくてもよいのですが、また、わかりやすくなくてもよいのですが、一番詳しくプロンプトエンジニアリングについてまとめられているサイトがあれば、サイト名とそのURLを教えて下さい。

Bing#5:

プロンプトエンジニアリングについて詳しくまとめられているサイトとして、Wikipediaの「Prompt engineering」があります。このページでは、プロンプトエンジニアリングが「人工知能(AI)、特に自然言語処理(NLP)における概念の一つである」と定義されており、プロンプトエンジニアリングに関する基礎知識から応用まで詳しく解説されています。

https://en.wikipedia.org/wiki/Prompt_engineering

また、dair-aiのGitHubページにある「Prompt-Engineering-Guide」も、プロンプトエンジニアリングについて詳しくまとめられています。

https://github.com/dair-ai/Prompt-Engineering-Guide

このページでは、「プロンプトエンジニアリングは、言語モデル(LM)を効率的に使用するために、プロンプトを開発・最適化する比較的新しい学問分野」と定義されており、プロンプトエンジニアリングのスキルが大規模言語モデル(LLM)の能力と限界を理解することに役立つことが述べられています。

 

調べてみると、DevelopersIOの『【徹底解説】これからのエンジニアの必携スキル、プロンプトエンジニアリングの手引「Prompt Engineering Guide」を読んでまとめてみた』は、CX 事業本部 Delivery 部のきんじょー氏がGitHub の「Prompt Engineering Guide」を読んで検証した内容をブログにしているものでした。「独自に検証した日本語のプロンプトを含みます」ということで、Bingのおすすめでもありますが、プロンプトエンジニアリングの入門書として、これが最適だと思います。

 


 

Bard、ChatGPT、Bing3つを利用して、効率よくプロンプトエンジニアリングに関する情報収集ができました。それぞれ特徴があるので、うまく使い分けることが肝心だと思います。

本日は以上です。

 

終わり