複雑なタスクを単純なプロンプトに分割する

複数の指示やステップを必要とする複雑なタスクでは、プロンプトをサブタスクに分割することで、モデルの応答を改善できます。プロンプトを小さくすると、制御性、デバッグ、精度を向上させることができます。

複雑なプロンプトを分割してモデルに取り込む方法は 2 つあります。

  • プロンプトを連結する: タスクをサブタスクに分割し、サブタスクを順番に実行します。
  • レスポンスを集計する: タスクをサブタスクに分割し、サブタスクを並列実行します。

プロンプトを連結する

複数の連続したステップを含む複雑なタスクの場合は、各ステップをプロンプトにして、プロンプトを順番に連結します。このプロンプトが順番に並べられたチェーンでは、シーケンス内の 1 つのプロンプトの出力が次のプロンプトの入力になります。シーケンスの最後のプロンプトの出力が最終出力です。

たとえば、ご自身が通信事業を営んでおり、モデルを使用してお客様からのフィードバックの分析、一般的な顧客の問題の特定、問題の分類、および問題のカテゴリごとのソリューションの生成を行う必要があるとします。

タスク 1: お客様の問題を特定する

モデルによって最初に実行されることを必要とするタスクは、未加工の顧客フィードバックから有意なデータを抽出することです。このタスクを実行するプロンプトは、次のようなものです。ここで、CUSTOMER_FEEDBACK は顧客フィードバックを含むファイルです。

データの抽出
      Extract the main issues and sentiments from the customer feedback on our telecom services.
      Focus on comments related to service disruptions, billing issues, and customer support interactions.
      Please format the output into a list with each issue/sentiment in a sentence, separated by semicolon.

      Input: CUSTOMER_FEEDBACK
    

モデルのレスポンスには、お客様のフィードバックから抽出された問題と感情のリストが含まれることを想定しています。

タスク 2: 問題をカテゴリに分類する

次に、モデルにデータをカテゴリに分類するよう指示し、前のタスクのレスポンスを使用して、お客様が直面している問題の種類を把握できるようにする必要があります。このタスクを実行するプロンプトは、次のようなものです。ここで、TASK_1_RESPONSE は前のタスクのレスポンスです。

データを分類
        Classify the extracted issues into categories such as service reliability, pricing concerns, customer support quality, and others.
        Please organize the output into JSON format with each issue as the key, and category as the value.

        Input: TASK_1_RESPONSE
      

モデルのレスポンスには、カテゴリに分類された問題が含まれていることを想定しています。

タスク 3: ソリューションを生成する

次に、前のタスクのレスポンスを使用して、分類された問題に基づいて実用的な推奨事項を生成し、顧客満足度を高めるようにモデルに指示します。これを実現するプロンプトは次のようなものです。ここで、TASK_2_RESPONSE は前のタスクのレスポンスです。

推奨事項を生成する
        Generate detailed recommendations for each category of issues identified from the feedback.
        Suggest specific actions to address service reliability, improving customer support, and adjusting pricing models, if necessary.
        Please organize the output into a JSON format with each category as the key, and recommendation as the value.

        Input: TASK_2_RESPONSE
      

モデルのレスポンスには、カスタマー エクスペリエンスとサービス品質の向上を目的とした、各カテゴリに関する推奨事項が含まれ、全体的な目標を満たすものである必要があります。

レスポンスを集計する

複雑なタスクがあるものの、特定の順序でタスクを実行する必要がない場合は、並列プロンプトを実行してモデルのレスポンスを集約できます。

たとえば、ご自身がレコード店を経営しており、音楽ストリーミングの傾向と店舗の販売データに基づいて在庫を確保するレコードを決定するためのモデルを使用するとします。

タスク 1: データを分析する

まず、ストリーミング データと販売データの 2 つのデータセットを分析する必要があります。プロンプトを実行して、これらのタスクを並行して完了できます。これらのタスクを実行するプロンプトは、次のように表示されます。ここで、STORE_SALES_DATA は販売データを含むファイル、STREAMING_DATA はストリーミング データを含むファイルです。

タスク 1a: 販売データを分析する
      Analyze the sales data to identify the number of sales of each record.
      Please organize the output into a JSON format with each record as the key, and sales as the value.

      Input: STORE_SALES_DATA
    

出力には、各レコードの販売数(JSON 形式)が含まれることを想定しています。

タスク 1b: ストリーミング データを分析する
        Analyze the streaming data to provide a the number of streams for each album.
        Please organize the output into a JSON format with each album as the key, and streams as the value.

        Input: STREAMING_DATA
      

出力には、各アルバムのストリーミング数(JSON 形式)が含まれることを想定しています。

タスク 2: データを集計する

これで、両方のデータセットのデータを集計して、購入計画を立てることができます。データを集計するには、両方のタスクの出力を入力として対象に加えます。これを実現するプロンプトは次のようになります。ここで、TASK_1A_RESPONSETASK_1B_RESPONSE は前のタスクのレスポンスです。

販売データとストリーミング データを集計する
        Recommend a stocklist of about 20 records based on the most sold and most streamed records.
        Roughly three quarters of the stock list should be based on record sales, and the rest on streaming.


      Input: TASK_1A_RESPONSE and TASK_1B_RESPONSE
      

出力には、レコードの販売とストリーミングに基づいて、約 20 件のレコードの在庫リストが含まれます。ストリーミングでの人気が高いレコードよりも、実績を伴う販売履歴のあるレコードが優先されます。

次のステップ