カスタム ナレッジ サジェスチョン モデルをトレーニングする

Agent Assist には、ナレッジ サジェスチョン用の 2 つのモデリング オプション(ベースライン モデル(デフォルト)とカスタムモデル)があります。このガイドでは、データセットを使用してカスタムモデルをトレーニングし、モデルをデプロイしてパフォーマンスをテストするプロセスについて説明します。

概要

Agent Assist には、ナレッジの候補機能が 2 つあります。記事の候補(ドキュメントを提案する)とよくある質問のアシスト(エンドユーザーの質問に対する回答を提案する)です。これらの機能を実装すると、Agent Assist はデフォルトで事前トレーニング済みのベースライン提案モデルを使用します。ベースライン モデルは情報検索テクノロジーを使用するため、明示的なモデル トレーニング ステップを完了する必要はありません。カスタムモデル オプションでは、最先端の NLU(自然言語理解)テクノロジーが使用されます。会話の文字起こしをアップロードし、明示的なモデル トレーニングの手順を完了して、カスタマイズされた NLU モデルを構築する必要があります。平均して、カスタムモデルはベースライン モデルよりも質の高い提案を提供します。

始める前に

このガイドを開始する前に、以下を完了してください。

  1. Google Cloud プロジェクトで Dialog Flow API を有効にします。

ナレッジベースを作成してカスタムモデルをトレーニングする

Agent Assist から提案を取得するには、ナレッジベースを作成し、ドキュメントをナレッジベースにアップロードして、会話プロファイルを構成する必要があります。

次の手順では、記事の提案機能を例として、直接 API 呼び出しを使用してこれらのアクションを実行する方法について説明します。代わりに、Agent Assist コンソールを使用してナレッジベースとそのドキュメントを作成することもできます。

ナレッジベースを作成する

ドキュメントのアップロードを開始する前に、まずこういったドキュメントを配置するナレッジベースを作成する必要があります。ナレッジベースを作成するには、KnowledgeBase タイプの create メソッドを呼び出します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: GCP プロジェクト ID
  • KNOWLEDGE_BASE_DISPLAY_NAME: 目的のナレッジベース名

HTTP メソッドと URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/knowledgeBases

リクエストの本文(JSON):

{
  "displayName": "KNOWLEDGE_BASE_DISPLAY_NAME"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/knowledgeBases/NDA4MTM4NzE2MjMwNDUxMjAwMA",
  "displayName": "KNOWLEDGE_BASE_DISPLAY_NAME"
}

knowledgeBases の後のパスセグメントには、新しいナレッジベース ID が含まれます。

Python

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

def create_knowledge_base(project_id, display_name):
    """Creates a Knowledge base.

    Args:
        project_id: The GCP project linked with the agent.
        display_name: The display name of the Knowledge base."""
    from google.cloud import dialogflow_v2beta1 as dialogflow

    client = dialogflow.KnowledgeBasesClient()
    project_path = client.common_project_path(project_id)

    knowledge_base = dialogflow.KnowledgeBase(display_name=display_name)

    response = client.create_knowledge_base(
        parent=project_path, knowledge_base=knowledge_base
    )

    print("Knowledge Base created:\n")
    print("Display Name: {}\n".format(response.display_name))
    print("Name: {}\n".format(response.name))

ナレッジ ドキュメントを作成する

ナレッジベースにドキュメントを追加できるようになりました。ナレッジベースでドキュメントを作成するには、Document タイプの create メソッドを呼び出しますKnowledgeTypeARTICLE_SUGGESTION に設定します。この例では、一般公開されている Cloud Storage バケットにアップロードされた返品注文情報を含む HTML ファイルを使用します。独自のシステムで記事の候補を設定する場合、ドキュメントは次のいずれかの形式にする必要があります。ドキュメントのベスト プラクティスについて詳しくは、ナレッジ ドキュメントのドキュメントをご覧ください。

ナレッジ ドキュメントの形式:

  • Cloud Storage バケットに保存されているファイル。パスは API の呼び出し時に指定できます。
  • ドキュメントのテキスト コンテンツで、API リクエストで送信できます。
  • 公開 URL。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: GCP プロジェクト ID
  • KNOWLEDGE_BASE_ID: 前回のリクエストから返されたナレッジベース ID
  • DOCUMENT_DISPLAY_NAME: 目的のナレッジ ドキュメント名

HTTP メソッドと URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents

リクエストの本文(JSON):

{
  "displayName": "DOCUMENT_DISPLAY_NAME",
  "mimeType": "text/html",
  "knowledgeTypes": "ARTICLE_SUGGESTION",
  "contentUri": "gs://agent-assist-public-examples/public_article_suggestion_example_returns.html"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/operations/ks-add_document-MzA5NTY2MTc5Mzg2Mzc5NDY4OA"
}

レスポンスは長時間実行オペレーションです。ポーリングして完了を確認できます。

Python

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

def create_document(
    project_id, knowledge_base_id, display_name, mime_type, knowledge_type, content_uri
):
    """Creates a Document.

    Args:
        project_id: The GCP project linked with the agent.
        knowledge_base_id: Id of the Knowledge base.
        display_name: The display name of the Document.
        mime_type: The mime_type of the Document. e.g. text/csv, text/html,
            text/plain, text/pdf etc.
        knowledge_type: The Knowledge type of the Document. e.g. FAQ,
            EXTRACTIVE_QA.
        content_uri: Uri of the document, e.g. gs://path/mydoc.csv,
            http://mypage.com/faq.html."""
    from google.cloud import dialogflow_v2beta1 as dialogflow

    client = dialogflow.DocumentsClient()
    knowledge_base_path = dialogflow.KnowledgeBasesClient.knowledge_base_path(
        project_id, knowledge_base_id
    )

    document = dialogflow.Document(
        display_name=display_name, mime_type=mime_type, content_uri=content_uri
    )

    document.knowledge_types.append(
        getattr(dialogflow.Document.KnowledgeType, knowledge_type)
    )

    response = client.create_document(parent=knowledge_base_path, document=document)
    print("Waiting for results...")
    document = response.result(timeout=120)
    print("Created Document:")
    print(" - Display Name: {}".format(document.display_name))
    print(" - Knowledge ID: {}".format(document.name))
    print(" - MIME Type: {}".format(document.mime_type))
    print(" - Knowledge Types:")
    for knowledge_type in document.knowledge_types:
        print("    - {}".format(KNOWLEDGE_TYPES[knowledge_type]))
    print(" - Source: {}\n".format(document.content_uri))

新しいカスタムモデルを作成してデプロイする

  1. Agent Assist UI に移動し、ページの左端の余白にある [モデル] メニュー オプションをクリックします。

  2. [モデル] メニューには、すべてのモデルが表示されます。新しいモデルを作成するには、右上の [+ 新規作成] ボタンをクリックします。

  3. [モデルタイプ] で [記事の候補] を選択します。[名前] フィールドに、新しいモデルの一意の名前を入力します。最後に、モデルのトレーニングに使用するナレッジベースの名前を選択します。このフィールドをクリックすると、作成済みのすべてのデータセットのリストを含むメニューが表示されます。

  4. ナレッジ候補モデルは、スマート リプライ モデルと同じように、会話データセットを使用してトレーニングされます。スマート リプライ機能のように単語の候補をエージェントに表示するのではなく、ナレッジ候補モデルは記事やよくある質問の回答を表示します。

    モデルのトレーニングに使用する会話データセットを必要なだけ選択します。[作成] をクリックして、新しいモデルを作成します。

  5. 新しいモデルが [モデル] ページのモデルのリストに表示されます。新しいモデルのステータスは、モデルがトレーニングされるまで [保留中]、[作成中] の順に表示されます。トレーニングには、コンピューティング リソースに応じて 1 日以上かかります。トレーニングしたモデルをデプロイするには、ページの右端にあるモデルに関連付けられた縦に 3 つ並んだ点のアイコンをクリックし、[デプロイ] をクリックします。

Agent Assist シミュレータを使用してカスタム ナレッジ アシスト モデルをテストする

Agent Assist シミュレータを使用すると、モデルを実装する前にモデルのパフォーマンスをプレビューできます。シミュレータは、Agent Assist のどの機能でも使用できます。次の手順では、シミュレータを使用してカスタム ナレッジ アシスト モデルをテストするプロセスについて説明します。

  1. シミュレータを実行する前に、1 つ以上の会話プロファイルを作成する必要があります。会話プロファイルは、トレーニング済みでデプロイ済みのナレッジ アシスト モデルを表します。スマート リプライ モデルとは異なり、ナレッジ アシスト モデルには関連付けられた許可リストがありません。

    会話プロファイルを作成するには、ページの左側にあるメインメニューで [会話プロファイル] をクリックします。

  2. 既存の会話プロファイルの一覧が表示されます。既存のプロファイルを使用する場合は、後でステップ 4 に進むことができます。該当するプロファイルがない場合は、ページの右側にある [+ 新規作成] ボタンをクリックして、新しい会話プロファイルを作成します。

  3. 表示されたメニューの [表示名] ボックスに、会話プロファイルの一意の名前を入力します。[提案タイプ] ボックスで、[記事] または [よくある質問] のいずれかを選択します(トレーニングしたモデルのタイプによって異なります)。また、信頼度のしきい値最大候補数の値を入力するよう求められます。候補の最大数は、返される回答記事またはよくある質問の回答の数です。信頼度のしきい値とは、エージェントのリクエストに関連する各回答の信頼度を表します。信頼値が高いほど、関連するレスポンスが返される可能性は高くなりますが、高いしきい値を満たす利用可能なオプションがない場合、返されるレスポンスの数が減ったり少なくなったりします。精度を高めてカバレッジを低くするには、信頼しきい値を 0.8 にすることをおすすめします。精度を低くしてカバレッジを高くするには、信頼しきい値を 0.2 にすることをおすすめします。

    取得方法(インラインまたは Pub/Sub)、感情分析を有効にするかどうか、Dialogflow 仮想エージェントを使用するかどうかを選択します。[作成] ボタンをクリックして、会話プロファイルを作成します。

  4. 会話プロファイルが、メインの [会話プロファイル] ページのプロファイル リストに表示されます。シミュレータを使用するには、テストする会話プロファイル名の右端にあるその他アイコン(縦に並んだ 3 つのドット)をクリックし、[Use simulator] をクリックします。

  5. 表示されたウィンドウには、お客様とエージェントの両方の回答を入力するボックスがあります。これらのボックスを使用して、会話プロファイルの構成時に選択した Agent Assist 機能をテストできます。テストする機能の組み合わせを変更するには、右上の [オプション] ボタンをクリックし、表示された [ビューを構成] メニューから機能を選択します。

  6. 右上にある [完了] ボタンをクリックして、メインの会話プロファイル ページに戻ります。