Mengelola pusat informasi

Basis pengetahuan mewakili kumpulan dokumen pengetahuan yang Anda berikan ke Dialogflow. Dokumen pengetahuan Anda berisi informasi yang mungkin berguna selama percakapan dengan pengguna akhir. Beberapa fitur Dialogflow menggunakan pusat informasi saat mencari respons terhadap ekspresi pengguna akhir. Panduan ini menjelaskan cara membuat dan mengelola basis pengetahuan.

Basis informasi diterapkan di tingkat agen.

Sebelum memulai

Anda harus melakukan hal berikut sebelum membaca panduan ini:

  1. Baca Dasar-dasar Dialogflow.
  2. Lakukan langkah-langkah penyiapan.

Membuat basis pengetahuan

Contoh di bawah ini menunjukkan cara menggunakan Konsol Dialogflow, REST API (termasuk command line), atau library klien untuk membuat pusat informasi. Untuk menggunakan API, panggil metode create pada jenis KnowledgeBase.

UI Web

Gunakan Konsol Dialogflow untuk membuat basis pengetahuan:

  1. Buka Konsol Dialogflow ES
  2. Select an agent
  3. Klik Pengetahuan di menu sidebar kiri
  4. Klik Create Knowledge Base
  5. Masukkan nama basis pengetahuan
  6. Klik Save

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID GCP Anda
  • KNOWLEDGE_BASE_DISPLAY_NAME: nama pusat informasi yang diinginkan

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "displayName": "KNOWLEDGE_BASE_DISPLAY_NAME"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

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

Catat nilai kolom name. Ini adalah nama basis pengetahuan baru Anda. Segmen jalur setelah knowledgeBases adalah ID pusat informasi baru Anda. Simpan ID ini untuk permintaan di bawah.

Java

Untuk mengautentikasi ke Dialogflow, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


import com.google.api.gax.rpc.ApiException;
import com.google.cloud.dialogflow.v2.KnowledgeBase;
import com.google.cloud.dialogflow.v2.KnowledgeBasesClient;
import com.google.cloud.dialogflow.v2.LocationName;
import java.io.IOException;

public class KnowledgeBaseManagement {

  public static void main(String[] args) throws ApiException, IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my-project-id";
    String location = "my-location";

    // Set display name of the new knowledge base
    String knowledgeBaseDisplayName = "my-knowledge-base-display-name";

    // Create a knowledge base
    createKnowledgeBase(projectId, location, knowledgeBaseDisplayName);
  }

  // Create a Knowledge base
  public static void createKnowledgeBase(String projectId, String location, String displayName)
      throws ApiException, IOException {
    // Instantiates a client
    try (KnowledgeBasesClient knowledgeBasesClient = KnowledgeBasesClient.create()) {
      KnowledgeBase targetKnowledgeBase =
          KnowledgeBase.newBuilder().setDisplayName(displayName).build();
      LocationName parent = LocationName.of(projectId, location);
      KnowledgeBase createdKnowledgeBase =
          knowledgeBasesClient.createKnowledgeBase(parent, targetKnowledgeBase);
      System.out.println("====================");
      System.out.format("Knowledgebase created:\n");
      System.out.format("Display Name: %s\n", createdKnowledgeBase.getDisplayName());
      System.out.format("Name: %s\n", createdKnowledgeBase.getName());
    }
  }
}

Node.js

Untuk mengautentikasi ke Dialogflow, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

// Imports the Dialogflow client library
const dialogflow = require('@google-cloud/dialogflow').v2beta1;

// Instantiate a DialogFlow client.
const client = new dialogflow.KnowledgeBasesClient();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = 'ID of GCP project associated with your Dialogflow agent';
// const displayName = `your knowledge base display name, e.g. myKnowledgeBase`;

const formattedParent = 'projects/' + projectId;
const knowledgeBase = {
  displayName: displayName,
};
const request = {
  parent: formattedParent,
  knowledgeBase: knowledgeBase,
};

const [result] = await client.createKnowledgeBase(request);
console.log(`Name: ${result.name}`);
console.log(`displayName: ${result.displayName}`);

Python

Untuk mengautentikasi ke Dialogflow, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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))

Menambahkan dokumen ke pusat informasi

Basis pengetahuan baru Anda saat ini tidak memiliki dokumen, jadi Anda harus menambahkan dokumen ke dalamnya. Lihat Konten yang didukung di bawah untuk deskripsi semua opsi konten yang didukung. Anda dapat menggunakan dokumen FAQ Cloud Storage untuk contoh ini.

Contoh di bawah ini menunjukkan cara menggunakan Konsol Dialogflow, REST API (termasuk command line), atau library klien untuk membuat dokumen pengetahuan. Untuk menggunakan API, panggil metode create pada jenis Document.

UI Web

Gunakan Konsol Dialogflow untuk membuat dokumen pengetahuan:

  1. Jika Anda tidak melanjutkan dari langkah-langkah di atas, buka setelan pusat informasi Anda:
    1. Buka Konsol Dialogflow ES
    2. Select an agent
    3. Klik Pengetahuan di menu sidebar kiri
    4. Klik nama basis pengetahuan Anda
  2. Klik Dokumen Baru atau Buat yang pertama
  3. Masukkan nama dokumen
  4. Pilih text/html untuk Mime Type
  5. Pilih FAQ untuk Jenis Pengetahuan
  6. Pilih URL untuk Sumber Data
  7. Masukkan https://cloud.google.com/storage/docs/faq di kolom URL
  8. Klik CREATE

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID GCP Anda
  • KNOWLEDGE_BASE_ID: ID pusat informasi Anda yang ditampilkan dari permintaan sebelumnya
  • DOCUMENT_DISPLAY_NAME: nama dokumen pengetahuan yang diinginkan

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "displayName": "DOCUMENT_DISPLAY_NAME",
  "mimeType": "text/html",
  "knowledgeTypes": "FAQ",
  "contentUri": "https://cloud.google.com/storage/docs/faq"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

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

Segmen jalur setelah operations adalah ID operasi Anda.

Java

Untuk mengautentikasi ke Dialogflow, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.api.gax.rpc.ApiException;
import com.google.cloud.dialogflow.v2.CreateDocumentRequest;
import com.google.cloud.dialogflow.v2.Document;
import com.google.cloud.dialogflow.v2.Document.KnowledgeType;
import com.google.cloud.dialogflow.v2.DocumentsClient;
import com.google.cloud.dialogflow.v2.KnowledgeOperationMetadata;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class DocumentManagement {

  public static void createDocument(
      String knowledgeBaseName,
      String displayName,
      String mimeType,
      String knowledgeType,
      String contentUri)
      throws IOException, ApiException, InterruptedException, ExecutionException, TimeoutException {
    // Instantiates a client
    try (DocumentsClient documentsClient = DocumentsClient.create()) {
      Document document =
          Document.newBuilder()
              .setDisplayName(displayName)
              .setContentUri(contentUri)
              .setMimeType(mimeType)
              .addKnowledgeTypes(KnowledgeType.valueOf(knowledgeType))
              .build();
      CreateDocumentRequest createDocumentRequest =
          CreateDocumentRequest.newBuilder()
              .setDocument(document)
              .setParent(knowledgeBaseName)
              .build();
      OperationFuture<Document, KnowledgeOperationMetadata> response =
          documentsClient.createDocumentAsync(createDocumentRequest);
      Document createdDocument = response.get(300, TimeUnit.SECONDS);
      System.out.format("Created Document:\n");
      System.out.format(" - Display Name: %s\n", createdDocument.getDisplayName());
      System.out.format(" - Document Name: %s\n", createdDocument.getName());
      System.out.format(" - MIME Type: %s\n", createdDocument.getMimeType());
      System.out.format(" - Knowledge Types:\n");
      for (KnowledgeType knowledgeTypeId : document.getKnowledgeTypesList()) {
        System.out.format("  - %s \n", knowledgeTypeId.getValueDescriptor());
      }
      System.out.format(" - Source: %s \n", document.getContentUri());
    }
  }
}

Node.js

Untuk mengautentikasi ke Dialogflow, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

//   // Imports the Dialogflow client library
//   const dialogflow = require('@google-cloud/dialogflow').v2beta1;

//   // Instantiate a DialogFlow Documents client.
//   const client = new dialogflow.DocumentsClient({
//     projectId: projectId,
//   });

//   /**
//    * TODO(developer): Uncomment the following lines before running the sample.
//    */
//   // const projectId = 'ID of GCP project associated with your Dialogflow agent';
//   // const knowledgeBaseFullName = `the full path of your knowledge base, e.g my-Gcloud-project/myKnowledgeBase`;
//   // const documentPath = `path of the document you'd like to add, e.g. https://dialogflow.com/docs/knowledge-connectors`;
//   // const documentName = `displayed name of your document in knowledge base, e.g. myDoc`;
//   // const knowledgeTypes = `The Knowledge type of the Document. e.g. FAQ`;
//   // const mimeType = `The mime_type of the Document. e.g. text/csv, text/html,text/plain, text/pdf etc.`;

//   const request = {
//     parent: knowledgeBaseFullName,
//     document: {
//       knowledgeTypes: [knowledgeTypes],
//       displayName: documentName,
//       contentUri: documentPath,
//       source: 'contentUri',
//       mimeType: mimeType,
//     },
//   };

//   const [operation] = await client.createDocument(request);
//   const [response] = await operation.promise();

//   console.log('Document created');
//   console.log(`Content URI...${response.contentUri}`);
//   console.log(`displayName...${response.displayName}`);
//   console.log(`mimeType...${response.mimeType}`);
//   console.log(`name...${response.name}`);
//   console.log(`source...${response.source}`);

Python

Untuk mengautentikasi ke Dialogflow, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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))

Pembuatan dokumen adalah operasi yang berjalan lama, sehingga mungkin perlu waktu yang lama untuk menyelesaikannya. Anda dapat memeriksa status operasi ini untuk melihat apakah operasi telah selesai. Setelah selesai, operasi akan berisi ID dokumen yang baru dibuat. Simpan ID ini untuk diproses pada masa mendatang. Untuk mengetahui informasi selengkapnya, silakan melihat Operasi yang berjalan lama.

Mengelola dokumen pengetahuan

Memperbarui konten dokumen pengetahuan

Jika Anda memperbarui konten yang dirujuk oleh dokumen pengetahuan, dokumen pengetahuan Anda mungkin tidak otomatis diperbarui. Konten hanya dimuat ulang secara otomatis jika diberikan sebagai URL publik dan Anda telah mencentang opsi Aktifkan Muat Ulang Otomatis untuk dokumen tersebut.

Untuk memperbarui konten dokumen URL publik atau Cloud Storage secara manual, panggil metode reload pada jenis Document.

Untuk memperbarui konten mentah yang diupload secara manual, gunakan metode delete dan create pada jenis Document untuk membuat ulang dokumen.

Membuat daftar dokumen pengetahuan

Anda dapat membuat daftar semua dokumen pengetahuan untuk basis pengetahuan Anda. Untuk menggunakan API, panggil metode list pada jenis Document.

Menghapus dokumen pengetahuan

Anda dapat menghapus dokumen pengetahuan untuk basis pengetahuan Anda. Untuk menggunakan API, panggil metode delete pada jenis Document. Jika tidak memiliki ID dokumen, Anda dapat mencantumkan dokumen seperti yang dijelaskan di atas.

Konten yang didukung

Jenis dokumen pengetahuan berikut ini didukung:

  • FAQ: Konten dokumen berisi pasangan pertanyaan dan jawaban dalam bentuk HTML atau CSV. Format HTML FAQ umum diuraikan secara akurat, tetapi format yang tidak biasa dapat gagal diurai. CSV harus memiliki pertanyaan di kolom pertama dan jawaban di kolom kedua, tanpa header. Karena format eksplisit ini, mereka selalu diurai secara akurat.
  • Uji Mutu Ekstraktif: Dokumen yang mengekstrak teks tidak terstruktur dan digunakan untuk menjawab pertanyaan.

Tabel berikut menunjukkan jenis MIME yang didukung berdasarkan Jenis Pengetahuan dan Sumber.

Jenis Pengetahuan \ Sumber File yang diupload (Document.content) (TIDAK direkomendasikan) File yang diupload (Document.raw_content) (direkomendasikan) File dari Cloud Storage (Document.contentUri) File dari URL publik (Document.contentUri)
FAQ teks/csv teks/csv teks/csv text/html
UM (Uji Mutu) Ekstraktif teks/biasa, teks/html teks/biasa, teks/html, aplikasi/pdf teks/biasa, teks/html, aplikasi/pdf T/A

Konten dokumen memiliki masalah umum, batasan, dan praktik terbaik berikut:

Umum:

  • File dari URL publik harus di-crawl oleh pengindeks penelusuran Google, agar ada di indeks penelusuran. Anda dapat memeriksanya dengan Google Search Console. Perhatikan bahwa pengindeks tidak menjaga konten Anda tetap segar. Anda harus memperbarui dokumen pengetahuan secara eksplisit saat konten sumber berubah.
  • File CSV harus menggunakan koma sebagai pembatas.
  • Skor keyakinan belum dikalibrasi antara FAQ dan Artikel Pusat Pengetahuan, jadi jika Anda menggunakan FAQ dan Artikel Pusat Pengetahuan, hasil terbaik mungkin tidak selalu yang tertinggi.
  • Dialogflow menghapus tag HTML dari konten saat membuat respons. Karena itu, sebaiknya hindari tag HTML dan gunakan teks biasa jika memungkinkan.
  • Respons Asisten Google memiliki batas 640 karakter per balon chat, sehingga jawaban panjang akan terpotong saat berintegrasi dengan Asisten Google.
  • Ukuran dokumen maksimum adalah 50 MB.
  • Saat menggunakan file Cloud Storage, Anda harus menggunakan URI publik atau URI pribadi yang dapat diakses oleh akun pengguna atau akun layanan Anda.

Khusus untuk FAQ:

  • CSV harus memiliki pertanyaan di kolom pertama dan jawaban di kolom kedua, tanpa header.
  • Gunakan CSV jika memungkinkan, karena CSV diuraikan paling akurat.
  • Konten HTML publik dengan satu pasangan UM (Uji Mutu) tidak didukung.
  • Jumlah pasangan UM (Uji Mutu) dalam satu dokumen tidak boleh lebih dari 2.000.
  • Pertanyaan duplikat dengan jawaban yang berbeda tidak didukung.
  • Anda dapat menggunakan dokumen FAQ apa pun; Parser FAQ mampu menangani sebagian besar format FAQ.

Khusus untuk UM (Uji Mutu) Ekstraktif:

  • UM (Uji Mutu) ekstraksi saat ini bersifat eksperimental. Hal ini didasarkan pada teknologi serupa yang telah teruji dan diuji di Google pada produk seperti Penelusuran dan Asisten. Kirim masukan Anda tentang seberapa baik fitur ini berfungsi untuk Dialogflow.
  • Konten dengan teks padat berfungsi paling baik. Hindari konten yang berisi banyak paragraf kalimat tunggal.
  • Tabel dan daftar tidak didukung.
  • Jumlah paragraf dalam satu dokumen tidak boleh lebih dari 2.000.
  • Jika sebuah artikel panjang (> 1.000 kata), coba bagi artikel menjadi beberapa artikel yang lebih kecil. Jika artikel mencakup beberapa masalah, artikel tersebut dapat dipecah menjadi artikel lebih pendek yang membahas masalah individu. Jika artikel hanya mencakup satu masalah, fokuskan artikel pada deskripsi masalah dan pertahankan penyelesaian masalah yang singkat.
  • Idealnya, hanya konten inti artikel yang harus diberikan (deskripsi masalah dan penyelesaiannya). Konten tambahan seperti nama penulis, histori perubahan, link terkait, dan iklan tidaklah penting.
  • Coba sertakan deskripsi untuk masalah yang dapat dijawab oleh artikel dan/atau contoh kueri yang dapat dijawab oleh artikel ini.

Menggunakan Cloud Storage

Jika konten Anda tidak bersifat publik, menyimpan konten di Cloud Storage adalah opsi yang direkomendasikan. Saat membuat dokumen pengetahuan, Anda memberikan URL untuk objek Cloud Storage.

Membuat bucket dan objek Cloud Storage

Saat membuat bucket Cloud Storage:

  • Pastikan Anda telah memilih project GCP yang digunakan untuk Dialogflow.
  • Pastikan akun pengguna atau akun layanan yang biasanya Anda gunakan untuk mengakses Dialogflow API memiliki izin baca ke objek bucket.
  • Gunakan class Standard Storage.
  • Tetapkan lokasi bucket ke lokasi yang paling dekat dengan lokasi Anda. Anda akan memerlukan ID lokasi (misalnya, us-west1) untuk beberapa panggilan API, jadi catat pilihan Anda.

Ikuti petunjuk panduan memulai Cloud Storage untuk membuat bucket dan mengupload file.

Menyediakan objek Cloud Storage ke dokumen pusat informasi

Untuk menyediakan konten:

  • Buat pusat informasi seperti yang dijelaskan di atas.
  • Buat dokumen pengetahuan seperti yang dijelaskan di atas. Saat memanggil metode create pada jenis Document, tetapkan kolom contentUri ke URL dokumen Cloud Storage Anda. Format URL ini adalah gs://bucket-name/object-name.