目次
Dialogflow CXでデータストア参照型検索エージェントを作ろうとしていた際の調査記録。
この記事の概要
ざっくりですが、Dialogflow CXでデータストア参照型検索エージェントを作成するために調査した内容をこの記事にまとめました。
記事の最後に、Dialogflow CXより拡張性の高いツールも紹介しているので、ぜひご覧ください。
ファイルの構造をプロンプトで教えて適切に参照して出力できるか?
- やりたいこと
- pageのデータストア設定で、JSON形式のデータを含む
.txt
ファイルを「非構造化ドキュメント」としてアップロードしたデータストアを選択。
しかし、エージェントがそのデータストアを参照して回答する際、.txt
ファイルとして認識されているためか、JSONの1辞書単位で適切に参照・回答されない。
そこで、Dialogflow CX のAgent Settings > Gen AI > Datastore 設定
のカスタムプロンプトを工夫することで、JSONとして正しく認識・参照させられるかを検証したい。
- pageのデータストア設定で、JSON形式のデータを含む
- 結果
- JSONの形式や検索結果の回答フォーマットをプロンプトに追加しても、回答の精度が落ちるだけで、想定した通りにはならなかった。
Dialogflow CX には、対話型エージェントを構造化するのような機能はないのか?
- やりたいこと
- 回答形式の調整などに使うため、複数のエージェントを繋ぐ機能がないか調べる。
- 結果
- 自分で探した限り、一番目ぼしい機能としてWebhookがありましたが、
設定が煩わしく、目当ての機能は見当たりませんでした。 - ちなみに、PageのGeneratorsにプロンプトを入れて動作させる場合、データストアとの接続方法が不明なため、できませんでした。
- 自分で探した限り、一番目ぼしい機能としてWebhookがありましたが、
Datastoreのプロンプトに指示文を書き込んでも無視される場合、どうすればよいか。
- やりたいこと
- エージェントが回答をするうえで「回答にこのリンクが役立つかもしれません」と出力させたくないため、プロンプトにその旨を指示し、いろいろな例やルールを追加してみた。
- 結果
Agent Settings > Gen AI > Datastore > カスタムプロンプト
に、『この回答は出力してはいけない』という旨の例やルールを追加しても強制する効果はなく、最も回答に変化があったのはプロンプトの内容の順番を変更することだった。しかし、最終的に問題を解決することはできなかった。- また、エージェントの学習が関係しているのかは分かりませんが、同じプロンプトでもエージェントを変えると回答結果が大きく変わることが多々ありました。
ユーザーから取得したパラメーターをデータストアの検索に使えないか?
- やりたいこと
- 何らかの方法でユーザーから取得したパラメータをデータストアの検索に利用できないか。
- 思いついた方法の候補
Agent Settings > Gen AI > Datastore > カスタムプロンプト
に直接パラメーターを埋め込む- PageのGeneratorsのプロンプトにパラメーターを埋め込む
- webhookにパラメータを送り外部からデータストア検索を行う
- 結果
- カスタムプロンプトにパラメーターを埋め込んでも、パラメーターとして認識されなかった。
- PageのGeneratorsのプロンプトにパラメーターを埋め込む事は可能だったが、データストアを検索する方法が不明なため断念した。
ちなみに、Agent Settingsのカスタムプロンプトで使用している下記の3つのパラメーターは、PageのGeneratorsのプロンプトに加えても認識されませんでした:$sources、$conversation、$original-query - Webhookにパラメーターを送信し、外部からデータストア検索を行う方法について、データストアを検索するAPIのコードが見つからなかったため、実現できなかった。
dialogflowCXより拡張性が高いツール、Conversational agentsについて。
Conversational agentsとは
- Conversational agentsは、Dialogflow CXの対話型エージェントと互換性のあるツールで、Dialogflow CXでできることのほとんどがConversational agentsでも可能です。
- Conversational agentsのデータストア参照型検索エージェントの作成に便利な機能、Playbookについて。
- Playbookでは、Goal(Playbook内のエージェントに与える目標)と、Instructions(エージェントの基本的な指示や振る舞いのプロンプト)を設定できます。
- また、Playbook内に別のPlaybookを組み込んで構造化できるほか、Tool機能を利用してデータストア検索を行うことも可能です。さらに、Flowなどの要素もPlaybook内に統合できます。
- 上記で挙げた問題のほとんどは、Conversational Agentsを活用することで解決できます。豊富な機能と高い柔軟性を活かし、最適なエージェントを構築することが可能です。
- Conversational Agentsについての詳細な記事は見つかりませんでした。
そのため、実際に触って試しながら、さまざまな機能を確認してみることをおすすめします。
Conversational agents
あわせて読みたい
まとめ
- JSONの形式や検索結果の回答フォーマットをプロンプトに追加しても、回答の精度が落ちるだけで、想定した通りにはならなかった。
- 自分で調査した限り、Dialogflow CX で複数のエージェントを構造化してつなぐ設定は見当たらなかった。
- カスタムプロンプトに『この回答は出力してはいけない』という旨の例やルールを追加しても強制する効果はなく、最も回答に変化があったのはプロンプトの内容の順番を変更することだった。しかし、最終的に問題を解決することはできなかった。
- ユーザーから取得したパラメーターをデータストア検索に利用する方法を試みたが、いくつかの方法で問題が発生し、実現できなかった。
- Dialogflow CXよりも、Conversational Agentsの方が、プレイブックなどの豊富な機能と高い柔軟性を持つことが分かった。