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 pusat informasi.

Basis pengetahuan 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 pusat informasi

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 pusat informasi:

  1. Buka Dialogflow ES Console
  2. Select an agent
  3. Klik Pengetahuan di menu sidebar kiri
  4. Klik Buat Basis Pengetahuan
  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 basis pengetahuan 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 pusat informasi baru Anda. Segmen jalur setelah knowledgeBases adalah ID pusat informasi baru Anda. Simpan ID ini untuk permintaan di bawah.

Java

Untuk mengautentikasi 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 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 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

Pusat 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 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 Dialogflow ES Console
    2. Select an agent
    3. Klik Pengetahuan di menu sidebar kiri
    4. Klik nama basis pengetahuan Anda
  2. Klik Dokumen Baru atau Buat dokumen 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 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 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 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 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 pemrosesan di 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 akan otomatis diperbarui. Konten hanya dimuat ulang secara otomatis jika diberikan sebagai URL publik dan Anda telah mencentang opsi Enable Automatic Reload untuk dokumen.

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 Anda.

Membuat daftar dokumen pengetahuan

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

Menghapus dokumen pengetahuan

Anda dapat menghapus dokumen pengetahuan untuk pusat informasi 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 format HTML atau CSV. Format HTML FAQ biasa diuraikan secara akurat, tetapi format yang tidak biasa mungkin 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.
  • UM (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 text/biasa, text/html, application/pdf text/biasa, text/html, application/pdf T/A

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

Umum:

  • File dari URL publik harus sudah di-crawl oleh pengindeks penelusuran Google, agar ada di indeks penelusuran. Anda dapat memeriksanya dengan Google Search Console. Perhatikan bahwa pengindeks tidak selalu memperbarui konten. Anda harus secara eksplisit memperbarui dokumen pengetahuan 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. Jadi, 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 dengan 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) ekstraktif saat ini masih bersifat eksperimental. Hal ini didasarkan pada teknologi serupa yang telah dicoba dan diuji di Google dalam produk seperti Penelusuran dan Asisten. Kirim masukan Anda tentang seberapa baik performanya untuk Dialogflow.
  • Konten dengan teks padat berfungsi paling baik. Hindari konten yang berisi banyak paragraf tunggal.
  • Tabel dan daftar tidak didukung.
  • Jumlah paragraf dalam satu dokumen tidak boleh lebih dari 2.000.
  • Jika sebuah artikel panjang (> 1000 kata), coba bagi artikel tersebut menjadi beberapa artikel yang lebih kecil. Jika artikel mencakup beberapa masalah, artikel tersebut dapat dipecah menjadi artikel lebih pendek yang membahas setiap masalah. Jika artikel hanya membahas satu masalah, fokuskan artikel pada deskripsi masalah dan pertahankan penyelesaian masalah yang singkat.
  • Idealnya, hanya konten inti artikel yang harus diberikan (deskripsi dan penyelesaian masalah). Konten tambahan seperti nama penulis, histori perubahan, link terkait, dan iklan tidak penting.
  • Coba sertakan deskripsi untuk masalah yang dapat dibantu 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 kelas Standard Storage.
  • Tetapkan lokasi bucket ke lokasi yang paling dekat dengan lokasi Anda. Anda 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 Anda:

  • 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.