生成ナレッジ アシストは、提供されたドキュメントの情報に基づいて、エージェントの質問に回答します。データストア エージェントがインデックス登録するドメイン名を指定したり、ドキュメントをアップロードしたりできます。生成ナレッジ アシストは、進行中の会話と利用可能な顧客メタデータを使用して情報を合成し、エージェントにタイムリーで関連性の高い回答を提供します。
プロアクティブ生成ナレッジ アシストは、エージェントとお客様の間の進行中の会話を追跡します。現在の会話のコンテキストと回答に基づいて、検索語句の候補を事前に提案します。
データストア エージェントを作成する
プロジェクト オーナーでない場合は、データストア エージェントを作成するために次のロールが必要です。
- Dialogflow API 管理者
- ディスカバリー エンジン管理者
Vertex AI コンソールで AI Applications API を有効にします。
エージェントを作成するには、データストア エージェントの手順に沿って操作します。
人間のエージェントからの質問に回答する
データストア エージェントは、提供されたドキュメントに基づいて、人間のエージェントからの質問に回答できます。
ステップ 1: 会話プロファイルを作成する
Agent Assist コンソールまたは API を使用して、会話プロファイルを作成します。
コンソールから作成する
- 生成ナレッジ アシストの提案タイプを有効にして、前の手順のデータストア エージェントにリンクする必要があります。
- 省略可: [エージェント検索クエリのロギングを無効にする] チェックボックスを使用して、品質向上のために秘匿化済み検索クエリを収集して保存するかどうかを指定します。
- [会話の拡張クエリを有効にする] チェックボックスを使用して、検索クエリの回答を生成する際に、人間のエージェントとユーザー間の会話のコンテキストを考慮するかどうかを指定できます。
API から作成
次の手順では、HumanAgentAssistantConfig オブジェクトを使用して ConversationProfile を作成する方法について説明します。これらの操作は、Agent Assist コンソールでも実行できます。
会話プロファイルを作成するには、ConversationProfile リソースの create メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。- PROJECT_ID: プロジェクト ID
- LOCATION_ID: ロケーションの ID
- AGENT_ID: 前の手順で取得したデータストア エージェント ID
{ "displayName": "my-conversation-profile-display-name", "humanAgentAssistantConfig": { "humanAgentSuggestionConfig": { "featureConfigs": [ { "suggestionFeature": { "type": "KNOWLEDGE_SEARCH" }, "queryConfig": { "dialogflowQuerySource": { "humanAgentSideConfig": { "agent": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID" } } }, "disableAgentQueryLogging": false, "enableConversationAugmentedQuery": false, } ] } } }
Agent Assist コンソールで会話プロファイルを作成すると、Agent Assist は生成ナレッジ アシストとプロアクティブ生成ナレッジ アシストの両方を自動的に有効にします。プロアクティブな生成ナレッジ アシストを無効にするには、API を使用して会話プロファイルを作成する必要があります。
ステップ 2: データストア エージェントを使用する
必要に応じて、SearchKnowledge
API を使用して、データストア エージェントから回答を取得します。次の構成を SearchKnowledge
リクエストの一部として使用することもできます。
querySource
: エージェントがクエリを入力したか、プロアクティブな生成ナレッジ アシストが自動的に提案したかを示すには、このフィールドを設定します。exactSearch
: クエリの書き換えなしで正確な入力クエリを検索するかどうかを示すように、このフィールドを設定します。endUserMetadata
: このフィールドを設定して、生成された回答を改善するエンドユーザーに関する追加情報を含めます。詳しくは、データストア エージェントのパフォーマンスのカスタマイズ ページをご覧ください。searchConfig
: ナレッジ ドキュメントのブーストとフィルタリングをさらに制御するには、このフィールドを設定します。詳細については、データストア エージェントのパフォーマンス検索構成ページをご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID
- LOCATION_ID: ロケーションの ID
- CONVERSATION_PROFILE_ID: 前のステップで取得した会話プロファイル ID
- SESSION_ID: 検索セッション ID 同じセッションの検索履歴は検索結果に影響する可能性があります。セッション ID には次の会話 ID を使用できます。
- CONVERSATION_ID: 検索リクエストがトリガーされた会話(人間のエージェントとエンドユーザー間の会話)
- MESSAGE_ID: 検索リクエストがトリガーされたときの最新の会話メッセージ
JSON リクエストの例を次に示します。
{ "parent": "projects/PROJECT_ID/locations/LOCATION_ID" "query": { "text": "What is the return policy?" } "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID" "sessionId": "SESSION_ID "conversation": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID" "latestMessage": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID "querySource": AGENT_QUERY "exactSearch": false "searchConfig": { "filterSpecs": { "filter": "category: ANY(\"persona_B\")" } } "endUserMetadata": { "deviceOwned": "Google Pixel 7" } }
エージェントの検索がユーザーとの会話中に行われる場合は、必要に応じて conversation
と latest_message
のリソース名を指定します。enable_conversation_augmented_query
オプションを有効にして、エージェントとユーザー間の会話コンテキストを使用してクエリの回答エクスペリエンスを向上させる場合は、この 2 つのフィールドが必要です。
シミュレータ
Agent Assist シミュレータでデータストア エージェントをテストします。
上記の例では、データストア エージェントはユーザーのクエリ What is the refund
processing time?
に次の情報で回答します。
- 生成 AI が生成した回答: 返品の荷物が販売者の返品センターに到着してから、処理が完了するまでに最大で 7 営業日ほどかかることがあります。払い戻しのステータスは、注文ページに記載されている返品の追跡番号で確認できます。
- 関連するナレッジ ドキュメントのタイトル: 返品と払い戻し。
エージェントに Q&A を積極的に提案する
プロアクティブ生成ナレッジ アシストは、進行中の会話を追い、検索語句の候補と回答を前もって提案します。
ステップ 1: 会話プロファイルを作成する
Agent Assist コンソールまたは API を使用して、会話プロファイルを作成します。Agent Assist コンソールを使用して会話プロファイルを作成することをおすすめします。
コンソールから作成する
- [生成型ナレッジ アシスト] の提案タイプを有効にして、前の手順で作成したデータストア エージェントにリンクします。これにより、データストア エージェントは、クエリと回答の候補を事前に提供し、人間のエージェントからの手動検索クエリに回答できます。
- 省略可: [会話のすべての候補クエリを表示] チェックボックスをオンにすると、ナレッジ ドキュメントから回答が見つからなかった場合でも、データストア エージェントがこれらのクエリをすべて表示します。これは、進行中の会話からどのクエリを取得できるかをテストするためのものです。
- 省略可: [事前対応の回答を非同期で読み込む] チェックボックスをオンにすると、クエリ候補のみを取得できます。候補のクエリは、SearchKnowledge API に手動で送信できます。また、Agent Assist コンソールのシミュレータと UI モジュールで自動的に送信することもできます。
API から作成
次の手順では、HumanAgentAssistantConfig オブジェクトを使用して ConversationProfile を作成します。これらの操作は、Agent Assist コンソールでも実行できます。
会話プロファイルを作成するには、ConversationProfile リソースの create メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。- PROJECT_ID: プロジェクト ID
- LOCATION_ID: ロケーションの ID
- AGENT_ID: 前の手順で取得したデータストア エージェント ID
{ "displayName": "my-conversation-profile-display-name", "humanAgentAssistantConfig": { "humanAgentSuggestionConfig": { "featureConfigs": [ { "suggestionFeature": { "type": "KNOWLEDGE_ASSIST" }, "queryConfig": { "dialogflowQuerySource": { "agent": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID" } }, "enableQuerySuggestionWhenNoAnswer": false, } ] } } }
ステップ 2: ランタイムに会話を処理する
プロアクティブな生成ナレッジ アシストは、会話をランタイムで処理し、現在の会話のコンテキストと回答に基づいて検索語句を前もって提案します。
会話を作成する
まず、会話を作成する必要があります。
REST
会話を作成するには、Conversation
リソースの create
メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Cloud プロジェクトの ID
- LOCATION_ID: ロケーション ID
- CONVERSATION_PROFILE_ID: 会話プロファイルの作成時に受け取った ID
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations
リクエストの本文(JSON):
{ "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID", }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID", "lifecycleState": "IN_PROGRESS", "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID", "startTime": "2018-11-05T21:05:45.622Z" }
conversations
の後のパスセグメントには、新しい会話 ID が含まれます。
Python
詳細については、AI アプリケーション Python API のリファレンス ドキュメントをご覧ください。
AI アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
ユーザー参加者を作成する
候補を表示するには、ユーザーとエージェントの参加者を会話に追加します。まず、ユーザーを会話の参加者に追加します。
REST
ユーザー参加者を作成するには、Participant
リソースの create
メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Cloud プロジェクトの ID
- LOCATION_ID: ロケーション ID
- CONVERSATION_ID: 会話 ID
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants
リクエストの本文(JSON):
{ "role": "END_USER", }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID", "role": "END_USER" }
participants
の後のパスセグメントには、新しいユーザー参加者 ID が含まれます。
Python
詳細については、AI アプリケーション Python API のリファレンス ドキュメントをご覧ください。
AI アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
エージェント参加者を作成する
エージェントの参加者を会話に追加します。
REST
エージェントの参加者を作成するには、Participant
リソースの create
メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Cloud プロジェクトの ID
- LOCATION_ID: ロケーション ID
- CONVERSATION_ID: 会話 ID
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants
リクエストの本文(JSON):
{ "role": "HUMAN_AGENT", }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID", "role": "HUMAN_AGENT" }
participants
の後のパスセグメントには、新しい人間のエージェントの参加者 ID が含まれます。
Python
詳細については、AI アプリケーション Python API のリファレンス ドキュメントをご覧ください。
AI アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
エージェントからのメッセージを追加して分析する
いずれかの参加者が会話でメッセージを入力するたびに、API にメッセージを送信して処理する必要があります。データストア エージェントは、人間のエージェントとユーザーのメッセージの分析に基づいて提案を行います。次の例では、人間のエージェントが「ご用件はなんでしょうか?」という質問をして会話を開始します。
レスポンスでは候補がまだ返されていません。
REST
会話に人間のエージェントのメッセージを追加して分析するには、Participant
リソースの analyzeContent
メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID
- CONVERSATION_ID: 会話 ID
- PARTICIPANT_ID: 人間のエージェントの参加者 ID
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent
リクエストの本文(JSON):
{ "textInput": { "text": "How may I help you?", "languageCode": "en-US" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "message": { "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID", "content": "How may I help you?", "languageCode": "en-US", "participant": "PARTICIPANT_ID", "participantRole": "HUMAN_AGENT", "createTime": "2020-02-13T00:01:30.683Z" } }
Python
詳細については、AI アプリケーション Python API のリファレンス ドキュメントをご覧ください。
AI アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
提案のためにユーザーからのメッセージを追加する
エージェントに対して、お客様は「返品の払い戻しはいつ受け取れますか?」と質問します。この場合、API レスポンスには、ナレッジ ドキュメントに基づく推奨クエリと生成 AI の回答が含まれます。
REST
会話のユーザー メッセージを追加して分析するには、Participant
リソースの analyzeContent
メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID
- CONVERSATION_ID: 会話 ID
- PARTICIPANT_ID: エンドユーザーの参加者 ID
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent
リクエストの本文(JSON):
{ "textInput": { "text": "When can I get my return refund?", "languageCode": "en-US" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "message": { "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID", "content": "When can I get my return refund?", "languageCode": "en-US", "participant": "PARTICIPANT_ID", "participantRole": "END_USER", "createTime": "2020-02-13T00:07:35.925Z" }, "humanAgentSuggestionResults": [ { "suggestKnowledgeAssistResponse": { "knowledgeAssistAnswer": { "suggestedQuery": { "queryText": "Refund processing time" }, "suggestedQueryAnswer": { "answerText": "After your return is processed, you receive your refund in 7 days. The refund amount should be for the full value of the items returned, but doesn't include shipping & service fees.", "generativeSource": { "snippets": [ { "title": "Returns & refunds - Help", "uri": "https://example.com/", "text": "When the package with your return arrives at the seller's return center, it may take up to 7 additional business days to process. Check the status of your refund with the return tracking number found on your orders page." } ] }, }, "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID" }, } } ] }
Python
詳細については、AI アプリケーション Python API のリファレンス ドキュメントをご覧ください。
AI アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
会話を完了する
会話が終わったら、API を使用して会話を完了します。
REST
会話を完了するには、conversations
リソースの complete
メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: GCP プロジェクト ID
- CONVERSATION_ID: 会話の作成時に受け取った ID
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID:complete
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID", "lifecycleState": "COMPLETED", "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID", "startTime": "2018-11-05T21:05:45.622Z", "endTime": "2018-11-06T03:50:26.930Z" }
Python
詳細については、AI アプリケーション Python API のリファレンス ドキュメントをご覧ください。
AI アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
シミュレータ
データストア エージェントは、Agent Assist シミュレータでテストできます。
上記の例では、データストア エージェントは次の提案を行います。
- 提案されたクエリ: 払い戻しの処理時間。
- 生成 AI によって生成された回答: 返品手続きが完了すると、7 日以内に払い戻しが行われます。払い戻し額は、返品された商品の全額となりますが、送料とサービス料は含まれません。
- 関連するナレッジ ドキュメントのタイトル: 返品と払い戻し - ヘルプ。
ステップ 3: Pub/Sub 候補の通知
候補の通知を受け取るには、会話プロファイルの作成時に notificationConfig
フィールドを設定します。このオプションでは、Pub/Sub を使用し、会話が進行して新しい候補が利用可能になったときに、候補の通知をアプリケーションに送信します。
AnalyzeContent
API を介して統合している場合は、ConversationProfile
で disable_high_latency_features_sync_delivery
構成を有効にして、AnalyzeContent
API がプロアクティブな生成知識アシストの候補を待たずに応答し、Pub/Sub を介して候補を配信するようにできます。
この構成は、Agent Assist コンソールから有効にすることもできます。
会話型分析情報を使用してデータにアクセスする
また、プロアクティブ生成ナレッジ アシストで生成されたクエリと回答は、会話型分析情報に自動的に入力されます。このデータにアクセスするには、Dialogflow ランタイムの統合を有効にするの手順に沿って操作します。
フィードバックを送信
フィードバックを送信する手順については、エージェント アシストにフィードバックを送信するをご覧ください。
エージェントの質問に回答する
以下は、エージェントの質問への回答に関するフィードバックを送信するための JSON リクエストの例です。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/answerRecords/ANSWER_RECORD_ID", "answerFeedback": { "displayed": true "clicked": true "correctnessLevel": "FULLY_CORRECT" "agentAssistantDetailFeedback": { "knowledgeSearchFeedback": { "answerCopied": true "clickedUris": [ "url_1", "url_2", "url_3", ] } } } }
Q&A をプロアクティブに提案
以下は、プロアクティブな提案に関するフィードバックを送信するための JSON リクエストの例です。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/answerRecords/ANSWER_RECORD_ID", "answerFeedback": { "displayed": true "clicked": true "correctnessLevel": "FULLY_CORRECT" "agentAssistantDetailFeedback": { "knowledgeAssistFeedback": { "answerCopied": true "clickedUris": [ "url_1", "url_2", "url_3", ] } } } }
メタデータ
ナレッジ ドキュメントのメタデータを構成すると、生成ナレッジ アシストとプロアクティブ生成ナレッジ アシストの両方で、レスポンスとともにドキュメントのメタデータが返されます。
たとえば、メタデータを使用して、ナレッジ ドキュメントが社内の非公開記事か、外部の公開記事かをマークできます。エージェント アシスト シミュレータと UI モジュールの両方で、生成ナレッジ アシストとプロアクティブ生成ナレッジ アシストは、特定のキーのドキュメント メタデータ値を自動的に表示します。
gka_source_label
: 値は候補カードに直接表示されます。gka_source_tooltip
: 値がstruct
型の場合、ソースリンクにカーソルを合わせると、値がツールチップに表示されます。
ナレッジ ドキュメントに次のメタデータがある場合、候補カードにはソースとして External Doc
が表示され、ツールチップには doc_visibility: public doc
が追加されます。
メタデータ:
None
{
"title": "Public Sample Doc",
"gka_source_label": "External Doc",
"gka_source_tooltip": {
"doc_visibility": "public doc"
}
}
言語サポート
サポートされている言語の全リストをご覧ください。