ai-industry

生成AIの可能性を引き出す効果的なプロンプトエンジニアリングの方法

  • データ分析
  • 生成AI
  • AI開発

生成AIは、さまざまな業界で大きな変革を起こし始めています。このブログシリーズは、企業におけるデータ活用の新しい地平を開く、生成AIの可能性について解説します。その第四弾となる本ブログでは、生成AIの仕組みを解説し、生成AIを効果的に使う上で最も重要な技術である、プロンプトエンジアリングについて解説します。

生成AIの仕組みとプロンプト

生成AIは機械学習の技術を元に作られています。機械学習は、コーパスと呼ばれる入力と期待する出力のデータのペアを元に、入力と出力の関係をモデルとして学習し、入力のみが与えられた場合に、出力を返す、という技術です。この観点では、生成AIも機械学習の技術の1つと捉えられます。

しかし、従来のAIと、生成AIの大きな違いは、規模と汎用性にあります。従来のAIは、特定のタスク、例えば、機械翻訳、文書要約、画像認識といったタスクに特化されてきました。このため、タスクに特化したコーパスが用意され、学習したモデルはそのタスクでしか使用できません。これは、入力と出力の関係は非常に複雑で、その関係をモデル化するには各タスクに特化したアルゴリズムが必要であり、一つのモデルが複数のタスクをこなすことは難しいと考えられていたためです。

しかし、深層学習技術の発展と計算機の進化により、生成AIが登場しました。生成AIは、桁違いに大きいコーパスで、桁違いに大きいパラメタを持つニューラルネットワークを学習させたAIモデルです。例えば、OpenAIのGPT 4.0では、5000億から数兆のパラメタを持つ、と言われています。これにより汎用的な入力と出力の関係をモデル化できるようになり、タスクを定義するテキスト自体も入力に含めて処理できるようになりました。

生成AIは、大規模コーパスに含まれる知識が詰まった知識ベースとして考えることができます。これを活用するために重要になるのが、生成AIに与える「指示」です。 この「指示」は、プロンプトと呼ばれており、生成AIをうまく使うための重要なコンセプトになっています。

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

プロンプトエンジニアリングとは、生成AIを効果的に活用するために、言語モデルへの命令(プロンプト)を最適に設計する技術で、学問分野としても認知されるようになってきています。例えば、ChatGPTへ効果的な命令(プロンプト)をすると質の良い対話ができるように、プロンプトは生成AIがどのような情報を出力するかを決定する重要な要素であり、正確で適切なプロンプトを設計することが重要であるとともに、few shot promptingのように具体的な例示をすることで、生成AIから狙った回答を引き出すことができます。

プロンプトエンジニアリングについては様々な情報が公開されていますが、ここではOpenAPIが公式に提供しているプロンプトエンジニアリングのガイドで述べられている6つのポイントを紹介します。この文書は多様なユースケースを考え長い内容になっているため、本ブログでは、企業内のデータ分析のユースケースにおいて、具体例を交えてエッセンスを絞り紹介することで、データ分析の文脈で生成AIを効果的に使う方法をお伝えします。

プロンプトエンジニアリングの6つのガイドライン

1.明確な指示を書く

生成AIは人間と同じく指示が不十分だと期待しない結果を返すことがあります。また、データ活用のコンテキストでは、生成AIの出力を別のプログラムで処理したいことが多く、厳密に出力フォーマットを定義することが重要になります。「明確な指示」という言葉自体が曖昧ですので、ここでは自然言語で書かれたアンケートの集計を行う、というユースケースの例を見てみましょう。あなたは千件以上の自由記述アンケートのデータを持っています。これを目で読むのは大変なので、それを生成AIに集計させることにしました。

良いプロンプトの例:

プロンプト例1

このプロンプトでは以下の点がポイントになっています。

  • 背景も含めて説明する(1行目)
  • 実現したいタスクを具体化し過不足なく記載する(2行目)
    • 特にここでは集計の観点「待ち時間に対する不満」までを具体的に指示するようにしています。この場合、観点ごとにプロンプトを作る必要がありますが、こういった観点自体を生成AIに考えさせ、プロンプト自体を作成させる、という使い方も考えられます。
  • 曖昧性が生じそうな部分には補足を与える(3行目)
  • 区切り文字(“””)などで、データと指示を明示的に分ける(4行目、14行目)
  • 出力フォーマットを例示する(最後の5行)

2.根拠を出すよう指示する

生成AIには、ハルシネーションと呼ばれる問題があります。生成AI、事実とは異なるそれらしい回答を出すことがあります。嘘の無い結果を得るには、根拠を示すよう指示することが有効です。

先ほどと同じアンケートの集約の例では「各回答に「待ち時間に対する不満」が含まれるか否かを判定し、含まれるか否かをYesかNoで回答してください。さらに、その不満を言及している箇所も出力してください。」と指示することが有効です。

3.複雑なタスクをより単純なサブタスクに分割する

複雑なタスクを曖昧なまま与えると生成AIが誤った理解に基づき出力を出すため、期待と異なる結果を返す可能性が増えます。生成AIに実行させたいタスクがサブタスクに分割できる場合、ステップバイステップで指示を与えることが好ましいです。例えば、顧客との会議の書き起こしデータを要約させるユースケースを考えます。

悪いプロンプトの例:

良いプロンプトの例:

4.モデルによく考えさせる指示を与える

一般に、端的な指示を与えることは良いことですが、生成AIに端的な質問のみを与えると単純なつまらない回答を示す傾向があります。生成AIにより深い洞察を期待する際には、生成AIにどのような観点での洞察を求めるかを指示したり、出力の数を増やして指定することで、深く、幅広く考えさせることが重要です。深い洞察を期待するタスクの例として、データ分析で得られた情報の解釈を生成AIに手伝ってもらう、というユースケースを考えます。

悪いプロンプトの例:

良いプロンプトの例:

5.外部のツールを使用する

生成AIは汎用的なツールですが、他のツールを用いた方が効果的なシーンがたくさんあります。例えば、現状の生成AIに表構造のデータそのものを入力として与え、データ分析を行わせることは効果的ではありません。一つ上の解約分析の例では、「40代の女性の顧客は、一般の顧客に比べ、入会後3ヶ月に解約する確率が1.5倍以上である」という分析結果だけを生成AIに与えています。データ内から統計的なパターンを見つけ出す作業は、それに特化した別のツールで実施した方が、正確性やスケーラビリティなど、さまざまな観点でメリットがあります。このように、プログラムや他のツールで実施可能なところは他のツールで解消し、生成AIに与えるべきタスクをよく考えることが重要になります。

6.修正を体系的に評価する

プロンプトのチューニングにおいては、プロンプトの修正を行った後その結果をきちんと評価し改善していくことが重要です。この際のポイントとなるのは、期待する結果の正解を用意しそれと比較して評価すること、そして、比較による評価指標を定義し、その指標に基づき各プロンプトの良さを定量的に評価することです。
例えば、一つ目の例で示した、自然言語で書かれたアンケートの集計を自動化するプロンプトの設計を考えてみましょう。

このタスクでは、各回答に「待ち時間に対する不満」が含まれるかどうかを判断するものでした。この場合、最初に少数のデータを人間が読み、正解の例を作ること、そして、このデータをテストデータとしてあるプロンプトで生成AIが出力した結果と比較し、何%の精度が出るかを確認することをお勧めします。

要約のような結果の正解判定が難しいようなケースでは、評価用のプロンプトで生成AIを使って評価することをお勧めします。例えば、会議書き起こしの要約タスクの例では、人間が作った要約と生成AIが作成した要約と比較するプロンプトを作り、その結果を元に生成AIで評価することが推奨されています。

要約結果を評価する指示の例:

dotData Insight – 特徴量と生成AIが変革するビジネスアナリティクス

dotDataでは、「データからの知識」である特徴量と、生成AIを融合したdotData Insightによって企業のビジネスアナリティクスを推進しています。生成AIは、企業内のデータ活用において、データの加工・解釈を助ける重要なツールになりうる存在ですが、生成AIだけで全てが解決できるわけではありません。dotData Insightは、dotDataの独自のAIが、従来の手作業による分析では発見することができなかった、或いは、数週間から数ヶ月もの時間がかかっていた、複雑な業務データの重要なパターン(特徴量)を抽出し、そのパターンの解釈を生成AI、LLM(大規模言語モデル)が支援することで、データからの仮説立案や施策設計を支援します。

dotData Insight

生成AIに関するブログシリーズ

生成AIブログ – パート1 :生成AIとは? – 生成AIは企業のデータ活用をどのように進化するのか?

生成AIブログ – パート2 :LLMとは? – 大規模言語モデルのデータアナリティクス応用

生成AIブログ – パート3 :生成AIとLangChain

生成AIブログ – パート4 :生成AIの可能性を引き出す効果的なプロンプトエンジニアリングの方法 (このブログ)

生成AIに関するウェビナー

生成AIのセキュリティ

Yukitaka Kusumura
Yukitaka Kusumura

dotDataの共同創業者で、首席リサーチエンジニア。AIを活用した特徴量設計の研究開発を統括。機械学習、自然言語処理、ビッグデータエンジニアリングなどデータサイエンスに関する研究に10年以上従事。工学博士。

dotDataのAIプラットフォーム

dotData Feature Factory 特徴量をアセット化し全てのAI/BIを強化

dotData Feature Factoryは、データサイエンティストやIT部門が、企業がキュレーションされたデータ(すなわち特徴量)を開発するために、データ加工に関するノウハウを再利用可能なアセットとして蓄積する仕組みを提供します。データ中心に構築される特徴量空間から、アルゴリズムによってデータに隠れたパターン(特徴量)を発見し、特徴量発見のスピードと効率、再利用性と再現性、専門家間の連携、品質と透明性を向上させます。dotData Feature Factoryは、機械学習モデルによる予測、ビジネスインテリジェンス(BI)によるデータ可視化、或いはマーケティングオートメーションのような、全てのデータアプリケーションを強化します。

dotData Insight 業務部門が自ら洞察を導き出す

dotData Insightは、事業部門が主役のビジネスアナリティクスを実現する革新的なデータ分析プラットフォームです。業務データに隠れたパターン(特徴量)を、BIツールのような直感的で使いやすいインターフェースを通じて提供します。dotData独自のAIが解析するデータの特徴を、生成AIの「世界知識」で補完し、実用的なビジネス仮説を生み出します。この融合により、業務部門は、データの洞察を直感的に理解し、新しいビジネス仮説を立て、戦略立案や施策実行をより効果的に行うことができます。