Mengelola pusat informasi

Pusat informasi 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 basis pengetahuan saat mencari respons terhadap ekspresi pengguna akhir. Panduan ini menjelaskan cara membuat dan mengelola basis pengetahuan.

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 menunjukkan cara menggunakan Dialogflow Console, REST API (termasuk command line), atau library klien untuk membuat basis pengetahuan. Untuk menggunakan API, panggil metode create pada jenis KnowledgeBase.

UI Web

Gunakan Konsol Dialogflow untuk membuat pusat informasi:

  1. Buka konsol Dialogflow ES
  2. Select an agent
  3. Klik Pengetahuan di menu sidebar kiri
  4. Klik Buat Basis Pengetahuan
  5. Masukkan nama pusat informasi
  6. Klik Simpan

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID GCP Anda
  • KNOWLEDGE_BASE_DISPLAY_NAME: nama pustaka 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 pustaka pengetahuan baru Anda. Segmen jalur setelah knowledgeBases adalah ID pusat informasi baru Anda. Simpan ID ini untuk permintaan di bawah.

Java

Untuk melakukan autentikasi 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 melakukan autentikasi 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 melakukan autentikasi 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 mengetahui deskripsi semua opsi konten yang didukung. Anda dapat menggunakan dokumen FAQ Cloud Storage untuk contoh ini.

Contoh di bawah menunjukkan cara menggunakan Dialogflow Console, 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:
    1. Buka konsol Dialogflow ES
    2. Select an agent
    3. Klik Pengetahuan di menu sidebar kiri
    4. Klik nama pusat informasi 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 BUAT

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID GCP Anda
  • KNOWLEDGE_BASE_ID: ID pustaka pengetahuan 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 melakukan autentikasi 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 melakukan autentikasi 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 melakukan autentikasi 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))

Membuat 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 mungkin tidak otomatis dimuat ulang. Konten Anda hanya akan diperbarui secara otomatis jika disediakan sebagai URL publik dan Anda telah mencentang opsi Enable Automatic Reload untuk dokumen.

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

Untuk memuat ulang 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 mencantumkan semua dokumen pengetahuan untuk pustaka pengetahuan. Untuk menggunakan API, panggil metode list pada jenis Document.

Menghapus dokumen pengetahuan

Anda dapat menghapus dokumen pengetahuan untuk pusat informasi. 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 didukung:

  • FAQ: Konten dokumen berisi pasangan pertanyaan dan jawaban dalam format HTML atau CSV. Format HTML FAQ standar diuraikan secara akurat, tetapi format yang tidak biasa mungkin gagal diuraikan. CSV harus memiliki pertanyaan di kolom pertama dan jawaban di kolom kedua, tanpa header. Karena format eksplisit ini, format tersebut selalu diuraikan secara akurat.
  • QA Ekstraktif: Dokumen yang teks tidak terstrukturnya diekstrak 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 text/csv text/csv text/csv text/html
QA Ekstraktif text/plain, text/html text/plain, text/html, application/pdf text/plain, text/html, application/pdf T/A

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

Umum:

  • File dari URL publik harus telah di-crawl oleh pengindeksan penelusuran Google, sehingga file tersebut ada di indeks penelusuran. Anda dapat memeriksanya dengan Google Search Console. Perhatikan bahwa pengindeksan tidak akan memperbarui konten Anda. Anda harus memperbarui dokumen pengetahuan secara eksplisit saat konten sumber berubah.
  • File CSV harus menggunakan koma sebagai pemisah.
  • Skor keyakinan belum dikalibrasi antara FAQ dan Artikel Pusat Informasi, jadi jika Anda menggunakan FAQ dan Artikel Pusat Informasi, hasil terbaik mungkin tidak selalu yang tertinggi.
  • Dialogflow menghapus tag HTML dari konten saat membuat respons. Oleh karena itu, sebaiknya hindari tag HTML dan gunakan teks biasa jika memungkinkan.
  • Respons Asisten Google memiliki batas 640 karakter per balon chat, sehingga jawaban yang 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 QA tidak didukung.
  • Jumlah pasangan Pertanyaan & Jawaban dalam satu dokumen tidak boleh melebihi 2.000.
  • Pertanyaan duplikat dengan jawaban yang berbeda tidak didukung.
  • Anda dapat menggunakan dokumen FAQ apa pun; parser FAQ dapat menangani sebagian besar format FAQ.

Khusus untuk UM Ekstraktif:

  • UM Ekstraktif saat ini bersifat eksperimental. Fitur ini didasarkan pada teknologi serupa yang telah dicoba dan diuji di Google dalam produk seperti Penelusuran dan Asisten. Kirimkan masukan Anda tentang seberapa baik fitur ini berfungsi untuk Dialogflow.
  • Konten dengan teks yang padat berfungsi paling baik. Hindari konten dengan banyak paragraf satu kalimat.
  • Tabel dan daftar tidak didukung.
  • Jumlah paragraf dalam satu dokumen tidak boleh melebihi 2.000.
  • Jika artikel panjang (> 1.000 kata), coba bagi menjadi beberapa artikel yang lebih kecil. Jika artikel membahas beberapa masalah, artikel tersebut dapat dibagi menjadi beberapa artikel yang lebih pendek yang membahas setiap masalah. Jika artikel hanya membahas satu masalah, fokuskan artikel pada deskripsi masalah dan buat resolusi masalah tetap 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 mulai cepat 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.