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.
| 1725530408586 |
question.type | string | Tidak | Format pertanyaan input. Contoh: | 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 |
options.chat.stream | boolean | Tidak | Menentukan apakah akan mengaktifkan pengkodean transfer terbagi HTTP. Nilai valid:
| true |
options.chat.model | string | Tidak | LLM yang akan digunakan. Nilai valid: Singapore
| opensearch-llama2-13b |
options.chat.enable_deep_search | boolean | Tidak | Menentukan apakah akan mengaktifkan fitur pencarian mendalam. Nilai valid:
| 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: | |
options.chat.prompt_config.attitude | string | Tidak | Nada percakapan. Parameter ini termasuk dalam template prompt bawaan. Nilai valid:
| normal |
options.chat.prompt_config.rule | string | Tidak | Tingkat detail percakapan. Nilai valid:
| detailed |
options.chat.prompt_config.noanswer | string | Tidak | Informasi yang dikembalikan jika sistem gagal menemukan jawaban atas pertanyaan. Nilai valid:
| sorry |
options.chat.prompt_config.language | string | Tidak | Bahasa jawaban. Nilai valid:
| 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 |
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:
Contoh respons jika Anda mengatur parameter ini ke true:
| 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 |
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:
| |
options.chat.agent.tools | list of string | Tidak | Nama alat RAG yang akan digunakan. Alat berikut tersedia:
| ["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:
| false |
doc | map | Tidak | Konfigurasi pengambilan. | |
options.retrieve.doc.disable | boolean | Tidak | Menentukan apakah akan menonaktifkan pengambilan dokumen. Nilai valid:
| 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:
Contoh: | category=\"value1\" |
options.retrieve.doc.sf | float | Tidak | Ambang batas untuk menentukan relevansi vektor untuk pengambilan dokumen.
| 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 |
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 |
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 |
options.retrieve.image.sf | float | Tidak | Ambang batas untuk menentukan relevansi vektor untuk pengambilan dokumen.
| 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 |
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 |
options.retrieve.rerank.model | string | Tidak | Nama LLM untuk reranking. Nilai valid:
| 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:
|
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."
}
]
}