ナレッジ コネクタは、定義済みのインテントを補完します。ナレッジ ドキュメント(たとえば、よくある質問や記事)を解析して、自動化レスポンス見つけます。ナレッジ コネクタを構成するには、ナレッジ ドキュメントの集合であるナレッジベースを定義します。
ナレッジベースをエージェントに対して有効化すると、すべてのインテント検出リクエストで、そのナレッジベースを使用して自動化レスポンスを見つけることができるようになります。別の方法として、個々のインテント検出リクエストの中でナレッジベースを指定することもできます。
一般的に、ナレッジ コネクタを使用するエージェントは定義済みのインテントも使用します。ナレッジ コネクタは、レスポンスの精度とコントロールの点でインテントを下回ります。複雑なユーザー リクエストを処理するインテントを定義し、ナレッジ コネクタでは単純なリクエストを処理するようにしてください。
サポートされている言語の一覧については、言語のリファレンスのナレッジ コネクタの列をご覧ください。
制限事項
ナレッジ コネクタ機能は、global リージョンでのみ使用できます。
ベータ版の機能を有効にする
ベータ版の機能が有効になっていることを確認するには、次の手順を実行します。
- Dialogflow ES コンソールに移動します。
- エージェントを選択します。
- エージェント名の横にある設定 settings ボタンをクリックします。
- [General] タブが選択されている状態で下にスクロールし、[Beta Features] が有効になっていることを確認します。
- 変更を加えた場合は、[Save] をクリックします。
ナレッジベースとドキュメントを作成する
ナレッジベースの入門の手順に従って、ナレッジベースとドキュメントを作成します。
ナレッジ コネクタの設定
エージェントのナレッジベースを有効または無効にできます。有効なナレッジベースは、ナレッジベースを指定しないすべてのインテント一致リクエストで考慮されます。ナレッジベースを有効または無効にするには、次の手順に従います。
- Dialogflow ES コンソールに移動します。
- エージェントを選択します。
- 左側のサイドバー メニューで [Knowledge] をクリックします。
- リストからナレッジベースを 1 つ以上選択します。
- [Enable] または [Disable] をクリックします。
エンドユーザー表現がインテントとも一致する場合は、ナレッジ検索の精度を指定できます。
- [Adjust Knowledge Results Preference] セクションまで下にスクロールします。
- スライダーを弱い(インテントへの設定)から強い(ナレッジへの設定)に調整します。詳細については、下記のインテント検出のレスポンスをご覧ください。
レスポンスを構成する
デフォルトでは、ナレッジベースは、一致する最適なナレッジ アンサーが入力されたデフォルトのテキスト レスポンスで構成されます。このレスポンスを変更して、高度なレスポンス メッセージを追加できます。ナレッジ レスポンスには、ナレッジベースごとに最大 3 つの回答が含まれる場合があります。これらの回答は、構成済みのレスポンスで参照できます。レスポンスを追加するには、次の手順に従います。
- [Knowledge] ページで、ナレッジベース名をクリックします。
- 下の [Responses] セクションまでスクロールして、必要に応じてレスポンスを追加します。
- 最初のレスポンスを定義するときは、質問と回答を指定する
$Knowledge.Question[1]と$Knowledge.Answer[1]を使用します。 $Knowledge.Questionと$Knowledge.Answerのインデックスは 1 から始まります。レスポンスを追加する際には、このインデックスの数値を増やします。
- 最初のレスポンスを定義するときは、質問と回答を指定する
- 編集し終わったら [Save] をクリックします。
レスポンスを定義するときは、次の点を考慮する必要があります。
- 定義済みのレスポンスの数がナレッジ コネクタ レスポンス一致の数 N より大きい場合でも、返されるレスポンスは N 個だけです。
- 明示的に定義されたインテントとの照合に比べて精度が低い可能性があることから、可能であれば、3 つのレスポンスをユーザーに返すことをおすすめします。
例:

ナレッジベースを使用してインテントを検出する
インテント検出リクエストを作成する際に、考えられるレスポンスのナレッジベースを 1 つ以上指定できます。リクエストでナレッジベースを明示的に指定すると、有効および無効なナレッジベースの設定がオーバーライドされます。
以下のサンプルは、Dialogflow コンソール、REST API(コマンドラインを含む)、またはクライアント ライブラリを使用してインテントを検出する方法を示しています。API を使用するには、Sessions タイプの detectIntent メソッドを呼び出します。
ウェブ UI
Dialogflow シミュレータを使用して、エージェントと対話してナレッジ コネクタのレスポンスを受け取ることが可能です。- 上記の手順に従ってナレッジベースを有効にします。
- 上記の手順に従ってレスポンスを定義します。
- シミュレータで、キーボードから「How do I sign up?」と入力します。
REST
Sessions タイプで detectIntent メソッドを呼び出し、queryParams フィールドにナレッジベースを指定します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: GCP プロジェクト ID
- KNOWLEDGE_BASE_ID: ナレッジベース ID
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/agent/sessions/123456789:detectIntent
リクエストの本文(JSON):
{
"queryInput": {
"text": {
"text": "How do I sign up?",
"languageCode": "en-US"
}
},
"queryParams": {
"knowledgeBaseNames": ["projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID"]
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
...
"queryResult": {
"queryText": "How do I sign up?",
"parameters": {},
"allRequiredParamsPresent": true,
"fulfillmentText": "Sign up for Cloud Storage by turning on the Cloud Storage service in the Google Cloud Platform Console.",
"intent": {
"name": "projects/my-gcp-project/agent/intents/487c7242-a769-408a-a339-47b95e10dac4",
"displayName": "Knowledge.KnowledgeBase.MzkzNTAyMDE3NDQxNDk3MDg4MA"
},
"intentDetectionConfidence": 0.99371547,
"languageCode": "en-us",
"knowledgeAnswers": {
"answers": [
{
"answer": "Sign up for Cloud Storage by turning on the Cloud Storage service in the Google Cloud Platform Console.",
"matchConfidenceLevel": "HIGH",
"matchConfidence": 0.99371547
},
{
"answer": "Certain types of content are not allowed on this service; please refer to the Terms of Services and Platform Policies for details. If you believe a piece of content is in violation of our policies, report it here (select See more products, then Google Cloud Storage and Cloud Bigtable).",
"matchConfidenceLevel": "LOW",
"matchConfidence": 0.0012244871
},
{
"answer": "From the Cloud Storage documentation click \"Send feedback\" near the top right of the page. This will open a feedback form. Your comments will be reviewed by the Cloud Storage team.",
"matchConfidenceLevel": "LOW",
"matchConfidence": 0.0011537358
}
]
}
}
}
Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
インテント検出のレスポンス
Sessions タイプの detectIntent メソッドのレスポンスは、DetectIntentResponse のインスタンスです。レスポンス フィールドのデータがどのように入力されるかについては、複数の要素が影響します。
定義済みのインテントとナレッジベースの両方が一致候補の場合は、各候補の一致信頼度とナレッジ結果優先度(ナレッジ コネクタの設定をご覧ください)を使用して、どの候補を一致として選択するかを決定します。一致として選択されたものが DetectIntentResponse.queryResult フィールドに入力され、その他の一致候補は .DetectIntentResponse.alternativeQueryResults フィールドに入力されます。これらの両方のフィールドに QueryResult メッセージが含まれます。
ナレッジベースが一致候補の場合:
QueryResult.knowledgeAnswersには、一致の信頼度を降順に並べたナレッジ回答候補のリストが入力されます。- ナレッジベースに対してリッチ レスポンスが定義されている場合は、
QueryResult.fulfillmentMessagesにはリッチ レスポンス メッセージが入力されます。
インテント検出リクエストを実行するときに、ナレッジクエリに失敗することも考えられます。このことが起きたときは定義済みのインテントが選択されるので、インテント検出リクエスト全体としては失敗したことにはなりません。ナレッジベースのクエリのエラー情報は、DetectIntentResponse.alternativeQueryResults[i].diagnosticInfo フィールドで確認できます。
ナレッジベースを管理する
ナレッジベースの管理の詳細については、ナレッジベースの管理をご覧ください。