【ChatGPT】OpenAIによるプロンプトエンジニアリングガイドを日本語で解説

OpenAIが公開するプロンプトエンジニアリングのガイドは、大規模言語モデル、特にGPT系のモデルを活用する際に、より良い結果を得るための戦略と戦術を提供しています。これらの戦略と戦術は、言語モデルを使ったアプリケーション開発者や研究者にとって、価値あるガイドラインとなります。以下では、OpenAIが提案する6つの主要な戦略と、それぞれに対応する戦術について詳細に解説します。

【ChatGPT】OpenAIによるプロンプトエンジニアリングガイドを日本語で解説
  • プロンプトの送信回数15回
  • 使用したモデル:Microsoft Copilot、ChatGPT、Gemini Advanced
  • Microsoft Copilotは旧Bing Chatのことを指し、Microsoft Copilot for Microsoft 365とは異なります。

AIとデジタルイノベーションでビジネスを変える時が来ました。
私たちと一緒に、効果的なマーケティングとDXの実現を目指しませんか?
弊社では、生成AI開発やバーチャルインフルエンサーの運用について無料相談を承っております。
お打ち合わせではなくチャットでのご相談もお待ちしております。

お問い合わせ
English Form: Link

目次

はじめに

OpenAIが公開するプロンプトの6つの戦略

6つの戦略の各種戦術

AIによるまとめ

この記事は、AI(人工知能)によって生成されたものです。
内容は専門家による監修や校正を経ておらず、AIの現在の能力と知識ベースに基づいています。
したがって、記事の内容には限界があり、専門的な意見や最新の情報を代替するものではありません。
読者は、この記事を参考の一つとして用いることを推奨し、必要に応じて専門家の意見を求めることをお勧めします。
以下から、AIライターの執筆が始まります。

はじめに

今日は、OpenAIが公開したプロンプトエンジニアリングのガイドについて紹介したいと思います。

このガイドは、大規模言語モデル、特にGPT系のモデルを使って何かを作るときに、どうやってプロンプトを書くといいのか、ということを教えてくれます。言語モデルを使ったアプリケーションを開発したり、研究したりする人にとって、とても役に立つガイドだと思います。

このガイドには、6つの大事な戦略と、それに関連するいろいろな戦術が書かれています。それでは、一つずつ見ていきましょう。

左側アイコン
AI Lab

前回ご紹介したプロンプトの26の原則についても理解した上で、OpenAIのガイドを見ていただくと

【ChatGPT】魅力と可能性を引き出すプロンプトエンジニアリングのコツ:プロンプトの26の原則を活用しよう
今回はプロンプトエンジニアリングへの理解を進めていく上で、2023年12月26日に公開された「Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4」の論文内で公開されていたプロンプトのプロセスを改善することを目指した26の指導原則について紹介していきます。

OpenAIが公開するプロンプトの6つの戦略

1 明確な指示を書く

明確かつ具体的なプロンプトは、モデルが望ましい応答を生成するための基礎となります。ユーザーが何を求めているのかを正確に伝えることで、適切な応答を引き出すことができます。

2 参照テキストを提供する

モデルに参照テキストを提供することで、より信頼性の高い回答や、根拠のある内容を生成させることが可能になります。特に、特定の知識が必要な質問や、正確な情報を求める場合に有効です。

3 複雑なタスクをシンプルなサブタスクに分割する

複雑な問題を小さなタスクに分解し、それぞれに対してモデルを活用することで、全体の問題を効果的に解決できます。このアプローチは、問題の理解を深め、エラーの可能性を減らします。

4 モデルに「考える」時間を与える

モデルに思考プロセスを促すことで、より深い分析や論理的な結論を導き出させることができます。これは、単純な回答では不十分な複雑な質問に対して特に有効です。

5 外部ツールを使用する

外部ツールやリソースを活用することで、モデルの能力を拡張し、特定のタスクをより正確に、効率的に実行できます。これにより、モデルの応用範囲が広がります。

6 変更を体系的にテストする

プロンプトの変更やモデルの調整を行う際には、それが全体的なパフォーマンスにどのように影響するかを体系的に評価することが重要です。これにより、改善点を明確にし、より効果的なプロンプト設計を行うことができます。

左側アイコン
AI Lab

「モデル」はGPT-3.5あるいはGPT-4のことを指しています。
ここから先は各戦略において具体的な戦術を見ていきましょう!

6つの戦略の各種戦術

クエリに詳細を含める

NG:

Excelで数字を足し算する方法は?

OK:

質問: Excelで、A列に入力された複数のドル金額を自動で合計し、その合計をB1セルに表示するマクロの作成方法を教えてください。具体的には、VBAコードを使用した手順を知りたいです。

POINT
より具体的な質問をすることで、モデルは求めている回答のコンテキストを正確に理解し、より適切な解答を提供することができます。

モデルにペルソナを採用させる

Prompt
**指示**: あなたは経験豊富なプログラマーであり、コーディングのヒントを提供する際には、例として実際のコードスニペットを提供し、それに加えて軽いジョークや遊び心のあるコメントを含めてください。
POINT
モデルに特定のキャラクターやスタイルで回答させることで、対話のトーンや内容をコントロールし、より個性的な応答を引き出すことができます。

入力の異なる部分を明確に示すためにデリミタを使用する

Prompt
# 指示
以下の三重引用符```で囲まれた文章を、俳句形式で要約してください。俳句は5-7-5の音節構成でお願いします。

```文章
ここに長いテキストが入ります。これを基に俳句を作成してください。
POINT
テキストの区切りを明確にすることで、モデルが入力のどの部分に注目すべきかを理解しやすくなり、タスクの処理精度が向上します。

タスクを完了するために必要な手順を指定する

Prompt
### タスクを完了するために必要な手順を指定する

```markdown
**指示**: 以下の手順に従って、ユーザーが提供したテキストを要約してください。
1. ユーザーが三重引用符```で提供したテキストを読んでください。
2. そのテキストを要約し、一文で表現してください。
3. 要約の前に"要約: "という接頭辞を付けてください。
POINT
タスクをステップごとに分けて指示することで、モデルは各ステップを明確に理解し、順序立ててタスクを処理することができます。

例を提供する

Prompt
**指示**: ユーザーの質問に回答する際は、以下の例に倣って一貫したスタイルで回答してください。例: ユーザーが「忍耐について教えてください」と尋ねた場合、具体的な例を交えつつ、教訓的な回答を提供してください。
POINT
具体的な例を提供することで、モデルは求められている回答スタイルや内容のレベルを理解しやすくなり、タスクの遂行が容易になります。

出力の望ましい長さを指定する

Prompt
**指示**: 以下のテキストを、約50語で要約してください。情報を可能な限り凝縮し、要点を的確に捉えた回答を目指してください。

```テキスト
ここに要約する長いテキストが入ります。このテキストの要点を50語以内で要約してください。
POINT
出力の長さを指定することで、モデルは指定された制約内で情報を凝縮し、目的に沿った回答を生成するよう努めます。

モデルに参照テキストを使って回答させる

Prompt
「以下の文献に基づいて、気候変動における二酸化炭素排出量の影響について詳しく説明してください。
  参照文献: [山田太郎、『気候変動の科学』、2021年、第3章]」
POINT
このプロンプトでは、モデルに特定の参照文献を基にして情報を提供するよう指示しています。文献の明確な指定により、モデルは与えられたテキストから関連する内容を抽出し、質問に対する根拠のある回答を生成することが期待されます。これにより、回答の信頼性と正確性が向上します。

参照テキストからの引用を含めてモデルに回答させる

Prompt
「IPCCの最新報告書を参照して、2020年代の気候変動における主要な発見とその影響について説明してください。特に、海面上昇に関する部分を引用して、その推定値と影響を解説してください。
  参照文献: [国際気候変動パネル、『気候変動2021: 物理科学的基礎』、2021年]」
POINT
このプロンプトでは、モデルがIPCC報告書から直接引用を行いながら回答するよう指示しています。これにより、モデルの回答に対する信頼性を高め、読者が提供された情報の出典を確認できるようになります。引用を含めることで、情報の正確性を検証しやすくなり、より信頼できる回答を生成することが期待されます。

意図分類を使用してユーザークエリに最も関連する指示を特定する

Prompt
**カスタマーサポートへの問い合わせ**:
「次のクエリをカテゴリーに分類し、適切な回答を提供してください。
  クエリ: "先月の請求書が予想よりも高かったのですが、なぜですか?" 
  カテゴリー: [請求に関する問題]」
POINT
このプロンプトでは、ユーザーの問い合わせを「請求に関する問題」というカテゴリーに明確に分類し、その上で具体的な回答を求めています。カテゴリー分類により、モデルは問い合わせの意図を正確に理解し、適切な対応を提案できます。

対話アプリケーションで非常に長い会話が必要な場合、以前の対話を要約またはフィルタリングする

Prompt
**対話の要約**:
「以下の対話の要点を要約し、次の質問に最適な形で回答してください。
  これまでの対話: "お客様はインターネット接続に問題を抱えており、すでにルーターの再起動を試み、ケーブルの接続を確認しています。しかし、問題は解決していません。"
  次の質問: "ルーターのモデル番号を教えてください。"」
POINT
ここでは、長い対話の要点をまとめてモデルに提供し、次のステップに進むための具体的な質問を行っています。これにより、モデルはコンテキストを正確に捉え、対話を効果的に進めることができます。

長いドキュメントを部分的に要約し、再帰的に全体の要約を構築する

Prompt
**ドキュメントの要約**:
「以下のテキストの章ごとの要約を提供し、その後で全体の要約を作成してください。
  テキスト: "第1章: 気候変動の科学的根拠、第2章: 気候変動の影響、第3章: 緩和策と適応策。" 
  全体の要約を作成する際には、各章の要約を参考にしてください。」
POINT
このプロンプトでは、長いドキュメントを章ごとに分けて要約し、それらの要約を基にして全体の要約を作成するよう指示しています。各章の個別の要約から全体の概観を捉えることで、ドキュメント全体の理解を深めることができます。

モデルが自分の解決策を導き出す前に結論を急がないよう指示する

Prompt
**数学の問題解決**:
「次の数学の問題について、解答に至るまでの過程を詳しく説明してください。
  問題: "あるクラスには男子が15人、女子が10人います。クラス全体での男女比を求めてください。"」
POINT
このプロンプトでは、モデルに対して、単に答えを提供するのではなく、問題解決の過程を詳細に説明するよう求めています。これにより、モデルは問題を段階的に分解し、各ステップでの思考を明らかにすることが期待されます。このアプローチは、モデルがより論理的で根拠のある回答を提供するのを助けます。

内部モノローグやクエリのシーケンスを使用してモデルの推論プロセスを隠す

Prompt
**教育アプリケーションの問題解決**:
「生徒が次の数学問題をどのように解くべきか、内部的な思考プロセスを通じてヒントを提供してください。
  問題: "方程式 2x + 3 = 7 を解いてください。"
  内部モノローグを用いて解決策を考え、最終的にはヒントのみを提供してください。」
POINT
このプロンプトでは、モデルが問題解決の内部的な推論を行いつつ、そのプロセスをユーザーには直接示さずに、最終的なヒントのみを提供するよう求めています。これにより、生徒は自らの思考を促され、問題解決のプロセスを学習することができます。モデルの内部的な考察は、生徒への直接的な答えの提供を避けることで、より教育的な価値を提供します。

以前のパスで何かを見逃していないかモデルに尋ねる

Prompt
**文書要約の精度検証**:
「以下の文書を要約した回答について、初回の要約で見落としている重要なポイントがないか再検討してください。
  文書: "気候変動による海面上昇の影響に関する最新の研究結果についての詳細なレポートです。" 
  初回の要約後、見落としている可能性のあるポイントがないか確認し、必要に応じて追加情報を提供してください。」
POINT
このプロンプトでは、モデルによる初回の文書要約の後、可能性として見落としている重要な情報がないかを確認するよう求めています。これにより、要約の品質を向上させ、文書の全体像をより正確に捉えることができます。このアプローチは、情報の抽出や要約タスクにおいて、より完全で正確な結果を得るために有効です。

埋め込みベースの検索を使用して効率的な知識検索を実装する

Prompt
「以下のトピックについて最新の研究結果を基にして詳細な解説を提供してください。
  トピック: "人工知能によるがん診断の進歩"
  関連する最新の研究論文やレビュー記事から、重要な発見や技術の進化についての情報を引用して回答を構成してください。」
POINT
このプロンプトでは、人工知能とがん診断に関する最新の研究を対象とし、埋め込みベースの検索を通じて関連する文書や記事を特定し、その内容を基にして詳細な解説を求めています。このアプローチにより、モデルはテキストの意味的な類似性を利用して効率的に情報を収集し、精度の高い回答を生成することが期待されます。

コード実行を使用してより正確な計算を行うか、外部APIを呼び出す

Prompt
「次の数式に基づいて計算を行い、結果を提供してください。
  数式: "x^2 - 2x + 1 = 0"の解。
  この計算にはPythonコードを使用してください。
  また、計算過程も説明してください。」
POINT
このプロンプトでは、特定の数学的問題を解決するために、モデルにPythonコードの実行を指示しています。この方法により、モデルは数値計算をより正確に行うことができ、計算過程の説明を通じて、ユーザーが解法を理解しやすくなります。

モデルに特定の機能へのアクセスを与える

Prompt
「ユーザーからの次のリクエストに応じて、指定されたデータベースから必要な情報を検索し、その結果を提供してください。
  リクエスト: "最近5年間で発表された、機械学習を利用したがん治療に関する論文の一覧を教えてください。" 
  データベースアクセス機能を使用し、検索結果を回答として整理してください。」
POINT
このプロンプトでは、モデルが特定のデータベースにアクセスし、機械学習とがん治療に関する最近の論文を検索することを求めています。モデルに特定の機能へのアクセスを与えることで、単にテキストを生成するだけでなく、具体的なデータベース操作を実行し、必要な情報を効率的に収集して提供することが可能になります。
左側アイコン
AI Lab

次のブログではこれらのプロンプトの戦術を用いてより実務で使えそうなプロンプトをご紹介いたします!

AIによるまとめ

OpenAIによるプロンプトエンジニアリングの戦略と戦術は、GPT系言語モデルを活用する際の強力なガイドラインを提供します。これらのアプローチを適切に組み合わせて使用することで、開発者や研究者は、言語モデルからより正確で有用な応答を引き出すことが可能になります。各戦略と戦術の理解と適用は、言語モデルを使ったアプリケーションの品質と効率を大きく向上させることでしょう。

最後に

弊社では、AIを活用したマーケティングやDXのご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

公式LINEでも随時、生成AIのトレンドや活用方法について発信しています。

お問い合わせ
English Form: Link

Read more

【Dify新機能】Webサイトの知識をチャットボットに自動連携!Firecrawl設定方法解説

【Dify新機能】Webサイトの知識をチャットボットに自動連携!Firecrawl設定方法解説

Difyに待望の新機能が登場!Webサイトの情報を自動でチャットボットの知識ベースに追加できるようになりました。クローリングツール「Firecrawl」との連携方法を、設定画面や手順を交えて分かりやすく解説します。最新情報を自動で反映し、チャットボットをさらに進化させましょう!

By Hiro from AI Lab
Contact