このシリーズではChatGPTを中心とした最新の大規模言語モデル(LLM)に関する情報をまとめています。最新AI技術を使用した「ChatGPT」をはじめとした、自然言語処理技術の概要や活用方法について紹介しておりますので、ぜひ最後までご覧ください。
※大規模言語モデルは技術の進歩がとても速い分野となりますので、最新の情報もこちらからご確認ください。
今回の記事では、プロンプトエンジニアリングのベストプラクティス8箇条をもとに、プロンプトの概要から基本的な使い方までを紹介します。
今回の内容
・プロンプトとは
・プロンプトを学べるサイト
・プロンプトエンジニアリングのベストプラクティス8箇条
- 1. プロンプトとは
- 1.1. プロンプトの重要性
- 1.2. プロンプトエンジニアリングとは
- 2. プロンプトを学べるサイト
- 3. OpenAI API を使用したプロンプトエンジニアリングのベストプラクティス8箇条
- 3.1. 1.最新のモデルを使う
- 3.2. 2.プロンプトの最初に指示を置き、指示と文脈を区切るために「###」または「”””」を使用する
- 3.3. 3.希望する文脈、結果、長さ、形式、スタイルなどについて、具体的で詳細な説明する
- 3.4. 4.希望する出力形式を例を使って明確にする
- 3.5. 5.ゼロショット、フューショットを試してみて、どちらもうまくいかない場合はファインチューニング
- 3.6. 6.「ふわっとした」不明確な説明を減らす
- 3.7. 7.ただ何をしないでほしいかを言うだけでなく、代わりに何をすべきかを伝え
- 3.8. 8.コード生成に特化 – モデルを特定のパターンに誘導するために「先導する言葉」を使う
- 4. まとめ
プロンプトとは
プロンプトの重要性
ChatGPTは、人工知能による会話型のツールで、ユーザーからの質問やリクエストに対して、適切な答えや情報を提供します。プロンプトとは、ユーザーがChatGPTに対して送信する質問や命令のことを指します。
プロンプトの重要性は、以下の点のように説明することができます。
- 情報の精度: プロンプトが明確で具体的であるほど、ChatGPTはより正確な答えや情報を提供できます。曖昧なプロンプトは、意図しない回答や不正確な情報を引き起こす可能性があります。
- コミュニケーションの効率: わかりやすく簡潔なプロンプトを使うことで、ChatGPTが迅速に理解し、正確な情報や回答を提供できます。これにより、効率的なコミュニケーションが可能になります。
- 目的の達成: プロンプトは、ChatGPTとの対話で目的を達成するための鍵となります。具体的で明確なプロンプトを使用することで、ユーザーは求めている情報やサポートを得ることができます。
例えば、宿題の手伝いを求める際、「数学の問題が解けない」と書くよりも、「2次方程式x^2 – 3x + 2 = 0の解を求めてください」と書く方が、ChatGPTはより適切なサポートができます。
要するに、プロンプトは、ChatGPTとのコミュニケーションにおいて非常に重要な役割を果たします。明確で具体的なプロンプトを使用することで、より正確で効率的な結果を得ることができます。
プロンプトエンジニアリングとは
プロンプトエンジニアリングとは、ChatGPTやその他の人工知能(AI)モデルに対して、効果的なプロンプトを作成・最適化するプロセスのことです。これにより、AIがより正確で適切な回答を提供できるようになります。
プロンプトエンジニアリングでは、以下の要素を考慮します。
- 明確性: プロンプトが明確であるほど、AIは正確な情報を提供しやすくなります。曖昧さを避け、具体的な質問やリクエストをすることが重要です。
- 簡潔性: 長すぎるプロンプトはAIにとって理解しにくい場合があります。簡潔でわかりやすい表現を使用することで、AIが迅速に理解し、正確な回答を提供できます。
- コンテキストの提供: プロンプトに必要な背景情報や文脈を含めることで、AIはより適切な回答を生成しやすくなります。ただし、無関係な情報は省くことが望ましいです。
- 複数のプロンプトの使用: 一度にすべての情報を提供する代わりに、いくつかの短いプロンプトを使って情報を段階的に提供することで、AIが順序立てて回答を生成できるようになります。
- 反復と改善: プロンプトの効果を評価し、必要に応じて修正していくことで、より良い結果を得られます。プロンプトエンジニアリングは試行錯誤のプロセスであり、繰り返し改善することが重要です。
プロンプトエンジニアリングは、AIとのコミュニケーションを向上させ、ユーザーが求める情報やサポートを得られるようにするための重要なスキルです。効果的なプロンプトを作成することで、AIの性能を最大限に引き出すことができます。
プロンプトを学べるサイト
プロンプトを効率的に学べるサイトを以下に紹介します。
OpenAI API を使用したプロンプトエンジニアリングのベストプラクティス
https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api
Prompt Engineering Guide
https://www.promptingguide.ai
この記事では「OpenAI API を使用した迅速なエンジニアリングのベスト プラクティス」の内容を元に、プロンプトの基礎をご紹介します。
OpenAI API を使用したプロンプトエンジニアリングのベストプラクティス8箇条
プロンプトエンジニアリングは、AIにどのように質問や命令を与えるかを工夫する方法です。AIが学んだデータによって、上手に質問や命令を伝えると、タスクがうまく進みます。いろんな形式の質問や命令がありますが、どれが一番タスクに合っているか試してみることが大切です。
1.最新のモデルを使う
良い結果を得るためには、最新で優れたモデルを使うことが大切です。文章を作るときは「text-davinci-003」モデルを、プログラムのコードを作るときは「code-davinci-002」モデルを使いましょう。
2.プロンプトの最初に指示を置き、指示と文脈を区切るために「###」または「”””」を使用する
質問や命令を文章の最初に書き、その後に「###」や「”””」を使って、質問や命令と背景情報を分けましょう。
以下に良い例と悪い例を示します。
#良くない例
以下の文章を、最も重要な点を箇条書きにして要約する。
ChatGPTをうまく使いこなすには・・・(入力したい文章)
#良い例
以下の文章を、最も重要な点を箇条書きにして要約する。
Text: """
ChatGPTをうまく使いこなすには・・・(入力したい文章)
"""
要約する文章が別の文字列として示されているため、入力として与えられた文章とその要約の対象となる文章を明確に区別することができるようになります。
3.希望する文脈、結果、長さ、形式、スタイルなどについて、具体的で詳細な説明する
求める答えや文章の内容や形式について、できるだけ詳しく具体的に説明しましょう。AIが正確に理解しやすくなるためです。
#良くない例
OpenAIについて詩を書く。
#良い例
OpenAIについて、最近のDALL-E(DALL-Eはテキストから画像へのMLモデル)の製品発表に焦点を当て、{有名な詩人}のスタイルでインスピレーションを与える短い詩を書いてください。
DALL-Eの製品発表に焦点を当てるという具体的なテーマ、有名な詩人のスタイルでというスタイル指定、インスピレーションを与えるという明確な目的を指示することで、具体的な詩を書くことができるようになります。
4.希望する出力形式を例を使って明確にする
求める答えや文章の形式を、具体的な例を使って説明しましょう。例を使うことで、AIが正確に理解しやすくなります。
#良くない例
以下のテキストに記載されている固有表現を抽出する。会社名、人名、特定の話題、テーマの4種類のエンティティを抽出する。
テキスト:ChatGPTを使用している企業は・・・(入力したい文章)
#良い例
以下のテキストに記載されている重要な固有表現を抽出する。まずすべての会社名を抽出し、次にすべての人名を抽出し、次に内容に合った特定のテーマを抽出し、最後に一般的な包括的テーマを抽出します。
希望する形式
会社名 A社,C社,…,Y社
人名:-||-
具体的なトピック:-||-
一般的なテーマ:-||-
テキスト:ChatGPTを使用している企業は・・・(入力したい文章)
抽出の対象となる具体的な文章をプロンプトに含む、種類や出力形式が明確に指定する、会社名・人名・具体的なトピック・一般的なテーマというように、順序立てられた指示が与えることがポイントとなります。
5.ゼロショット、フューショットを試してみて、どちらもうまくいかない場合はファインチューニング
まずはゼロショットで試し、次にフューショットを試してみて、どちらもうまくいかない場合はファインチューニングを行います。つまり、最初にAIに何も教えずに試し、次に少しだけ例を見せて試して、それでもうまくいかない場合はAIの学習を調整してから再度試してみましょう。
#ゼロショットの例
以下のテキストからキーワードを抽出する。
テキスト:ChatGPTをうまく使いこなすには・・・(入力したい文章)
キーワード :
#フューショットの例
以下の対応するテキストからキーワードを抽出する。
テキスト1:Stripeは、Web開発者がWebサイトやモバイルアプリケーションに決済処理を組み込むために使用できるAPIを提供している。
キーワード1:Stripe、決済処理、API、Webデベロッパー、Webサイト、モバイルアプリケーション
##
テキスト2:OpenAIは、テキストの理解と生成に非常に優れた最先端の言語モデルを訓練しています。私たちのAPIは、これらのモデルへのアクセスを提供し、言語処理を伴うほぼすべてのタスクを解決するために使用することができます。
キーワード2:OpenAI, 言語モデル, テキスト処理, API
##
テキスト3:ChatGPTを使用している企業は・・・(入力したい文章)
キーワード 3:
6.「ふわっとした」不明確な説明を減らす
曖昧で具体性に欠ける説明は避け、はっきりとした説明を心がけましょう。
#良くない例
この製品の説明文は、かなり短く、数文のみで、それ以上にはならないようにします。
#良い例
この製品について、3~5文の段落で説明すること。
「3~5文の段落」というような具体的な要求があり、明確な範囲を定量的に示すことがポイントです。
7.ただ何をしないでほしいかを言うだけでなく、代わりに何をすべきかを伝え
やってほしくないことだけを言うのではなく、どうすれば良いか具体的に指示しましょう。
#良くない例
以下は、エージェントとお客様との会話です。ユーザー名やパスワードを尋ねないでください。繰り返さないでください。
お客様: 自分のアカウントにログインできないのですが。
代理店:
#良い例
以下は、エージェントとお客様との会話です。
エージェントは、問題の診断と解決策の提示を試みますが、PIIに関連する質問は控えてください。
ユーザー名やパスワードなどのPIIを尋ねる代わりに、ヘルプ記事(www.samplewebsite.com/help/faq)を紹介する。
お客様: 自分のアカウントにログインできないのですが。
代理店:
PIIを尋ねる代わりに、ヘルプ記事を紹介するという明確な代替案が示されていること、問題の診断と解決策の提示を試みることが明示されており、エージェントがどのように対応すべきか分かりやすいことがポイントとなります。
8.コード生成に特化 – モデルを特定のパターンに誘導するために「先導する言葉」を使う
プログラムのコードを作るときには、AIが特定の方法で答えを出すように、最初に示す言葉を工夫しましょう。
#良くない例
# シンプルなpython関数を書きます
# 1. マイルで数字を聞いてみる
# 2. マイルをキロメートルに変換してくれる
#良い例
# シンプルなpython関数を書きます
# 1. マイルで数字を聞いてみる
# 2. マイルをキロメートルに変換してくれる
import
コードの最初に「import」と書くことで、AIにPythonでコードを書くように促すことができます。同じように、「SELECT」と書くことで、AIにSQL文を書くように示唆できます。
まとめ
最後までご覧いただきありがとうございました。