OpenAIが公開したChatGPTの活用法「GPT best practices」を徹底解説!
皆さん、ChatGPTをうまく使いこなせてますか?
実は、パフォーマンスを最大限に引き出すためのプロンプト術があるんです!ということで、今回は、開発元のOpen AIが教える「GPT best practices」を解説します!プロンプトマスターになりたい方は、ぜひ最後までご覧ください。
GPT best practicesのサイトはこちら
プロンプトとは何か?
プロンプトとは、AIに対する命令や質問を指す言葉です。その書き方によって、AIの回答の精度や内容が変化します。
例えば、「東京の今日の天気は?」という質問や、「次の文章を英語に翻訳してください:こんにちは、元気ですか?」という指示などがプロンプトとなります。
【OpenAIが推奨】最適なプロンプトを設定するための5つのポイント
OpenAIは、GPTの能力を最大限に引き出すための5つの方法を紹介しています。
それぞれの内容の解説と具体的な手法を説明します!
1. 指示を明確にする
ChatGPTはあなたの意図や感情を読むことはできないので、具体的な指示を出すことが重要です。
もし短い回答を希望する場合は、「短く答えてください」と指示しましょう。
また、内容があまりにも単純であれば、「もっと詳しく答えてください」と指示してください。
それでは次に、実例を見ていきましょう。
今回は、「Excelで特定行の合計値を計算」をしてもらいたいというシチュエーションを考えてみます。
Excelデータには、各行ごとに異なる金額が書かれています。
このExcelデータに対し、全ての行の金額を合わせた数を「合計」列に表示することが最終的な目標です。
ChatGPTに、具体的かつ実行可能な関数を出力させることができれば良いプロンプトと判断します。
<具体例>
目的:Excelで特定行の合計値を計算
まず良いプロンプト例はこちらです。
良いプロンプト例
Excelでドル額の行を合計する方法は何ですか?全ての行に対してこれを自動的に行い、全ての合計を「合計」という列に表示したいです。
まるで人に教えを請うときのような丁寧なプロンプトですよね。このプロンプトでは、Excelで行いたい具体的なタスクの詳細が含まれています。
細かい指示ほど、ChatGPTからの適切な回答やガイダンスを得ることが容易になります。例えば、「ExcelでセルA1とB1の合計を計算する方法を教えてください」といった具体的な質問に対しては、ChatGPTは正確な手順を提供することができます。
では、出力結果を見てみましょう!
<結果>
丁寧に質問したら、目的に対する具体的な手順を3段階に分けて丁寧に返してくれていますね。
一方で、良くないプロンプト例はどうでしょうか?
良くないプロンプト例
Excelで数値を加算する方法は?
この例では、「Excelで何かを計算したい」といった抽象的なプロンプトです。良いプロンプト例と違い、Excelでやりたいことの詳細が含まれていません。ChatGPTに、何を計算させたいのか、どのようなデータを使い、どんな結果が欲しいのかなど、詳細を伝えることが大切です。
詳細がないプロンプトに対し、ChatGPTが具体的なアドバイスや手順を提供するのは難しいでしょう。
では、出力結果を見てみましょう!
<結果>
一般的な方法のみ教えてくれて、実装の手順は自分で考える必要があります。これを踏まえて、目的と期待する結果を明確に示すプロンプトを用いることで、より関連性が高く有益な回答を得ることができます。
2. 参考テキストを教える
ChatGPTは、特定のタスク(複雑なトピックや引用)で誤った回答をすることがあります。例えば、専門的な話題や引用、URLについて尋ねられたときに、実際に存在しない出力する場合があります。そのような場合、文章の構成や参考文を提供することで、出力をより適切にコントロールすることが可能です。
<具体例>
目的:文章から抜粋して回答を得る
今回のプロンプトは、長文から抜粋して解答を得るものです。まず、特定のトピックに関する詳細な文章を入力します。その後、その文章から特定の情報を抽出し引用する為の質問をします。
以下がプロンプト例です。
三重引用符で区切られた文書と一つの質問が提示されます。あなたのタスクは、提示された文書だけを元に質問に回答し、その回答に用いた文書部分を引用することです。もし文書に質問への回答に必要な情報が含まれていない場合、単に「情報不足」と記述してください。質問に対する回答が提供された場合、それは引用と共に注記を付けるべきです。引用する際のフォーマットは以下のようになります({"引用": …})。<br><br>"""蒸気機関とは、蒸気を作動流体として使用する熱エンジンで、蒸気の圧力によって生じる力を利用してピストンをシリンダー内で往復させ、この押す力は接続ロッドとクランクによって回転力に変換されて作業に使われます。「蒸気機関」という語は一般的に、ここで述べたような往復エンジンにのみ適用され、蒸気タービンには適用されません。蒸気機関は外部燃焼エンジンで、作動流体は燃焼生成物から分離されます。このプロセスを分析するために使用される理想的な熱力学サイクルはランキンサイクルと呼ばれます。一般的に、「蒸気機関」という用語は、鉄道の蒸気機関車や可搬型エンジンなどの完全な蒸気プラント(ボイラーなどを含む)を指すこともありますし、ビームエンジンや固定蒸気機関などのピストンやタービン機器だけを指すこともあります。<br><br>蒸気を動力とした装置は紀元1世紀のエオリピレまで遡ることができ、その他にも16世紀にいくつかの使用例が記録されていますが、1606年にヘロニモ・デ・アヤンス・イ・ボーモントが初の蒸気動力の水ポンプを特許取得し、これは鉱山の排水に使われました。トマス・セイヴァリーは、水に直接作用する蒸気圧を使用した蒸気ポンプという初の商用利用される蒸気動力装置の発明者とされています。初めて連続的な動力を機械に伝えることができる商業的に成功したエンジンは、1712年にトマス・ニューコメンによって開発されました。ジェームス・ワットは、1764年に使用済みの蒸気を別の容器に移して凝縮することで、消費した燃料の単位あたりで得られる作業量を大幅に改善するという重要な改良を行いました。19世紀には、固定式の蒸気機関が産業革命の工場を動かしていました。船舶では蒸気機関がパドルスチーマーの帆を取り替え、鉄道では蒸気機関車が運行されていました。<br><br>往復ピストン型の蒸気機関は20世紀初頭まで主要なパワーソースでしたが、電動機と内燃機関の設計の進歩により、商業的な使用では徐々に蒸気機関が置き換えられるようになりました。蒸気タービンは、より低いコスト、より高い運転速度、そしてより高い効率のために、発電において往復エンジンを置き換えました。<br><br>https://en.wikipedia.org/wiki/Steam_engine より抜粋"""<br><br>質問: 最初に商業的に成功した蒸気機関は何でしたか?
<結果>
プロンプトが長い場合でも、該当する情報に基づいて的確に引用し、質問に答えてくれます。これを応用すると、学術的な研究や詳細な報告書の作成など、より専門的なタスクにも適応できます。
この結果から、事前に出力したい内容の構成や参考文を事前に提供することで、目的に沿った回答を得られます。
3. 複雑なタスクはサブタスクに分解する
複雑なタスクを一度に解決しようとすると、タスク内のステップや要素が複雑に絡み合っているため、エラーや誤った回答が生成される可能性が高くなります。対策として、タスクを細分化して入力することで、複雑なタスクでも段階的に整理して実行することが可能です。
<具体例>
目的:お問い合わせをカテゴリー分け
今回のプロンプトは、お問い合わせをカテゴリー分けするためのものです。まず、お問い合わせの内容を入力します。その後、内容をChatGPTが判断して、一次カテゴリと二次カテゴリに分類します。結果はjson形式で出力するように指示しています。
以下がプロンプト例です。
顧客サービスの問い合わせ対応をしています。<br>問い合わせの一次カテゴリと二次カテゴリに分類してください。<br>結果はjson形式で出力し、キーは「primary」および「secondary」にしてください。<br><br>#一次カテゴリ:<br>請求、技術サポート、アカウント管理、一般的な問い合わせ<br><br>#二次カテゴリ:請求<br>退会またはアップグレード<br>支払方法の追加<br>請求内容の説明<br>請求に対する異議申し立て<br><br>技術サポートに関する二次カテゴリ:<br><br>#二次カテゴリ:トラブルシューティング<br>デバイスの互換性<br>ソフトウェアの更新<br><br>#二次カテゴリ:アカウント管理<br>パスワードのリセット<br>個人情報の更新<br>アカウントの閉鎖<br>アカウントのセキュリティ<br><br>#二次カテゴリ:一般的なお問い合わせ<br>製品情報<br>価格<br>フィードバック<br><br>#問い合わせ内容<br><br>インターネットに接続できない
<結果>
一次カテゴリーと複数の二次カテゴリーから、お問い合わせ内容をカテゴリー分けするという複雑なタスクでしたが、これをサブタスクに分割することで、期待通りの結果が得られました。
この結果から、複雑なタスクをシンプルなサブタスクに分割することで、目的を正確に達成することが可能になります。
4. 考える時間を与える
例えば、いきなり17と28を掛けるように求められた場合、すぐに答えるのは難しいかもしれません。しかし、ひとつずつ時間をかけて計算すれば答えを見つけることができます。ChatGPTでも、すぐに答えを求めると推論エラーが発生しやすくなります。
したがって、より正確な回答を得るためには、複数のステップに分けて、慎重に考えさせることで回答の精度が向上します。
<具体例>
目的:生徒の課題を回答
今回のプロンプトでは、教師が生徒の課題を評価し、必要に応じてヒントを提供するシナリオを模擬しています。
具体的に、このプロンプトでは、
- ChatGPTが回答を考える
- 生徒との回答を比較する
- 生徒の回答が間違っていた場合のヒントを考える
- 回答のヒントを生徒に与える
の4ステップに分けて、タスクを実行しています。
以下がプロンプト例です。
ステップ1 - まず、自分自身で問題の解答を導き出してみてください。生徒の解答に頼ることなく、自分で解答を導き出すことが重要です。このステップでの作業全体を三重引用符(""")で囲んでください。<br><br>ステップ2 - 次に、自分の解答と生徒の解答を比較し、生徒の解答が正しいかどうかを評価します。このステップでの作業全体を三重引用符(""")で囲んでください。<br><br>ステップ3 - もし生徒が間違えていた場合、答えを明かすことなく、どのようなヒントを生徒に与えることができるかを決めて下さい。このステップでの作業全体を三重引用符(""")で囲んでください。<br><br>ステップ4 - もし生徒が間違えていた場合、前のステップで考えたヒントを生徒に提供します(三重引用符の外で)。"ステップ4 - ..."と書く代わりに、"ヒント:"と書いてください。<br><br>問題文:箱には赤いボールが4つ、青いボールが6つ入っています。ボールを2つ、取り替えずに箱から取り出します。取り出したボールの一つが赤で、もう一つが青である確率は何ですか?<br><br>生徒の解答:(4/10)*(6/9) = 24/90 = 4/15
<結果>
この結果から、ステップに分けて、タスクを考えさせることで回答の精度を向上させることができます。
5. 外部ツールやプログラムコードを活用する
ChatGPTでは対応できないことも、他のツールやプログラムコードを併用することで、解決できる場合があります。
例えば、ChatGPTが得意ではない数学的な計算にプログラムコードを生成させることで対処することができます。
さらに、外部APIを使用することで、リアルタイムのデータにアクセスしたり、特定のタスク(天気予報の取得、金融市場の情報取得など)を実行することも可能となります。
<具体例>
目的:実数解を求めるプログラムコードを生成する
今回のプロンプトでは、数学的な計算、具体的には多項式の実数解を求めるプログラムコードを生成させています。
ChatGPTに直接解答を求めず、プログラムを経由して解答を求めることで、より正確な結果が得られます。
以下がプロンプト例です。
以下のように、コードを三重のバッククォートで囲むことにより、Pythonコードを記述し実行することができます。<br>例:ここにコードを入力. これを利用して計算を行いましょう。<br>次の多項式の全ての実数解を求めてください:3*x**5 - 5*x**4 - 3<strong>x</strong>*3 - 7*x - 10.
<結果>
生成されたPythonコードを実行した結果です。
この結果から、ChatGPTと他のツールや外部API・プログラムコードを併用することで、問題を解決できる可能性があります。
ChatGPTの分類タスク処理にも役立つプロンプトテクニック5選
ChatGPTを最大限活用するためのプロンプトテクニックを解説します。データ分析を行うために必要となる分類分けですが、ChatGPTに指示したけど、上手くできないこともありますよね。
そんなときにも使えるChatGPTのプロンプトテクニックの主な種類は以下の5つです。
- zero-shot プロンプティング
- few-shot プロンプティング
- Chain-of-Thought プロンプティング
- Zero-shot CoT
- ReAct
それぞれを見ていきましょう。
zero-shot プロンプティング
Zero-shot プロンプティングは、ChatGPTが特定のタスクに対して事前の例なしで応答する手法です。ユーザーは直接質問を投げかけ、ChatGPTはその質問に基づいて答えを生成します。
few-shot プロンプティング
Few-shot プロンプティングは、数個の例をChatGPTに示し、その後に本来の質問をする手法です。これにより、ChatGPTは示された例を参考にして、新しい問いに回答します。
Chain-of-Thought プロンプティング
Chain-of-Thought プロンプティングでは、ChatGPTに問題解決のプロセスを段階的に考えさせます。特に、先述したFew-Shotプロンプティングを使っても思うような精度を得られない場合に有効な方法です。
Zero-shot CoT(Chain-of-Thought) プロンプティング
Zero-shot CoT プロンプティングとは、Zero-shotでCoTを行うテクニックです。
たとえば、プロンプトに「ひとつずつ流れにそって考えてみましょう。」と一文追加することで、正しい結果を得られる可能性が高まります。
ReAct
ReActは、「推論:Reasoning」と「行動:Acting」を組み合わせてChatGPT内で推論とタスクを遂行するための手法です。
シンプルな入力プロンプトを用いてタスクの推論を行い、具体的なアクションを列挙します。この推論と行動を交互に実行することで高精度な結果を出力させられます。
GPT best practicesをマスターしよう!
OpenAIが提供する「GPT best practices」の各手法のまとめです!
1. 指示は明確に:目的と期待する結果を明確に示すこと。
2. 参考テキストを教える:事前に出力したい構成や参考文を提供すること。
成果物のフォーマットを前もって伝えることで、内容に沿った回答が可能です。
3. 複雑なタスクは小さなサブタスクに分ける:複雑なタスクをシンプルなサブタスクに分けて指示する。
4. 考える時間を与える:タスクを段階的に指示する。
5. 外部ツールやプログラムコードを活用:ChatGPTを他のツールや外部API、プログラムコードと組み合わせて使用する。
また、ChatGPTで分類タスク処理にも使えるプロンプトテクニックは以下のとおりです。
- zero-shot プロンプティング
- few-shot プロンプティング
- Chain-of-Thought プロンプティング
- Zero-shot CoT
- ReAct
これらを上手く利用して、ChatGPTを最大限活用し業務効率化を行いましょう。
生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIのコンサルティング
・システム間API連携
最後に
いかがだったでしょうか?
弊社では
・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
・ハルシネーション対策AIツールの開発
・自社専用のAIチャットボットの開発
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。