生成ナレッジ アシスタントは、指定したドキュメントの情報に基づいて、エージェントの質問に回答します。ドメイン名を指定することも、データストア エージェントのドキュメントをアップロードしてインデックスに登録することもできます。生成知識アシスタントは、その情報を進行中の会話と利用可能な顧客メタデータと統合し、エージェントにより関連性の高いタイムリーな回答を提供します。
プロアクティブ生成ナレッジ アシストは、エージェントとお客様との会話の進行状況に応じて機能します。現在の会話のコンテキストと回答に基づいて、検索語句を前もって提案します。
データストア エージェントを作成する
プロジェクト オーナーでない場合は、データストア エージェントを作成するために次のロールが必要です。
- Dialogflow API 管理者
- ディスカバリー エンジン管理者
Vertex AI コンソールで Vertex AI Agent Builder 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 コンソールで会話プロファイルを作成すると、生成ナレッジ アシストとプロアクティブ生成ナレッジ アシストの両方が自動的に有効になります。生成型ナレッジ アシストを無効にするには、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
詳細については、Vertex AI Agent Builder Python API のリファレンス ドキュメントをご覧ください。
Vertex AI Agent Builder に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
ユーザー参加者を作成する
ユーザーとエージェントの参加者を会話に追加して、候補を表示します。まず、ユーザー参加者を会話に追加します。
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
詳細については、Vertex AI Agent Builder Python API のリファレンス ドキュメントをご覧ください。
Vertex AI Agent Builder に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
エージェント参加者を作成する
エージェント参加者を会話に追加します。
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
詳細については、Vertex AI Agent Builder Python API のリファレンス ドキュメントをご覧ください。
Vertex AI Agent Builder に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
エージェントからのメッセージを追加して分析する
いずれかの参加者が会話でメッセージを入力するたびに、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
詳細については、Vertex AI Agent Builder Python API のリファレンス ドキュメントをご覧ください。
Vertex AI Agent Builder に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
ユーザーからのメッセージを追加して提案を取得する
エージェントに対して、お客様は「返品払い戻しはいつ受けられますか?」と尋ねます。今回は、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
詳細については、Vertex AI Agent Builder Python API のリファレンス ドキュメントをご覧ください。
Vertex AI Agent Builder に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
会話を完了する
会話が終わったら、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
詳細については、Vertex AI Agent Builder Python API のリファレンス ドキュメントをご覧ください。
Vertex AI Agent Builder に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
シミュレータ
データストア エージェントは Agent Assist シミュレータでテストできます。
上記の例では、データストア エージェントから次のような候補が提示されます。
- 推奨されるクエリ: Refund processing time(払い戻しの処理時間)。
- Gen AI 生成回答: 返品処理が完了すると、7 日以内に払い戻しが行われます。払い戻し額は、返品された商品の全額を対象としますが、送料と手数料は含まれません。
- 関連するナレッジドキュメントのタイトル: 返品と払い戻し - ヘルプ。
ステップ 3: Pub/Sub 候補の通知
候補の通知を受け取るには、会話プロファイルの作成時に notificationConfig
フィールドを設定します。このオプションでは、Pub/Sub を使用し、会話が進行して新しい候補が利用可能になったときに、候補の通知をアプリケーションに送信します。
AnalyzeContent
API を介して統合する場合は、ConversationProfile
で disable_high_latency_features_sync_delivery
構成を有効にして、プロアクティブな生成知識アシストの候補を待たずに AnalyzeContent
API が応答し、Pub/Sub を介して候補を配信するようにできます。
この構成は、Agent Assist コンソールから有効にすることもできます。
会話型分析情報からデータにアクセスする
また、プロアクティブ生成ナレッジ アシスタントによって生成された質問と回答は、会話型分析情報に自動的に入力されます。このデータにアクセスするには、Dialogflow ランタイムの統合を有効にするの手順に沿って操作します。
フィードバックを送信
フィードバックを送信する手順については、Agent Assist にフィードバックを送信するをご覧ください。
エージェントの質問に回答する
エージェントからの質問への回答に関するフィードバックを送信する 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", ] } } } }
メタデータ
ナレッジ ドキュメントにmetadataを構成すると、生成ナレッジ アシストとプロアクティブ生成ナレッジ アシストの両方で、レスポンスとともにドキュメントのメタデータが返されます。
たとえば、メタデータを使用して、ナレッジドキュメントが内部限定公開の記事か外部公開の記事かをマークできます。エージェント アシスタント シミュレーターと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"
}
}
言語サポート
サポートされている言語の全リストをご覧ください。