全部产品
Search
文档中心

OpenSearch:Lakukan pencarian percakapan berbasis teks

更新时间:Jul 06, 2025

Topik ini menjelaskan API yang digunakan untuk melakukan pencarian percakapan berbasis teks berdasarkan basis pengetahuan. Percakapan multi-putaran didukung. Anda dapat menentukan ID sesi untuk mempertahankan konteks percakapan multi-putaran. Selain itu, Anda dapat memilih LLM yang diinginkan untuk menghasilkan jawaban dan menyesuaikan jawaban yang akan dihasilkan.

Prasyarat

  • Kunci API untuk otentikasi identitas telah diperoleh. Saat memanggil operasi API OpenSearch LLM-Based Conversational Search Edition, Anda harus diautentikasi. Untuk informasi lebih lanjut, lihat Kelola kunci API. LLM adalah singkatan dari model bahasa besar.

  • Titik akhir telah diperoleh. Saat memanggil operasi API OpenSearch LLM-Based Conversational Search Edition, Anda harus menentukan titik akhir. Untuk informasi lebih lanjut, lihat Memperoleh titik akhir.

Informasi operasi

Metode permintaan

Protokol permintaan

Format data permintaan

POST

HTTP

JSON

URL Permintaan

{host}/v3/openapi/apps/{app_group_identity}/actions/knowledge-search
  • {host}: Titik akhir yang digunakan untuk memanggil operasi API. Anda dapat memanggil operasi API melalui Internet atau virtual private cloud (VPC). Untuk informasi lebih lanjut tentang cara memperoleh titik akhir, lihat Memperoleh titik akhir.

  • {app_group_identity}: Nama aplikasi yang ingin Anda akses. Anda dapat masuk ke Konsol OpenSearch LLM-Based Conversational Search Edition dan melihat nama aplikasi instance yang sesuai pada halaman Manajemen Instance.

Parameter permintaan

Parameter header

Parameter

Tipe

Diperlukan

Deskripsi

Contoh

Content-Type

string

Ya

Format data permintaan. Hanya format JSON yang didukung. Atur nilainya menjadi application/json.

application/json

Authorization

string

Ya

Kunci API yang digunakan untuk otentikasi permintaan. Nilai tersebut harus dimulai dengan Bearer.

Bearer OS-d1**2a

Parameter body

Parameter

Tipe

Diperlukan

Deskripsi

Contoh

question

map

Ya

Pertanyaan input.

{

"text":"user

question",

"type": "TEXT",

"session" : ""

}

question.text

string

Ya

Konten teks dari pertanyaan input.

user question

question.session

string

Tidak

ID sesi percakapan multi-putaran. ID ini digunakan untuk mengidentifikasi konteks percakapan multi-putaran.

  • Jika Anda tidak menentukan parameter ini atau meninggalkannya kosong, fitur percakapan multi-putaran dinonaktifkan.

  • Jika Anda menetapkan parameter ini ke nilai non-null, fitur percakapan multi-putaran diaktifkan. Dalam hal ini, sistem menyimpan percakapan dengan ID sesi yang sama sebagai konteks percakapan multi-putaran.

1725530408586

question.type

string

Tidak

Format pertanyaan input. Contoh: TEXT.

TEXT

options

map

Tidak

Konfigurasi tambahan, seperti pengambilan, model, dan konfigurasi prompt.

options.chat

map

Tidak

Konfigurasi akses LLM.

options.chat.disable

boolean

Tidak

Menentukan apakah akan menonaktifkan akses LLM. Nilai valid:

  • false (default): mengaktifkan akses LLM dan merangkum serta menghasilkan hasil menggunakan LLM.

  • true: menonaktifkan akses LLM.

false

options.chat.stream

boolean

Tidak

Menentukan apakah akan mengaktifkan pengkodean transfer terbagi HTTP. Nilai valid:

  • true (default)

  • false

true

options.chat.model

string

Tidak

LLM yang akan digunakan. Nilai valid:

Singapore

  • opensearch-llama2-13b

  • opensearch-falcon-7b

  • qwen-turbo

  • qwen-plus

  • qwen-max

  • qwen2-72b-instruct

opensearch-llama2-13b

options.chat.enable_deep_search

boolean

Tidak

Menentukan apakah akan mengaktifkan fitur pencarian mendalam. Nilai valid:

  • true: mengaktifkan fitur pencarian mendalam. Dalam hal ini, beberapa putaran inferensi diperlukan untuk mensintesis data dan mengembalikan hasil. Satu percakapan memerlukan waktu dan sumber daya komputasi yang relatif besar.

  • false: menonaktifkan fitur pencarian mendalam.

false

options.chat.model_generation

integer

Tidak

Versi model kustom yang akan digunakan. Secara default, versi paling awal digunakan.

20

options.chat.prompt_template

string

Tidak

Nama template prompt kustom. Secara default, parameter ini dibiarkan kosong. Dalam hal ini, template prompt bawaan digunakan.

user_defined_prompt_name

options.chat.prompt_config

object

Tidak

Konfigurasi template prompt kustom. Tentukan pasangan key-value dalam format berikut:

{
  "String_key": "value",
  "Integer_key" : 1
}
{
  "attitude": "normal",
  "rule" : "detailed",
  "noanswer": "sorry",
  "language": "Chinese",
  "role": false,
  "role_name": "AI assistant",
}

options.chat.prompt_config.attitude

string

Tidak

Nada percakapan. Parameter ini termasuk dalam template prompt bawaan. Nilai valid:

  • normal (default)

  • polite

  • patience

normal

options.chat.prompt_config.rule

string

Tidak

Tingkat detail percakapan. Nilai valid:

  • detailed (default)

  • stepbystep

detailed

options.chat.prompt_config.noanswer

string

Tidak

Informasi yang dikembalikan jika sistem gagal menemukan jawaban atas pertanyaan. Nilai valid:

  • sorry (default)

  • uncertain

sorry

options.chat.prompt_config.language

string

Tidak

Bahasa jawaban. Nilai valid:

  • Chinese (default)

  • English

  • Thai

  • Korean

Chinese

options.chat.prompt_config.role

boolean

Tidak

Menentukan apakah akan mengaktifkan peran kustom untuk menjawab pertanyaan. Jika ya, Anda perlu menentukan peran kustom.

false

options.chat.prompt_config.role_name

string

Tidak

Nama peran kustom. Contoh: AI Assistant.

AI Assistant

options.chat.prompt_config.out_format

string

Tidak

Format jawaban. Nilai valid:

  • text (default)

  • table

  • list

  • markdown

text

options.chat.generate_config.repetition_penalty

float

Tidak

Tingkat pengulangan konten yang dihasilkan oleh model. Semakin besar nilainya, semakin rendah tingkat pengulangan. Nilai 1.0 menunjukkan tidak ada penalti. Tidak ada nilai valid yang ditentukan untuk parameter ini.

1.01

options.chat.generate_config.top_k

integer

Tidak

Ukuran set kandidat dari mana token diambil sampel. Sebagai contoh, jika parameter ini diatur ke 50, maka 50 token dengan probabilitas tertinggi digunakan sebagai set kandidat. Semakin besar nilainya, semakin tinggi tingkat keacakan konten yang dihasilkan. Sebaliknya, semakin kecil nilainya, semakin deterministik konten yang dihasilkan. Nilai default: 0, yang menunjukkan bahwa parameter top_k dinonaktifkan. Dalam hal ini, hanya parameter top_p yang berlaku.

50

options.chat.generate_config.top_p

float

Tidak

Ambang batas probabilitas dalam metode pengambilan sampel inti yang digunakan selama proses pembuatan. Sebagai contoh, jika parameter ini diatur ke 0,8, hanya subset terkecil dari token-token paling mungkin yang jumlah probabilitas kumulatifnya minimal 0,8 yang disimpan sebagai set kandidat. Nilai valid: (0, 1,0). Semakin besar nilainya, semakin tinggi tingkat keacakan konten yang dihasilkan. Sebaliknya, semakin kecil nilainya, semakin deterministik konten yang dihasilkan.

0,5

options.chat.generate_config.temperature

float

Tidak

Tingkat keacakan dan keragaman konten yang dihasilkan. Secara spesifik, nilai temperature menentukan seberapa banyak distribusi probabilitas untuk setiap kata kandidat diratakan selama pembuatan teks. Nilai temperature yang lebih besar mengurangi puncak distribusi probabilitas, memungkinkan pemilihan kata-kata dengan probabilitas rendah dan menghasilkan konten yang lebih beragam. Sebaliknya, nilai temperature yang lebih kecil meningkatkan puncak distribusi probabilitas, membuat kata-kata dengan probabilitas tinggi lebih mungkin dipilih dan menghasilkan konten yang lebih deterministik.

Nilai valid: [0, 2). Kami merekomendasikan agar Anda tidak mengatur parameter ini ke 0 karena tidak memiliki makna.

python version >=1.10.1

java version >= 2.5.1

0,7

options.chat.history_max

integer

Tidak

Jumlah maksimum putaran percakapan berdasarkan hasil yang dikembalikan oleh sistem. Nilai maksimum: 20. Nilai default: 1.

20

options.chat.link

boolean

Tidak

Menentukan apakah akan mengembalikan URL sumber referensi. Secara spesifik, parameter ini menentukan apakah sumber referensi termasuk dalam konten yang dihasilkan oleh model. Nilai valid:

  • true

  • false (default)

Contoh respons jika Anda mengatur parameter ini ke true:

Anda dapat mengubah ukuran disk instance Elastic Compute Service (ECS) secara online atau offline[^1^]. Jika Anda menggunakan metode pengubahan ukuran online, Anda dapat mengubah ukuran disk tanpa perlu me-restart instance. Jika Anda menggunakan metode pengubahan ukuran offline, Anda harus me-restart instance[^1^]. Untuk mengubah ukuran disk, lakukan langkah-langkah berikut: Masuk ke konsol ECS, temukan disk yang ingin Anda ubah ukurannya, klik Ubah Ukuran di kolom Tindakan, dan kemudian pilih metode pengubahan ukuran berdasarkan kebutuhan bisnis Anda[^1^]. Jika Anda perlu mengubah partisi dan sistem file, Anda bisa mendapatkan informasi terkait melalui CLI atau di konsol[^2^]. Setelah disk ECS diubah ukurannya, Anda tidak dapat mengurangi kapasitasnya. Kami merekomendasikan agar Anda merencanakan kapasitas dengan wajar[^3^].

[^Nomor^] menunjukkan nomor urut dokumen yang diambil dalam referensi hasil yang dikembalikan. Sebagai contoh, [^1^] menunjukkan dokumen pertama dalam referensi.

false

options.chat.rich_text_strategy

string

Tidak

Metode pemrosesan teks kaya. Jika parameter ini tidak ada atau dibiarkan kosong, teks kaya tidak diaktifkan, dan metode pemrosesan default digunakan.

  • inside_response: Tag teks kaya dalam jawaban langsung dipulihkan ke teks asli dalam format Markdown. Perhatikan bahwa tabel dimasukkan langsung ke dalam file Markdown dalam format HTML.

  • extend_response: Konten aktual dari setiap tag teks kaya dalam jawaban dikembalikan oleh rich_text_ref. Gambar dikembalikan sebagai URL, tabel dikembalikan dalam format HTML, dan kode dikembalikan dalam format teks.

inside_response

options.chat.agent

map

Tidak

Menentukan apakah akan mengaktifkan fitur alat Retrieval-Augmented Generation (RAG). Jika fitur diaktifkan, model menentukan apakah akan menggunakan alat RAG berdasarkan konten yang ada. Fitur ini didukung oleh LLM berikut:

  • qwen-plus

  • qwen-max

  • qwen2-72b-instruct

options.chat.agent.tools

list of string

Tidak

Nama alat RAG yang akan digunakan. Alat berikut tersedia:

  • knowledge_search: pengambilan basis pengetahuan

["knowledge_search"]

options.retrieve

map

Tidak

Konfigurasi tambahan, seperti pengambilan, model, dan konfigurasi prompt.

options.retrieve.web_search.enable

boolean

Tidak

Menentukan apakah akan mengaktifkan fitur pencarian Internet. Nilai valid:

  • true: mengaktifkan fitur pencarian Internet. Dalam hal ini, hasilnya dikembalikan berdasarkan data di seluruh Internet. Satu percakapan memerlukan waktu dan sumber daya komputasi yang relatif besar.

  • false: menonaktifkan fitur pencarian Internet.

false

doc

map

Tidak

Konfigurasi pengambilan.

options.retrieve.doc.disable

boolean

Tidak

Menentukan apakah akan menonaktifkan pengambilan dokumen. Nilai valid:

  • false (default)

  • true

false

options.retrieve.doc.filter

string

Tidak

Filter yang digunakan untuk menyaring dokumen dalam basis pengetahuan berdasarkan bidang tertentu selama pengambilan dokumen. Secara default, parameter ini dibiarkan kosong. Untuk informasi lebih lanjut, lihat filter.

Bidang berikut didukung:

  • table: sebuah tabel.

  • raw_pk: kunci utama dokumen.

  • category: kategori dokumen.

  • score: skor dokumen.

  • timestamp: cap waktu dokumen.

Contoh:

"filter" : "raw_pk=\"123\""   # Mendapatkan data dari dokumen-dokumen yang kunci utamanya adalah 123.
"filter" : "category=\"value1\""   # Mendapatkan data dari dokumen-dokumen yang kategorinya adalah value1.
"filter" : "category=\"value1\" OR category=\"value2\"" # Mendapatkan data dari dokumen-dokumen yang kategorinya adalah value1 atau value2.
"filter" : "score>1.0"   # Mendapatkan data dari dokumen-dokumen yang skornya lebih besar dari 1.0.
"filter" : "timestamp>1356969600"   # Mendapatkan data dari dokumen-dokumen yang cap waktunya lebih besar dari 1356969600.

category=\"value1\"

options.retrieve.doc.sf

float

Tidak

Ambang batas untuk menentukan relevansi vektor untuk pengambilan dokumen.

  • Jika model vektor jarang dinonaktifkan, nilai parameter berkisar dari 0 hingga 2,0 dan nilai defaultnya adalah 1,3. Semakin kecil nilainya, semakin tinggi relevansi dokumen tetapi semakin sedikit dokumen yang diambil. Sebaliknya, dokumen yang kurang relevan mungkin diambil.

  • Jika model vektor jarang diaktifkan, nilai defaultnya adalah 0,35. Semakin besar nilainya, semakin tinggi relevansi dokumen tetapi semakin sedikit dokumen yang diambil. Sebaliknya, dokumen yang kurang relevan mungkin diambil.

1,3

options.retrieve.doc.top_n

integer

Tidak

Jumlah dokumen yang akan diambil. Nilai valid: (0, 50]. Nilai default: 5.

5

options.retrieve.doc.formula

string

Tidak

Rumus berdasarkan dokumen yang diambil diurutkan.

Catatan

Untuk informasi tentang sintaks, lihat Fungsi penyortiran halus. Relevansi algoritma dan relevansi lokasi geografis tidak didukung.

-timestamp: mengurutkan dokumen yang diambil secara menurun berdasarkan cap waktu dokumen.

options.retrieve.doc.rerank_size

integer

Tidak

Jumlah dokumen yang akan di-rerank jika fitur reranking diaktifkan. Nilai valid: (0, 100]. Nilai default: 30.

30

options.retrieve.doc.operator

string

Tidak

Operator antara istilah yang diperoleh setelah segmentasi teks selama pengambilan dokumen. Parameter ini hanya berlaku jika model vektor jarang dinonaktifkan.

  • AND (default): Dokumen yang cocok dengan semua istilah diambil. Nilai default: AND.

  • OR: Dokumen yang cocok dengan setidaknya satu istilah diambil.

AND

options.retrieve.doc.dense_weight

float

Tidak

Bobot vektor padat selama pengambilan dokumen jika model vektor jarang diaktifkan. Nilai valid: (0,0, 1,0). Nilai default: 0,7.

0,7

options.retrieve.entry

map

Tidak

Konfigurasi pengambilan data intervensi.

options.retrieve.entry.disable

boolean

Tidak

Menentukan apakah akan menonaktifkan pengambilan data intervensi. Nilai valid:

  • false (default)

  • true

false

options.retrieve.entry.sf

float

Tidak

Ambang batas untuk menentukan relevansi vektor untuk pengambilan data intervensi. Nilai valid: [0, 2,0]. Nilai default: 0,3. Semakin kecil nilainya, semakin tinggi relevansi dokumen tetapi semakin sedikit dokumen yang diambil. Sebaliknya, dokumen yang kurang relevan mungkin diambil.

0,3

options.retrieve.image

map

Tidak

Konfigurasi pengambilan gambar.

options.retrieve.image.disable

boolean

Tidak

Menentukan apakah akan menonaktifkan pengambilan gambar. Nilai valid:

  • false (default)

  • true

false

options.retrieve.image.sf

float

Tidak

Ambang batas untuk menentukan relevansi vektor untuk pengambilan dokumen.

  • Jika model vektor jarang dinonaktifkan, nilai parameter berkisar dari 0 hingga 2,0 dan nilai defaultnya adalah 1,0. Semakin kecil nilainya, semakin tinggi relevansi dokumen tetapi semakin sedikit dokumen yang diambil. Sebaliknya, dokumen yang kurang relevan mungkin diambil.

  • Jika model vektor jarang diaktifkan, nilai defaultnya adalah 0,5. Semakin besar nilainya, semakin tinggi relevansi dokumen tetapi semakin sedikit dokumen yang diambil. Sebaliknya, dokumen yang kurang relevan mungkin diambil.

1,0

options.retrieve.image.dense_weight

float

Tidak

Bobot vektor padat selama pengambilan gambar jika model vektor jarang diaktifkan. Nilai valid: (0,0, 1,0). Nilai default: 0,7.

0,7

options.retrieve.qp

map

Tidak

Konfigurasi penulisan ulang kueri.

options.retrieve.qp.query_extend

boolean

Tidak

Menentukan apakah akan memperluas kueri. Kueri yang diperluas digunakan untuk mengambil segmen dokumen di OpenSearch. Nilai valid:

  • false (default): tidak memperluas kueri.

  • true: memperluas kueri. Interaksi tambahan dengan LLM dilakukan. Ini memperlambat respons sistem. Jangan perluas kueri untuk aplikasi yang memerlukan respons cepat.

false

options.retrieve.qp.query_extend_num

integer

Tidak

Jumlah maksimum kueri yang akan diperluas jika fitur perluasan kueri diaktifkan. Nilai default: 5.

5

options.retrieve.rerank

map

Tidak

Konfigurasi reranking untuk pengambilan dokumen.

options.retrieve.rerank.enable

boolean

Tidak

Menentukan apakah akan menggunakan model untuk mereranking hasil yang diambil berdasarkan relevansi. Nilai valid:

  • true

  • false

  • Nilai default jika parameter options.retrieve.doc.formula ditentukan: false. Nilai default jika parameter options.retrieve.doc.formula dibiarkan kosong: true.

true

options.retrieve.rerank.model

string

Tidak

Nama LLM untuk reranking. Nilai valid:

  • ops-bge-reranker-larger (default): model bge-reranker.

  • ops-text-reranker-001: model reranker yang dikembangkan sendiri.

ops-bge-reranker-larger

options.retrieve.return_hits

boolean

Tidak

Menentukan apakah akan mengembalikan hasil pengambilan dokumen. Jika Anda mengatur parameter ini ke true, parameter search_hits dikembalikan dalam respons.

false

Contoh body permintaan

{
    "question" : {
        "text" : "pertanyaan pengguna",
        "session" : "Sesi percakapan. Anda dapat menentukan parameter ini untuk mengaktifkan fitur percakapan multi-putaran.",
        "type" : "TEXT"
    },
    "options": {
        "chat": {
            "disable" : false, # Menentukan apakah akan menonaktifkan akses LLM dan langsung mengembalikan hasil pengambilan dokumen. Nilai default: false, yang menunjukkan bahwa akses LLM diaktifkan.
            "stream" : false, # Menentukan apakah akan mengaktifkan pengkodean transfer terbagi HTTP. Nilai default: false.
            "model" : "Qwen", # LLM yang akan digunakan.
            "prompt_template" : "user_defined_prompt_name", # Nama template prompt kustom.
            "prompt_config" : { # Opsional. Konfigurasi template prompt kustom.
                "key" : "value" # Tentukan pasangan key-value.
            },
            "generate_config" : {
                "repetition_penalty": 1.01,
                "top_k": 50,
                "top_p": 0.5,
                "temperature": 0.7
            },
            "history_max": 20, # Jumlah maksimum putaran percakapan berdasarkan hasil yang dikembalikan oleh sistem.
            "link": false, # Menentukan apakah akan mengembalikan URL sumber referensi.
            "agent":{
                "tools":["knowledge_search"]
            }
        },
        "retrieve": {
            "doc": {
                "disable": false, # Menentukan apakah akan menonaktifkan pengambilan dokumen. Nilai default: false.
                "filter": "category=\"type\"", # Filter yang digunakan untuk menyaring dokumen berdasarkan bidang kategori selama pengambilan dokumen. Secara default, parameter ini dibiarkan kosong.
                "sf": 1.3,    # Ambang batas untuk menentukan relevansi vektor untuk pengambilan dokumen. Nilai default: 1.3. Semakin besar nilainya, semakin tidak relevan dokumen yang diambil.
                "top_n": 5,    # Jumlah dokumen yang akan diambil. Nilai valid: (0, 50]. Nilai default: 5.
                "formula" : "", # Rumus untuk pengambilan dokumen. Secara default, dokumen diambil berdasarkan kesamaan vektor.
                "rerank_size" : 5, # Jumlah dokumen yang akan disortir secara halus. Secara default, Anda tidak perlu menentukan parameter ini. Sistem secara otomatis menentukan jumlah dokumen yang akan disortir secara halus.
                "operator": "OR" # Operator antara token teks. Nilai default: AND.
            },
            "web_search":{
                      "enable": false # Menentukan apakah akan mengaktifkan fitur pencarian Internet. Nilai default: false.
            },
            "entry": {
                "disable": false, # Menentukan apakah akan menonaktifkan pengambilan data intervensi. Nilai default: false.
                "sf": 0.3 # Ambang batas untuk menentukan relevansi vektor untuk pengambilan data intervensi. Nilai default: 0.3.
            },
            "image": {
                "disable": false,  # Menentukan apakah akan menonaktifkan pengambilan gambar. Nilai default: false.
                "sf": 1.0          # Ambang batas untuk menentukan relevansi vektor untuk pengambilan gambar. Nilai default: 1.0.
            },
            "qp": {
                "query_extend": false, # Menentukan apakah akan memperluas kueri.
                "query_extend_num": 5 # Jumlah maksimum kueri yang akan diperluas. Nilai default: 5.
            },
            "rerank" : {
                "enable": true # Menentukan apakah akan menggunakan LLM untuk mereranking hasil yang diambil. Nilai default: true.
                "model":"model_name" # Nama LLM.
            },
            "return_hits": false   # Menentukan apakah akan mengembalikan hasil pengambilan dokumen. Jika Anda mengatur parameter ini ke true, parameter search_hits dikembalikan dalam respons.
        }
    }
}

Parameter respons

Parameter

Tipe

Deskripsi

request_id

string

ID permintaan.

status

string

Menunjukkan apakah permintaan berhasil. Nilai valid:

  • OK

  • FAIL

latency

float

Jumlah waktu yang dikonsumsi oleh server untuk memproses permintaan yang berhasil. Satuan: milidetik.

id

integer

ID kunci utama.

title

string

Judul dokumen.

category

string

Nama kategori.

url

string

URL dokumen.

answer

string

Hasil yang dikembalikan.

type

string

Format hasil yang dikembalikan.

scores

array

Skor berbasis relevansi dokumen.

code

string

Kode kesalahan yang dikembalikan.

message

string

Pesan kesalahan yang dikembalikan.

Contoh body respons

{
  "request_id": "6859E98D-D885-4AEF-B61C-9683A0184744",
  "status": "OK",
  "latency": 6684.410397,
  "result" : {
    "data" : [
      {
        "answer" : "teks jawaban",
        "type" : "TEXT",
        "reference" : [
          {"url" : "http://....","title":"judul dokumen"}
    		]
      },
      {
        "reference": [
          {"id": "16","title": "Judul uji","category": "Kategori uji","url": "URL Uji"}
        ],
        "answer": "https://ecmb.bdimg.com/tam-ogel/-xxxx.jpg",
        "type": "IMAGE"
      }
    ],
    "search_hits" : [  // Parameter ini dikembalikan hanya jika parameter options.retrieve.return_hits dalam permintaan diatur ke true.
      {
        "fields" : {
          "content" : "...."
          "key1" : "value1"
        },
        "scores" : ["10000.1234"],
        "type" : "doc"
      },
      {
        "fields"{
          "answer" : "...",
          "key1" : "value1"
        },
        "scores" : ["10000.1234"],
        "type" : "entry"
      }
    ]
  }
  "errors" : [
    {
      "code" : "Kode kesalahan yang dikembalikan jika terjadi kesalahan.",
      "message" : "Pesan kesalahan yang dikembalikan jika terjadi kesalahan."
    }
  ]
}