🤖

【Dialogflow】新機能 カスタム要約プロンプトとは?

2024/03/06に公開

はじめに

こんにちは、クラウドエース データソリューション部所属の ジェスター です。

データソリューション部 では、Google Cloud が提供しているデータ領域のプロダクトについて、新規リリースをキャッチアップするための調査報告会を毎週実施しています。 新規リリースの中でも、特に重要と考えるリリースを記事としてまとめ、本ページのように公開しています。

今回は 2024 年 01 月 24 日付のリリース、「Dialogflow のデータストア エージェントにカスタム要約プロンプトを与えることが可能になったこと」についてご紹介します。

実際のリリースノートについては下記をご確認ください。

https://cloud.google.com/dialogflow/docs/release-notes#January_24_2024

記事対象プロダクトの概要

Dialogflow

Dialogflow は、プログラミング技術の有無に関わらず容易にチャットボットなどのエージェント(会話型ユーザー インターフェース)が構築できるプロジェクトです。

Dialogflow では 2 つの エディション でエージェントに対する操作を行うことが可能で、それぞれで作成できるエージェントタイプや特徴に違いがあります。

エディション エージェントタイプ 適するエージェント
Dialogflow ES 基本的なエージェントタイプ 小中規模なものや、そこまで複雑でないもの
Dialogflow CX 高度なエージェントタイプ 大規模なものや、複雑なもの

今回はそのうち、Dialogflow CX を使用します。

追加の参考資料

データストア エージェント

まず、Dialogflow CX エージェント(以降、エージェント) とはエンドユーザーとテキストや音声ベースの会話ができるユーザー インターフェースです。この会話を通して集められた情報は構造化データに変換され、他のアプリケーションやサービスで活用できるようになります。また、エージェントは自然言語理解を搭載しているので、人間らしい言葉遣いのレスポンスが生成できるだけでなく、エンドユーザーが使用する言葉のニュアンスを理解することも可能です。

そんなエージェントの中でも、紐づけられたデータと LLM(大規模言語モデル) を元に、レスポンスを生成できるのが データストア エージェント です。エンドユーザーからの質問やリクエストに応える上で適切な情報をデータから抽出し、それを LLM に要約させ、レスポンスとして返します。

データストア エージェントに紐付けられるデータは データストア と呼ばれ、指定されたウェブサイトや BigQuery のテーブル、Cloud Storage のファイル や フォルダから情報を読み取ったものが格納されます。

データストア と データストア エージェント はVertex AI Conversation 上の機能であるため、Google Cloud コンソール上の Search and Conversation から作成を行います。


Vertex AI Search and Conversation

Vertex AI Search and Conversation とは、機械学習の専門的な知識を持ち合わせていなくても、高度な生成 AI アプリケーションが簡単に作成できるプロダクトです。

Vertex AI SearchVertex AI Conversation の 2 つの機能から構成されています。

機能 概要
Vertex AI Search 組織内のデータに対して検索やレコメンデーションを行うアプリを作成する。
Veretx AI Conversation データストア エージェントや生成エージェントといった対話型ユーザー インターフェースを作成する
追加の参考資料

リリース内容

データストア エージェントが生成するレスポンスをより自分の求めているものに近づけるために、Dialogflow CX コンソール上でカスタマイズすることが可能です。
その手段の 1 つとして、今回新しくカスタム要約プロンプトが設定できるようになりました。

要約プロンプト

プロンプト とは、エージェントが言語モデルに対して送る指示書であり、特定のレスポンスの生成を依頼するためのものです。

そして要約プロンプトはその名の通り、長い文章などから主要なポイントを抽出し、要約を生成するために使用されるプロンプトです。

中でもデータストア エージェントにおいて要約プロンプトは、データストアから適切な情報として抽出されたものを、ユーザークエリに応える様な形で要約するために使われるものです。

実際にデータストア エージェントが要約の生成を依頼する流れは次のとおりです。


*要約プロンプトの中身は筆者が想像するものを記載しています。

  1. エンドユーザーがエージェントに対してクエリを送る
  2. ユーザーのクエリ内容に対してエージェントがデータストア内から適切なソースを探す
  3. エージェントが (1) のユーザークエリと (2) のソースとともに LLM にプロンプトを送る
  4. LLM が要約を行う
  5. 生成された要約がエンドユーザーに届けられる
追加の参考資料

カスタム要約プロンプト

要約プロンプトを独自のものにカスタマイズしたのが カスタム要約プロンプト です。
例えば、生成されるすべての要約の形式を箇条書きに指定する、などといったことが可能です。

カスタム要約プロンプトでは、エージェントの設定者が独自にフォーマットを定義できます
エージェントはこのフォーマットやデータストアからの情報をもとに、LLM に送信するプロンプトを作成します。

この例では、「箇条書きで要約を行う」 という指示を含んだカスタム要約プロンプトが設定され、実際に LLM からは指定通り箇条書きの要約が返されていることがわかります。

また、このプロンプトは事前定義されたプレースホルダを含むこともできます。


プレースホルダ

プレースホルダとは、適切な値に置き換えられる予定の部分を仮確保するための変数です。

別の例で、ユーザーとエージェントの会話内容の情報からユーザークエリ へのレスポンスを生成する エージェントがいるとします。
この時、要約プロンプトには ユーザーのクエリテキストユーザーとの会話履歴 を含めたいのですが、事前に実際の会話内容やクエリを定義することはできません。

そこで、プレースホルダである $original-query$conversation を使えば、LLM にプロンプトを送る際に自動的に実際の内容に置き換えられるので、これらの情報を含むプロンプトを事前に定義することが可能です。


カスタム要約プロンプトに含むことができる 4 つのプレースホルダは次のとおりです。

プレースホルダ 概要
$original-query ユーザーのクエリテキスト
$rewritten-query ユーザーのクエリのフォーマットを rewriter モジュールを用いて最適なものに書き換えたもの
$sources ユーザーのクエリ内容に対して適切とされたソース
$conversation ユーザーとエージェントの会話履歴

カスタム要約プロンプト の設定手順

リリースにリンクされていた公式ドキュメントにはこの機能の細かい設定方法などは記載がありませんでした。そのため、本記事では実際にカスタム要約プロンプトをどうやって設定するかに焦点を当てて、 Dialogflow CX を用いて実装してみます。

具体的には、Google Cloud と Cloud Ace の概要を簡単にまとめたドキュメントが紐づけられたデータストア エージェントを作成し、カスタム要約プロンプトを設定します。
また、その上でエージェントからのレスポンスがどう変動するのかを確認します。

手順の要約:

  1. Google Cloud コンソール上で データストア エージェントを作成する
  2. Dialogflow CX コンソール上で 作成したエージェントのカスタム要約プロンプトを設定する
  3. エージェントからのレスポンスを確認する

実装

【事前準備】 Dialogflow CX のセットアップ

Dialogflow CX を使用するにあたって、下記の点が満たされていることを確認してください。

  • 使用したい Google Cloud プロジェクト が作成されており、課金が有効になっている
  • Dialogflow API が有効である(Dialogflow CX を使用する上で必要)
  • Vertex AI Search and Conversation API が有効である(データストア エージェント を作成する上で必要)
  • Google Cloud CLI が利用できる(Cloud Shell や、Google Cloud CLI がインストールされている環境がある)
  • 使用したいアカウント(ユーザー アカウントやサービス アカウント)が承認されている

※ ここでの細かい作業については、Google Cloud 公式ドキュメントの「Dialogflow CX の設定とクリーンアップ」をご参照ください。

1. データストア エージェントを作成する

Google Cloud コンソール上 で使用したいプロジェクトを開き、Search and Conversation(検索と会話) に移動します。

[Apps(アプリ)] ページが開かれるので、上の [NEW APP(新しいアプリ)] を選択します。

アプリの種類として [Chat(チャット)] を選択します。

エージェントの構成について各項目を設定し、[CONTINUE(続行)] を押します。
(ここでは例として「Helper」という名前のエージェントを作成します)。

エージェントにデータストアを紐づけます
既存のデータストアを選択するか、新しくデータストアを作成した上で選択します。

今回はデモ用に作成したドキュメントが含まれている [Google Cloud and Cloud Ace Brief Document] を選択します。
(データストアの作成自体は本記事の趣旨ではないため、細かい手順は省略します。)

[CREATE(作成)] を押せばデータストア エージェントが作成され、自動的にそのエージェントの [Available data stores(利用可能なデータストア)] ページに移動します。
ここでは、データストア エージェントに紐付けられたデータストアを閲覧したり、紐付けるデータストアを追加できます。また、新たにデータストアを作成し、それを紐付けることも可能です。

2. カスタム要約プロンプトの設定をする

作成したエージェントをカスタマイズするために、Dialogflow CX コンソール に移動します。

まず、前の手順の画面から左上にある [Apps(アプリ)] をクリックして一覧ページへ戻ります。

次に、カスタマイズしたい エージェントの名前(今回の場合 Helper)をクリックします。

すると自動的にページが Dialogflow CX コンソール 上の、エージェントの [Build] タブに移りました。

右上の [Agent settings] をクリックして、エージェントの設定画面に移動します。

[Generative AI] をクリックします。

その中でさらに [Data Store] タブをクリックします。

[Data Store] タブが開かれたので、下の方までスクロールしていくと..

Data store model selection and summarization prompt というセクションが現れます。

ここでようやくカスタム要約プロンプトの設定をすることが可能です。

[Customize summarization prompt] を選択すると、Text prompt と表示されたテキストボックスが現れます。

この中にカスタム要約プロンプトを記載します。

実際にカスタム要約プロンプトを設定し、レスポンスを確認する

カスタム要約プロンプトの活用方法の 1 つとして、生成される要約の形式を指定するというものがあります。

デフォルトの要約プロンプトを使用した際、一般的にユーザークエリで要約の形式を指定しない限り自動的に適切だと判断された形式でレスポンスが返されます。
カスタム要約プロンプト内で箇条書きQ & A 形式などと指定することで、生成される要約の形式を統一させることが可能です。

比較のためにデフォルトの要約プロンプトを使用した状態のエージェントからのレスポンスを確認した後、実際にカスタム要約プロンプトを設定した上でレスポンスも確認します。

カスタム要約プロンプトとしては次の 2 つを試します:

  • 箇条書きの要約を生成するもの
  • Q & A 形式で、回答が 1 文に要約されているもの

デフォルト要約プロンプト

テスト画面へ移動する

左上の矢印を押して [Build] タブ に戻ります。

[Test Agent] をクリックします。

するとテスト画面が開かれるので、下の Talk to agent に質問(クエリ)を入力して、エージェントに投げかけます。

テスト 1:「Google Cloud とは?」

(エージェントのデフォルト言語が英語なので、クエリも英語にしています。)

文章でのレスポンスが返ってきました。

テスト 2: 「Cloud Ace が提供するサービスとは?」

こちらも文章でのレスポンスです。


カスタム要約プロンプト 1:要約を箇条書きで生成させる

カスタム要約プロンプトの設定

カスタム要約プロンプトの設定画面にて、テキストボックスに下記を記載します。

Query: $rewritten-query
Sources: $sources

Given the query, extract relevant information from the sources and summarize the main points as a bulleted list.

(日本語訳:クエリに基づいてソースから適切な情報を抽出し、重要な点を箇条書きで要約してください。)

記述が完了したら [Save] を押します。

テスト画面へ移動する

デフォルトの状態でテストした際の手順と同じなので省略します。

テスト 1:「Google Cloud とは?」

答えが期待通り、箇条書きで返ってきました。

テスト 2: 「Cloud Ace が提供するサービスとは?」

こちらも箇条書きでレスポンスが返ってきました。


カスタム要約プロンプト 2:要約を 1 文の Q & A 形式で生成させる

カスタム要約プロンプトの設定

カスタム要約プロンプトの設定画面にて、テキストボックスに下記を記載します。

Query: $rewritten-query
Sources: $sources

Given the query, extract relevant information from the sources and summarize the main points in one sentence, in a question and answer format.

(日本語訳:クエリに基づいてソースから適切な情報を抽出し、重要な点を 1 文で、質問と回答の形式で要約してください。)

記述が完了したら [Save] を押します。

テスト画面へ移動する

デフォルトの状態でテストした際の手順と同じなので省略します。

テスト 1:「Google Cloud とは?」

期待通り、質問文(Q)と、1 文に要約された回答(A)が返されました。

テスト 2: 「Cloud Ace が提供するサービスとは?」

こちらも同様、質問文と、1 文に要約された回答が返されました。

注意点

  • カスタムのプロンプトを使用することで、生成されるレスポンスが良くも悪くも影響される可能性があります。(参照
  • 実践を行う上で、日本語のソースをデータストアに含んだエージェントではカスタム要約プロンプトを設定しても正常に機能してくれない(レスポンスが生成されない) ケースが何度かありました。
    考えられる原因(筆者の憶測)
    • エージェントのデフォルト言語として日本語がプレビュー段階であること
    • 使用したソースの情報量やフォーマットが不適切だった
    • 日本語でのカスタム要約プロンプトの書き方が英語のものと違う

まとめ

今回は Dialogflow の新機能を紹介させていただきました。

記事の内容をまとめると、以下のとおりです。

  • Dialogflow の データストア エージェントにカスタム要約プロンプトが設定できるようになった。
  • カスタム要約プロンプトとは、LLM に対して要約を要請するためのプロンプトをカスタムで定義したものである。
  • ユースケースの 1 つとして、生成される要約の形式を統一させることができることが確認できた。
  • その結果、エージェントの用途に合わせたレスポンスをユーザーに提供できるようになった。

Discussion