生成ナレッジ アシスト

生成ナレッジ アシストは、提供されたドキュメントの情報に基づいて、エージェントの質問に回答します。データストア エージェントがインデックス登録するドメイン名を指定したり、ドキュメントをアップロードしたりできます。生成ナレッジ アシストは、進行中の会話と利用可能な顧客メタデータを使用して情報を合成し、エージェントにタイムリーで関連性の高い回答を提供します。

プロアクティブ生成ナレッジ アシストは、エージェントとお客様の間の進行中の会話を追跡します。現在の会話のコンテキストと回答に基づいて、検索語句の候補を事前に提案します。

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

  1. プロジェクト オーナーでない場合は、データストア エージェントを作成するために次のロールが必要です。

    • Dialogflow API 管理者
    • ディスカバリー エンジン管理者
  2. Vertex AI コンソールで AI Applications API を有効にします。

  3. エージェントを作成するには、データストア エージェントの手順に沿って操作します。

人間のエージェントからの質問に回答する

データストア エージェントは、提供されたドキュメントに基づいて、人間のエージェントからの質問に回答できます。

ステップ 1: 会話プロファイルを作成する

Agent Assist コンソールまたは API を使用して、会話プロファイルを作成します。

コンソールから作成する

  1. 生成ナレッジ アシストの提案タイプを有効にして、前の手順のデータストア エージェントにリンクする必要があります。
  2. 省略可: [エージェント検索クエリのロギングを無効にする] チェックボックスを使用して、品質向上のために秘匿化済み検索クエリを収集して保存するかどうかを指定します。
  3. [会話の拡張クエリを有効にする] チェックボックスを使用して、検索クエリの回答を生成する際に、人間のエージェントとユーザー間の会話のコンテキストを考慮するかどうかを指定できます。

API から作成

次の手順では、HumanAgentAssistantConfig オブジェクトを使用して ConversationProfile を作成する方法について説明します。これらの操作は、Agent Assist コンソールでも実行できます。

会話プロファイルを作成するには、ConversationProfile リソースの create メソッドを呼び出します。

リクエストのデータを使用する前に、次のように置き換えます。
  • PROJECT_ID: プロジェクト ID
  • LOCATION_ID: ロケーションの ID
  • AGENT_ID: 前の手順で取得したデータストア エージェント ID
JSON の例を次に示します。
  {
    "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"
  }
}

エージェントの検索がユーザーとの会話中に行われる場合は、必要に応じて conversationlatest_message のリソース名を指定します。enable_conversation_augmented_query オプションを有効にして、エージェントとユーザー間の会話コンテキストを使用してクエリの回答エクスペリエンスを向上させる場合は、この 2 つのフィールドが必要です。

シミュレータ

Agent Assist シミュレータでデータストア エージェントをテストします。

上記の例では、データストア エージェントはユーザーのクエリ What is the refund processing time? に次の情報で回答します。

  • 生成 AI が生成した回答: 返品の荷物が販売者の返品センターに到着してから、処理が完了するまでに最大で 7 営業日ほどかかることがあります。払い戻しのステータスは、注文ページに記載されている返品の追跡番号で確認できます。
  • 関連するナレッジ ドキュメントのタイトル: 返品と払い戻し

エージェントに Q&A を積極的に提案する

プロアクティブ生成ナレッジ アシストは、進行中の会話を追い、検索語句の候補と回答を前もって提案します。

ステップ 1: 会話プロファイルを作成する

Agent Assist コンソールまたは API を使用して、会話プロファイルを作成します。Agent Assist コンソールを使用して会話プロファイルを作成することをおすすめします。

コンソールから作成する

  1. [生成型ナレッジ アシスト] の提案タイプを有効にして、前の手順で作成したデータストア エージェントにリンクします。これにより、データストア エージェントは、クエリと回答の候補を事前に提供し、人間のエージェントからの手動検索クエリに回答できます。
  2. 省略可: [会話のすべての候補クエリを表示] チェックボックスをオンにすると、ナレッジ ドキュメントから回答が見つからなかった場合でも、データストア エージェントがこれらのクエリをすべて表示します。これは、進行中の会話からどのクエリを取得できるかをテストするためのものです。
  3. 省略可: [事前対応の回答を非同期で読み込む] チェックボックスをオンにすると、クエリ候補のみを取得できます。候補のクエリは、SearchKnowledge API に手動で送信できます。また、Agent Assist コンソールのシミュレータと UI モジュールで自動的に送信することもできます。

API から作成

次の手順では、HumanAgentAssistantConfig オブジェクトを使用して ConversationProfile を作成します。これらの操作は、Agent Assist コンソールでも実行できます。

会話プロファイルを作成するには、ConversationProfile リソースの create メソッドを呼び出します。

リクエストのデータを使用する前に、次のように置き換えます。
  • PROJECT_ID: プロジェクト ID
  • LOCATION_ID: ロケーションの ID
  • AGENT_ID: 前の手順で取得したデータストア エージェント ID
JSON の例を次に示します。
  {
    "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 アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

def create_conversation(project_id, conversation_profile_id):
    """Creates a conversation with given values

    Args:
        project_id:  The GCP project linked with the conversation.
        conversation_profile_id: The conversation profile id used to create
        conversation."""

    client = dialogflow.ConversationsClient()
    conversation_profile_client = dialogflow.ConversationProfilesClient()
    project_path = client.common_project_path(project_id)
    conversation_profile_path = conversation_profile_client.conversation_profile_path(
        project_id, conversation_profile_id
    )
    conversation = {"conversation_profile": conversation_profile_path}
    response = client.create_conversation(
        parent=project_path, conversation=conversation
    )

    print("Life Cycle State: {}".format(response.lifecycle_state))
    print("Conversation Profile Name: {}".format(response.conversation_profile))
    print("Name: {}".format(response.name))
    return response

ユーザー参加者を作成する

候補を表示するには、ユーザーとエージェントの参加者を会話に追加します。まず、ユーザーを会話の参加者に追加します。

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 アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

エージェント参加者を作成する

エージェントの参加者を会話に追加します。

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 アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

エージェントからのメッセージを追加して分析する

いずれかの参加者が会話でメッセージを入力するたびに、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 アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

提案のためにユーザーからのメッセージを追加する

エージェントに対して、お客様は「返品の払い戻しはいつ受け取れますか?」と質問します。この場合、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 アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

会話を完了する

会話が終わったら、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 アプリケーションに対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

def complete_conversation(project_id, conversation_id):
    """Completes the specified conversation. Finished conversations are purged from the database after 30 days.

    Args:
        project_id: The GCP project linked with the conversation.
        conversation_id: Id of the conversation."""

    client = dialogflow.ConversationsClient()
    conversation_path = client.conversation_path(project_id, conversation_id)
    conversation = client.complete_conversation(name=conversation_path)
    print("Completed Conversation.")
    print("Life Cycle State: {}".format(conversation.lifecycle_state))
    print("Conversation Profile Name: {}".format(conversation.conversation_profile))
    print("Name: {}".format(conversation.name))
    return conversation

シミュレータ

データストア エージェントは、Agent Assist シミュレータでテストできます。

上記の例では、データストア エージェントは次の提案を行います。

  • 提案されたクエリ: 払い戻しの処理時間
  • 生成 AI によって生成された回答: 返品手続きが完了すると、7 日以内に払い戻しが行われます。払い戻し額は、返品された商品の全額となりますが、送料とサービス料は含まれません。
  • 関連するナレッジ ドキュメントのタイトル: 返品と払い戻し - ヘルプ

ステップ 3: Pub/Sub 候補の通知

候補の通知を受け取るには、会話プロファイルの作成時に notificationConfig フィールドを設定します。このオプションでは、Pub/Sub を使用し、会話が進行して新しい候補が利用可能になったときに、候補の通知をアプリケーションに送信します。

AnalyzeContent API を介して統合している場合は、ConversationProfiledisable_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" } }

言語サポート

サポートされている言語の全リストをご覧ください。