プロンプトエンジニアリング超入門の第8回目です。
この動画では、「効果的なプロンプトを作る4つのポイント」の中の、3つめ「複雑なタスクは分解する」についてです。
この動画では、次のような疑問を解消します。
・生成AIに複雑なタスクを正確にこなしてもらうにはどうすればいいの?
・長い文章や会話を効率的に要約させる方法は?
・タスクを分解することで、どんなメリットがあるの?
この動画では、これらの疑問を解決します。
複雑なタスクを分解してAIに依頼する3つのテクニックをご紹介します。
生成AIを賢く使いこなし、業務効率をアップさせたい方は必見です。
ITやDXについての学びを発信する「キノコード」です。
私は紀貫之の子孫ですが、文章ではなくコードを書いているので「キノコード」と名乗っています。
ぜひ、チャンネル登録をお願いします。
複雑なタスクは分解する
AIに複雑なタスクを任せる時、タスクを分解をして依頼をするとよいです。
それは、大きなレゴを作るときに、まずは小さなブロックから組み合わせていくのと似ています。
複雑なタスクは分解するテクニックは、3つあります。
- 長い会話では一度要約をする
- 長い文章を少しずつまとめてあとに、もう一度全体をまとめる
- 複雑なタスクを小さなタスクに分ける
長い会話では一度要約をする
生成AIと会話をしていて、話が長く続くと、正確さが落ちてきたなと感じるときがあります。
それは、生成AIには記憶できる量に制限があります。
ただ、厳密には、生成AIは人間のように記憶を持つわけではありません。
一度に保持できる文字数、つまりトークン数に制限があるということです。
トークン数とは、生成AIが一度に認識できる文字や単語の数のことです。
この限界を超えると、古い情報が削られ、新しい情報を正確に処理できなくなることがあります。
そんなときは、今までの話をまとめてもらうというテクニックが有効です。
具体的には、生成AIに「これまでの話をまとめてください」とお願いすると、「これまでの話では、〇〇について議論しましたよね。その中で△△が重要なポイントでした」といった具合に要約してくれます。
これで大事なポイントが生成AIに伝わり、また会話を続けやすくなります。
図解で説明します。
1回目のやりとり、2回目のやりとりは記憶を維持していたとします。
しかし、 3回目の質問をしたあたりから記憶が薄れてきたとします。
4回目の質問では、2回目の質問が薄れ、1回目の記憶はなくなります。
5日目の質問では、1回目の記憶はほぼなくなります。
そこで、2回目の質問が終わったら、「これまでの話をまとめてください」と伝えましょう。
そして、3回目のやりとりをすると、1回目と2回目の記憶を維持したまま、3回目のやりとりをしてくれます。
4回目の質問も今までのやり取りを記憶したまま、AIとの会話を進めることができます。
もちろん上記はイメージであって、2回やりとりしたら、一度、まとめましょうというわけではないです。
会話量にあわせて、一度まとめるとよいでしょう。
長い文章を少しずつまとめた後に、もう一度全体をまとめる
次に「長い文章を少しずつまとめた後に、もう一度全体をまとめる」についてです。
先ほどもお伝えしたように、生成AIには会話を記憶できる量に上限があるため、長すぎる文章を一度に要約するのは難しいのです。
200ページもある報告書を要約したい場合、文章を小さなセクションに分けて、それぞれを要約していく方法が有効です。
たとえば、200ページの報告書を章ごとに分割します。
「第1章:市場分析」「第2章:競合他社の状況」「第3章:今後の戦略」というように分け、それぞれの章を生成AIに要約してもらいます。
その後、各章の要約を再度生成AIにまとめてもらい、全体の要約を完成させます。
この方法を使えば、生成AIの制限を超えて、長い文章でも正確に要約できます。
後半の内容を理解するには、前半の情報も必要な場合は、「前の要約を考慮した要約」していく方法が有効です。
各セクションを要約するときに、これまでの要約も合わせて生成AIに提供します。
たとえば、第3章を要約するときに、第1章と第2章の要約もAIに渡します。
これにより、AIは前の情報も考慮しながら、次のセクションを要約できます。
この方法を使うと、一貫性のある要約ができ、全体の流れを正確に把握できます。
複雑なタスクを小さなタスクに分ける
次に、「複雑なタスクを小さなタスクに分ける」についてです。
複雑なタスクを小さなタスクに分けておき、それを生成AIに渡しておくと、チャットボットのように対応をしてくれます。
インターネット会社のカスタマーサポート担当の例で考えてみましょう。
カスタマーサポートでは、お客様からの問い合わせを受けて、お客様の状況をヒアリングをします。
原因が特定できたら、それに応じた対応を案内します。
そして、これらの対応は、マニュアル化していることがほとんどですよね。
そこで、私が簡単なマニュアルを作りました。
それを具体例に見ていきましょう。
まず最初は1次カテゴリーです。
1次カテゴリーには、請求、技術サポート、アカウント管理、一般的な問い合わせというカテゴリがあります。
次に、2次カテゴリです。
2次カテゴリには、1次カテゴリの詳細なカテゴリがあります。
例えば、1次カテゴリーの技術サポートをみてみましょう。
1次カテゴリーの技術サポートの中には、2次カテゴリーとしてトラブルシューティング、デバイスの互換性、ソフトウェアの更新というカテゴリがあります。
2次カテゴリがトラブルシューティングだった場合、
「ユーザーにルーターの全てのケーブルが正しく接続されているか確認してもらいます」
「全てのケーブルが接続されており、問題が続く場合、使用しているルーターのモデルを尋ねる」
「再起動をしても解決しない場合は、専門のITサポートに接続をする」
というマニュアルだったとします。
さて、マニュアルの説明は終わりです。
カテゴリーを分類をするマニュアルと、対応手順のマニュアルの説明をしましたよね。
生成AIに渡すプロンプトも2回にわけます。
1回目は、カテゴリーを判別をしてもらう。
2回目に、対応手順にしたがって、対応をしてもらう。
プロンプトを2回のわけるのは、後で説明しますが、「誤った答えを返すリスクを減らせる」「コストを削減できる」という理由からです。
実際にみていきましょう。
まずはカテゴリー分けのプロンプトです。
役割として「あなたはカスタマーサービス担当者です。」と与えます。
指示として「問い合わせを1次カテゴリーと2次カテゴリーに分類してください」
問い合わせとして「インターネットに繋がらなくなった」を渡してみましょう。
そして1次カテゴリーと2次カテゴリーのマニュアルを与えます。
ちなみに、「インターネットに繋がらなくなった」という問い合わせは、「1次カテゴリーが技術サポート」「2次カテゴリーがトラブルシューティング」です。
うまくいくか試してみましょう。
# 役割
あなたはカスタマーサービス担当者です。
# 指示
問い合わせを1次カテゴリーと2次カテゴリーに分類してください。
# 問い合わせ
インターネットに繋がらなくなった。
# 1次カテゴリーと2次カテゴリー
1次カテゴリー:
- 請求
- 技術サポート
- アカウント管理
- 一般的な問い合わせ
請求の2次カテゴリー:
- 解約やアップグレード
- 支払い方法の追加
- 料金の説明
- 請求の異議申し立て
技術サポートの二次カテゴリー:
- トラブルシューティング
- デバイスの互換性
- ソフトウェアの更新
アカウント管理の二次カテゴリー:
- パスワードリセット
- 個人情報の更新
- アカウントの閉鎖
- アカウントのセキュリティ
一般的な問い合わせの二次カテゴリー:
- 製品情報
- 価格
- フィードバック
- 人間との対話希望
出力:
1次カテゴリー:技術サポート
2次カテゴリー:トラブルシューティング
結果が返ってきました。
うまく分類されましたね。
次に、対応手順を生成AIに与えます。
プロンプトを見ていきましょう。
指示として「対応手順にしたがって、お客様に1つずつ質問をしてください。回答があるまでは次のステップへ進まないようにしてください」と与えます。
生成AIが対応できるのかみてみましょう。
実行します。
# 指示
対応手順にしたがって、お客様に1つずつ質問をしてください。
回答があるまでは次のステップへ進まないようにしてください。
# 対応手順
1. ユーザーにルーターの全てのケーブルが正しく接続されているか確認してもらいます。ケーブルは時間とともに緩むことがあります。
2. 全てのケーブルが接続されており、問題が続く場合、使用しているルーターのモデルを尋ねます。
2.1 モデルに応じて、再起動の方法を案内します
2.1.1 モデルAの場合:赤いボタンを5秒間押し、その後5分待ってから接続を確認するように指示します。
2.1.2 モデルBの場合:電源を抜き差しし、その後5分待ってから接続を確認するように指示します。
3 再起動しても問題が解決しない場合、専門のITサポートに接続することを提案します。
生成AIから1つめの回答がきましたね。
「ルーターのすべてのケーブルが正しく接続されているか確認して下さい」とのことです。
マニュアル通りですね。
お客様の回答として「ケーブルは正しく接続されています」と回答しましょう。
すると次の質問がきました。
「ルーターのモデルはなんですか?」とのことです。
これもマニュアル通りです。
「モデルA」と回答をしましょう。
すると、生成AIから「モデルAのインターネットに接続できない場合の手順が案内されました。
具体的には、「ルーターの電源を切って再起動してください」とのことです。
そこで、お客様の回答として「ルーターを再起動させたが、ネットに接続できない」と回答しましょう。
すると最後の案内として、サポート担当者に接続することを案内してくれました。
チャットボットのように対応してくれましたね。
「複雑なタスクを小さなタスクに分ける」と、しっかりと案内をしてくれます。
なぜこのようなやり方をするのでしょうか?
2つのよい点があります。
1つめは、誤った答えを返すリスクを減らせることです。
前の動画でも説明したように、生成AIには記憶できる量、つまり処理できるトークン数に制限があります。
また、各カテゴリーに対応手順がある場合、すべてで15個の対応手順となり、量が膨大になります。
このように情報が多くなると、生成AIが誤った答えを返す可能性が高くなります。
プログラミングでチャットボットを開発する場合、カテゴリを判別する生成AIのプログラム、
カテゴリに応じた対応手順のプロンプトを渡すプログラムの2つに分けます。
一気にたくさんの対応手順を渡すことはなくなるので、誤った答えを返すリスクを減らせるということです。
2つめは、コストを削減できることです。
生成AIをプログラム経由で利用する場合、つまりAPIを利用する際には、入力文字数と出力文字数に応じて費用が発生します。
しかし、一次対応のカテゴリをプログラムで受け取り、その後の処理を個別に進めることで、15個すべての対応手順を読み込ませる必要がなくなります。
このようにして、1つの対応手順のみを読み込ませる形にすれば、コストを抑えることができます。
今まで話した対応をプログラムやAPIに組み込み、アプリケーション化することで、カスタマーサポートの自動化を実現できます。
今まで説明した対応だけではなく、今ではRAGという技術も多く利用されています。
RAG(Retrieval-Augmented Generation)とは、外部データベースを活用して生成AIが回答を補強する技術です。
RAGの技術を利用すれば、御社のサービスや社内情報を学習させることができます。
RAGを利用することで、カスタマー対応の生成AI、社内規則や社内ナレッジを回答する生成AIを構築できます。
御社オリジナルの生成AIを構築することも可能です。
RAGの技術を学習してみるのも一つの方法です。
尚、キノクエストにはRAGの技術を学習するコンテンツも揃っています。
まとめ
この動画で学んだことをまとめます。
・生成AIに複雑なタスクを依頼する際は、タスクを小さく分解することが重要
・長い文章では一度要約をすることで、AIの記憶の限界を補える
・長い文章はセクションごとに要約し、最後に全体をまとめると効果的
・タスクを分解することで、誤った回答を防ぎ、コストも削減できる
明日から、これらのテクニックを活用して、生成AIをより効果的に使ってみてください。
個人の学習も法人のお客様もキノクエスト
個人のお客様向けのキノクエストでは、生成AIの活用事例の講座、無料で簡単に生成AIアプリを作れるDifyの講座が学べます。 また、Pythonを使ったRAGやファインチューニングや、企業オリジナルなLLMを構築できる学習コンテンツもあります。Pythonを使った高度な機械学習も学習可能です。幅広いコンテンツであなたの学習をサポートします。 動画で学んだ内容の確認問題やキノクエスト限定の認定試験で、知識の定着もバッチリです。
詳しくはYouTube動画の概要欄にあるURLからご確認ください。
法人のお客様には「キノクエストforBiz」がおすすめです。
企業向けサービス「キノクエストforBiz」でDX推進に必要な人材育成をサポートします。YouTubeで培った多様なコンテンツを基に、DXを加速させる人材を育成するeラーニングサービス「キノクエストforBiz」を提供。 キノコードの動画を著作権や利用規約を気にすることなく安心して学習することができます。 今ならリスキリング助成金の申請・確定通知を受けられれば、キノクエストの料金の60~75%が国から助成されます。 弊社の提携社労士事務所が申請などをまるっとサポート。 高い費用対効果と助成金の活用で、DX人材の育成をサポートします。
初回相談は無料です。下記フォームから、お気軽にご相談ください。
https://kino-code.com/contact-form/