【生成AI活用】RFP作成の勝者はどれ?【ChatGPT vs Gemini vs Copilot】
すでに生成AIを使われている皆さんは体験されたことがあるかと思うのですが、例えばChatGPTに対して何か指示を出して結果を返してもらうと、同じ指示であっても何回かやってみると毎回結果が違うということがあります。
また多少内容が違ったとしても、自分の期待通りに結果が返ってくればいいのですが、必ずしもそうはならない場合が多々あります。
今回は生成AIからの結果をできる限り自分の期待通りにするための技術、プロンプトエンジニアリングについてChatGPTを使いながら試してみたいと思います。
目次
※このコラムの内容は動画で公開しています。Youtube版はこちらをご覧ください。
プロンプトエンジニアリングとは
プロンプトエンジニアリングとは、生成AIから品質の高い結果を得るための技術のことです。(※プロンプト:ユーザーが入力する指示や質問のこと。)
プロンプトを工夫することで、求める結果に近づけることができるようになります。
本投稿では、下記の3点について解説をします。
- ChatGPTからの出力は毎回異なる
- 文章から任意の話題を抜き出せるか?
- プロンプト生成にプロンプトジェネレーターを使ってみる
ChatGPTからの出力は毎回異なる
ChatGPTで「以下の議事録メモを議事録の形に整理してください。」と議事録メモと共に試行した結果です。
3回繰り返しましたが、単純に単語数や文字数で比較してみても、これだけの違いがあります。
太字の部分が理想的な出力となった部分なのですが、参加者に関しては1回目が理想的、議題に関しては2回目が理想的、プロジェクトの体制に関して書かれていたのは2回目だけ、などそれぞれ実施した回によって内容が微妙に異なっていました。
以上の内容はChatGPT 4oで試したものですが、参考までにChatGPT 4o miniでも試してみました。
やはりこれも他の結果とは違うものでした。ただし、このChatGPT 4o miniで試したものが1番単語数が多い結果となりました。
使う目的によっては、何度も実行して自分に必要な情報を抜き出して、自分で整形し直すという使い方でも良いと思います。
しかしできることなら、一度で自分が求める結果が出てくることに越したことはないです。今は 疑似録という形で試しましたが、この文章の中から自分が必要な情報だけを抜き出すことができないかということで、プロンプトを作り直してみたいと思います。
文章から必要な情報だけを抜き出す
前々回から使用している議事録メモなのですが、その内容は「ある会社がDXを推進するにあたり、現場の現状をヒアリングしたないようが会話形式で書かれているメモ」というものです。
(→議事録メモのダウンロードはこちら)
目的やメンバーが書かれている中から、業務に関することだけを抜き出してもらうよう、ChatGPTに依頼してみます。
<ChatGPTとの応答>
上村「この議事録メモから、業務に関することだけを抜き出してください。」
ChatGPT「業務に関する内容を以下に抜き出しました。
1、DX推進の目標と背景
- 納期短縮(平均3日から24時間以内)を実現し、競争力を強化。
- 当社はインテリア雑貨メーカーであり、品質には自信があるが、納期の早さを重視する顧客にシェアを奪われる状況が発生。
- DXを活用し、受注から発送までの時間短縮を目指す。
2、業務の現状
- 業務マニュアルが存在せず、個人メモに頼っている。
- 受注伝票をエクセルに入力し、商品の在庫を確認後、倉庫に発送指示を出す。
- 名入れ商品の対応において、誤字によるトラブルが発生(月に1〜2回程度)。
- 在庫数がエクセルと実際の倉庫で合わないことがある。
・入力ミス、棚卸時の数え間違い、営業部門からの直接指示忘れが原因。
3、土日の運用課題
- 営業部門は土日も受注を行うが、販売管理部門は休みのため、月曜日に処理。
- 急ぎの場合、営業部門が直接倉庫に指示を出すことがあり、二重処理が発生する。
4、倉庫の運用
- 3か所の倉庫(A、B、C)を利用。
- 商品コードや配送先に応じて発送先を振り分け。
- 北海道配送の場合は、C倉庫を経由するルールがあるが理由は不明。
5、次のステップ
- 北海道配送時にC倉庫を経由する理由を確認する。
- 次回の日程は改めて連絡する。
必要に応じて、詳細情報の抜き出しや整理も対応可能ですのでご連絡ください。」
結果を確認すると、業務に関することだけを抜き出してくれました。
DX推進の目標と背景に関しては、業務に関することかというと、微妙かもしれません。最低限業務の現状ということで抽出はされています。
実のところ、今回の動画を撮る前にシミュレーションした時は、もっと期待外れな内容でした。しかし何回か繰り返したせいか、だいぶ精度が上がってきました。
簡単なプロンプトで自分の期待に沿った結果が出てくればいいのですが、出てこない場合、プロンプトを微調整をしながら何度も繰り返し試してみることになります。何度かの微調整でうまくいくようになればいいのですが、私の過去の経験からすると、逆に悪い結果に進んでしまう可能性もあります。
そんな困った時に試してみる方法があります。それはOpenAIのプロンプトジェネレーターです。
プロンプトジェネレーターの使い方
- OpenAIのPlaygroundを開く
- アカウント設定を行う
- 「遊び場」をクリック(※英語ページの方は「playground」です)
- 指示を与える
(動画では実際の画面と共に詳細に説明しています。動画版はこちら)
今回作成したいプロンプトは「議事録メモから業務に関する部分を抜き出して業務フローを文章化してほしい」というものなので、その指示を与えます。そうすると、プロンプトの案が出てきました。
「システムの説明
議事録メモから業務に関連する発言を抽出し、それに基づいて業務フローを文章として作成してください。
-業務に関係する情報のみを対象とします。無関係な個人的話題、雑談などは無視してください。
-業務フローについては、各ステップの順序が分かるように明確に記述し、具体的な行動や次に続く手順を詳述してください。
-各ステップに対し、キャラクター(担当者・職種)を特定できる場合はその名前も含めてください。
#Steps
1.**発言の抽出**:提供された議事録の中から、業務に関連する発言や行動について言及した部分だけを抽出。
2.**順序の整理**:抽出した発言に基づき、業務の順序を整理し、明確な業務フローを設定。
3.**文章化**:整理した業務フローをもとに、自然で連続的な文章の形で業務の流れをまとめる。
#Output Format
-業務フローは「ステップ1、ステップ2…」の形式で記述します。それぞれのステップが明確に区切られていること。
-自然な日本語で、各ステップを簡潔かつ具体的に説明。
-ステップごとに担当者が分かる場合は、名前や役割を記述してください。
#Example
**入力メモの一部**
-田中:来週までに取引先Aへのプレゼン資料を完成させる必要があります。
-鈴木:その資料の初版を私が作ります。その後、森田さんにレビューをお願いします。
-森田:了解しました。私のレビューが終わったら高橋さんに最終のフィードバックを回す予定です。
**業務フロー**:
1.鈴木が取引先Aへのプレゼン資料の初版を作成する。
2.森田がその資料をレビューする。
3.高橋が森田のレビュー後に最終フィードバックを行う。
4.プレゼン資料が完成。来週までに準備完了。
#Notes
-重要でない話題や業務と無関係な発言は除外してください。
-非常に長いメモの場合、段階的に業務フローを整理してください(重要な部分のみ詳細に説明し、それ以外は簡素化しても構いません)。
-発言が連続している場合、業務の流れが途切れないように適切に結合してください。」
必要に応じてこのプロンプトの内容は自分で編集してもいいのですが、まずはこの内容をそのままコピーして使ってみます。
生成されたプロンプトでChatGPTを実行する
ChatGPTに、前項で生成されたプロンプトをそのままコピーして、議事録メモを添付し実行してみます。
<ChatGPTとの応答>
上村「(上記プロンプトの全文)」
ChatGPT「以下は、議事録メモから業務に関連する発言を抽出し、それに基づいて作成した業務フローです。
業務フロー
ステップ1:営業部門による受注処理
1、営業部門が顧客から受注を受け、受注伝票を作成します。
・担当:営業部門(山本課長)
2、受注伝票を販売管理部門へ引き渡します。
ステップ2:受注内容のエクセル入力
1、販売管理部が受注内容をエクセルに入力します。
・ECサイトやFAXでの受注内容をエクセルに入力します。
・担当:松井、上原
2、入力後、商品の在庫状況を確認します。
・倉庫が3箇所あるため、それぞれに確認を行い発送指示を出します。
ステップ3:名入れ商品の確認
1、名入れ商品については間違いが起きないように注意点をメモに記載します。
・担当:販売管理部(松井、上原)
2、名入れに間違いが起こらないよう、2人で確認作業を行います。
ステップ4:土日対応と受注処理
1、営業部門が土日も受注を行いますが、販売管理部は休業中のため、原則として翌月曜日に処理します。
2、重要顧客への柔軟な対応として、営業部門が直接倉庫へ発送指示を出す場合がありますが、二重処理が発生しないよう情報共有が必要です。
・担当:営業部門(山本課長)
ステップ5:倉庫による出荷作業
1、販売管理部からの発送指示を受け取った倉庫がシステムに受注データを入力し、伝票を印刷して商品を出荷します。
・担当:倉庫担当者(A倉庫、B倉庫、C倉庫)
1、商品コードに基づき、発送元倉庫を決定します。
・商品コード0〜3番台はA倉庫。
・5〜8番台はB倉庫。
・それ以外はC倉庫。
・配送先が北海道の場合、C倉庫経由で発送します。
ステップ6:改善点の検討
1、DX推進に向けて、受注から発送までの時間短縮を目標とし、現状の業務フローの問題点を分析します。
・倉庫とエクセルの在庫数のズレを解消する仕組みを検討。
・名入れ商品におけるミス削減のためのチェック体制強化。
・土日対応における運用ルールの策定。
・配送先ごとの倉庫移動の理由確認。
上記の業務フローは現状を整理し、改善点を明確化するための基礎となります。」
出力された結果を確認すると、概ね議事録メモに書かれていたことから業務フローに関する部分が抜き出れていました。厳密には、担当が誰というところまでは議事録メモに書かれていませんでしたが、そこは後ほど削除すれば良い点です。
さらに大切な部分として、条件に基づいて変わる部分もしっかり記載されています。また、議事録メモにはない「改善点の検討」が記載されていますが、事実に反するという内容ではないので、そう考えると出力されて便利なものかと思います。
生成されたプロンプトの確認
Playgroundで出力したプロンプトをもう一度見てみましょう。
「システムの説明
議事録メモから業務に関連する発言を抽出し、それに基づいて業務フローを文章として作成してください。
-業務に関係する情報のみを対象とします。無関係な個人的話題、雑談などは無視してください。
-業務フローについては、各ステップの順序が分かるように明確に記述し、具体的な行動や次に続く手順を詳述してください。
-各ステップに対し、キャラクター(担当者・職種)を特定できる場合はその名前も含めてください。
#Steps
1.**発言の抽出**:提供された議事録の中から、業務に関連する発言や行動について言及した部分だけを抽出。
2.**順序の整理**:抽出した発言に基づき、業務の順序を整理し、明確な業務フローを設定。
3.**文章化**:整理した業務フローをもとに、自然で連続的な文章の形で業務の流れをまとめる。
#Output Format
-業務フローは「ステップ1、ステップ2…」の形式で記述します。それぞれのステップが明確に区切られていること。
-自然な日本語で、各ステップを簡潔かつ具体的に説明。
-ステップごとに担当者が分かる場合は、名前や役割を記述してください。
#Example
**入力メモの一部**
-田中:来週までに取引先Aへのプレゼン資料を完成させる必要があります。
-鈴木:その資料の初版を私が作ります。その後、森田さんにレビューをお願いします。
-森田:了解しました。私のレビューが終わったら高橋さんに最終のフィードバックを回す予定です。
**業務フロー**:
1.鈴木が取引先Aへのプレゼン資料の初版を作成する。
2.森田がその資料をレビューする。
3.高橋が森田のレビュー後に最終フィードバックを行う。
4.プレゼン資料が完成。来週までに準備完了。
#Notes
-重要でない話題や業務と無関係な発言は除外してください。
-非常に長いメモの場合、段階的に業務フローを整理してください(重要な部分のみ詳細に説明し、それ以外は簡素化しても構いません)。
-発言が連続している場合、業務の流れが途切れないように適切に結合してください。」
まずは概要から始まり、次に手順(#Steps)、どのような順番で処理をしていくかという指示です。そして出力のフォーマット(#Output Format)、この出力フォーマットはこのように記載をするという風に書かれています。続いて、例(#Example)。例えば入力メモはこう、そして出力する業務フローはこのようにするという具合に例を与えています。最後に注意事項(#Notes)として、「業務とは無関係な発言を除外してください」などなどということが書かれています。
ご覧いただくと分かりますが、結構長いプロンプトになっています。「概要」「手順」「出力フォーマット」「例」「注意点」という構成となっています。このプロンプトについては応用も効くかと思うので、ぜひダウンロードしてみてください。
>> プロンプトのダウンロードはこちら <<
【 ご参考 】プロンプトジェネレーターの料金について
OpenAI プロンプトジェネレーターでプロンプトを生成するには料金が発生します。
今回の動画で作成した程度の内容の場合、0.01ドルでした。
(2024/11/22 のレートは、$1=154.41でしたので、日本円にして1.5441円です。)
小さな額ではありますが、ただではありませんので、ご理解のうえお試しください。
まとめ
単純なプロンプトでも自分が期待していた結果に近いものが出てきたので、実は意外な結果でした。と言うのも、昨日まで試していた時はこんな結果にはなりませんでした。もっと適当な内容が返ってきました。
裏を返せば毎回違う結果が出てしまうということの裏付けでもあります。今回のように、いい方向にブレればそれに越したことはないのですが、そうでない場合は、やはりプロンプトのチューニングが必要です。そんな時に今回ご紹介したプロンプトジェネレーターを試してみるのも1つの手かと思います。
ぜひ皆さんも、自分の期待した結果が出るようプロンプトチューニングを繰り返し試してみて、プロンプトエンジニアリングの技術を身につけてください!