🧞

Hacks: ChatGPT: ChatGPT を使ったプロンプトエンジニアリング

2023/04/12に公開

はじめに

本記事では、ChatGPT という自然言語処理技術を利用したプロンプトエンジニアリングの方法を紹介します。
プロンプトエンジニアリングの例として、技術ブログの記事を推敲するためのプロンプト[1]を作成します。
ChatGPT自身にプロンプトを作成させることで、特別な知識がなくてもプロンプトをデザインできます。

ChatGPT は、GPT[2]という大規模言語モデルを利用したチャットボットです。
本記事では ChatGPT の概要について説明し、ChatGPT を利用してプロンプトを作成する方法を紹介します。

本記事のプロンプトは MIT ライセンス[3]で配布しています。プロンプトを自由に利用できますが、再配布する場合は出典を明記してください。
MIT ライセンスは、コピーや改変、再配布が自由に行えるオープンソースのライセンスです。
詳細については、The MIT License をご覧ください。

ChatGPTとは

ChatGPT は、自然言語処理技術である GPT を利用したチャットボットです。いままでのチャットボットと違い、LLM[4]を使うことで自然な受け答えができるようになりました。
LLM(大規模言語モデル)は、大量の言語情報を使ってトレーニングされた自然言語処理モデルのことで、GPT もその 1 つです。
ChatGPT は、OpenAI の GPT 後継技術 GPT-3 を使用しています。

ChatGPTによるプロンプトとは

ChatGPT に問いかけると、自然な返答が返ってきます。たとえば、「この記事を英訳して」といった入力をすると、英語に翻訳されたブログ記事が表示されます。
こういった質問をプロンプトと呼びます。適切なプロンプトを入力することで、ChatGPT は的確な返答をしてくれます。
プロンプト(Prompt)は`ChatGPT`に与える入力のことで、プロンプトエンジニアリングの重要な概念です。

プロンプトエンジニアリングとは

ChatGPT が適切な返答をするために、プロンプトをデザインする工程をプロンプトエンジニアリングとよびます。
プロンプトエンジニアリングとは、プロンプト(ChatGPT に入力する質問)をデザインし、ChatGPT がより適切な回答をするための工程です。ChatGPT に専門家としての役割、明確な指示、実際に使用できる回答例などを含めてプロンプトを入力すると、より実践的で効果的な回答を提示してきます。
こういった回答を得るために、入力する質問を ChatGPT にあわせてデザインする工程がプロンプトエンジニアリングです。

この記事では ChatGPT を用いてプロンプトエンジニアリングをすることで、効果的なプロンプトを作成する方法を紹介します。
プロンプトの例として、技術ブログのレビュー、推敲に効果的なプロンプトを取り上げます。
ここでは、簡単な推敲用のプロンプトを ChatGPT を用いて改善することで、より実践的で効果的なプロンプトにします。
こういった具体例を見ることで、プロンプトエンジニアリングについて深い理解が得られるでしょう。

プロンプトエンジニアリングの方法

ChatGPT には、Prompt Engineering Guideという、ChatGPT でのプロンプトエンジニアリングの教科書サイトがあります。
このサイトは、ChatGPT におけるプロンプトエンジニアリング技術が網羅されており、プロンプトエンジニアリングのための公式ガイドと呼べるでしょう。

最初は、このPrompt Engineering Guideをもとに簡単なプロンプトを書くといいでしょう。

そのあとは、作成したプロンプトをつかって ChatGPT に実際に質問をします。その答えをプロンプトにフィードバックしてより実践的で効果的なプロンプトに書き直します。
このときの書き換え方として上記の教科書サイトや Web 上の各種の情報を利用します。

今回のChatGPTによるプロンプトエンジニアリングも、基本は上記と一緒です。
ChatGPT を使うと、改善点だけでなく代替案も提示してきます。つまり、自分で考えなくてもプロンプトを書き直すことができます。

これを繰り返して、プロンプトの質を上げていくのです。

プロンプトエンジニアリングの流れ

プロンプトエンジニアリングには以下の流れがあります。

  1. 目的の設定:
    ChatGPT に対して何を求めるかを明確にし、それを実現するためのプロンプトをデザインします

  2. プロンプトの作成:
    目的に沿ってプロンプトを作成します。プロンプトは、ChatGPT が入力されたテキストに基づいて回答を生成するための情報源となります

  3. プロンプトの調整:
    ChatGPT の回答を確認し、必要に応じてプロンプトを調整します

  4. テストと評価:
    調整されたプロンプトを用いて ChatGPT に入力し、回答が適切かどうかをテストし、プロンプトを改善します

プロンプトの作成方法の実践

ここでは、ChatGPT を使ってプロンプトを作成します。

作成方法は、以下のとおりです。

  1. プロンプト作成用のプロンプトを用意する

  2. 最初の簡単なプロンプトを手動で書く

  3. Chat GPTのWebサイト:https://chat.openai.com/chat を開く

  4. プロンプト用のプロンプトと作成したいプロンプトを貼り付け、Enter を押す

  5. ChatGPT から、プロンプトの改善点と代替案が掲示される

  6. プロンプトを指摘された改善点や代替案を参考に書き直す

  7. 3.-5. を繰り返し、プロンプトの質を上げる

となります。

簡単なプロンプトを人の手で作成し、プロンプトを ChatGPT に入力することで改善点を指摘します。

プロンプト作成のためのプロンプト

ChatGPT を使うのですから、そのためのプロンプトが必要です。今回は、下記のプロンプトを使用しました。

このプロンプトは、指定した目的にあわせて適切なプロンプトを作成するものです。
プロンプトに書かれていることを解説すると、

  • 入力されたプロンプトをレビューし、ChatGPT が理解できるようにプロンプトを調整する
  • prompt:---よりあとに入力された文章を、改善するプロンプトとしてあつかう
  • プロンプトの解釈は、自分の役割に応じて行なう。役割は role を使って別途示す
  • プロンプトがテーマに合っているかレビューする
  • プロンプトの改善目標を goal で指定して、それにあっているプロンプトを作成する
  • ChatGPT を読者として考え、それに合わせたプロンプトを作成する

このようにして入力したプロンプトをレビューし、改善点とその代替案を作成します。
role,goal,target などは、このプロンプトの直後に定義しています。

最初のプロンプト

最初に、もととなるプロンプトを作成します。
プロンプトは、

です。

このプロンプトは、role で指定した役割にしたがって、text で示された記事をレビューします。
記事はマークダウン形式で、改善点と代替案を箇条書きで出力します。

手動による改善

上記の最初のプロンプトはシンプルすぎるので、手動でちょっと改善します。
改善したプロンプトは、

です。

プロンプト作成のためのプロンプトを参考に、箇条書きで指定するようにしました。
これから、このプロンプトを ChatGPT で改善します。

ChatGPTによる改善点

上記のプロンプトを ChatGPT に入力すると、

といった改善点が返ってきました。
これを参考に、プロンプトを改善します。

改善したプロンプト

ChatGPTによる改善点を参考にプロンプトを改善します。
改善したプロンプトは、

となります。

改善点として以下のことに注目しました。

  • 複数回のプロセスを経て改善することを明示する。
  • 役割ごとの指示を追加する。
  • theme を追加し、プロンプトの方向性を明示する。

このように、ChatGPT を使ってプロンプト自体をよりよいものにできます。

ChatGPTによる改善点 (その2)

次に改善したプロンプトの改善点を振り返り、より精度を高めます。以下が ChatGPT による改善点 (その 2) です。

GitHub GistのページURLを指定してください

この改善点を参考に、プロンプトの精度を高めていきます。

最終的なプロンプト

最終的なプロンプトは以下のとおりです。

このプロンプトを使って ChatGPT に質問すると改善点が返ってくるので、それを参考にブログ記事を書き直します。

具体的な改善点:

  • プロセスを論理的かつ段階的に 5 回繰り返し、より本質的かつ質の高い改善点を見つけること
  • キーワードや技術用語を重視し、それらを取り残さないこと
  • 参考にした資料をリンク付きで示すこと
  • 役割ごとに指示を追加し、それぞれの役割に応じた校正を行なうこと
  • プロンプトの方向性を明示する

さいごに

この記事では実際に ChatGPT を使ってプロンプトを作成しました。
このように段階をふんで ChatGPT を使っていけば、誰でも ChatGPT を使えるはずです。

参考資料

脚注
  1. この記事では、ChatGPT に入力する質問のこと ↩︎

  2. GPT__(Generative Pre-trained Transformer)__ : OpenAI が開発した自然言語を処理する言語モデル ↩︎

  3. オープンソースライセンスの 1 つ。制限条項が少なく使用しやすいライセンス ↩︎

  4. (Large Language Model) 自然言語処理モデルのうち、とくに大量の自然言語処理タスクのデータセットを利用してトレーニングされた、自然言語処理モデルのこと ↩︎

GitHubで編集を提案

Discussion