Fitur Tanya Jawab Berbasis Teks (Text Q&A) menjawab kueri dengan mengambil konten dari basis pengetahuan. Fitur ini menggunakan ID sesi untuk mempertahankan konteks dalam percakapan multi-putaran. Anda juga dapat memilih Large Language Model (LLM) yang berbeda untuk menghasilkan jawaban dan menyesuaikan respons.
Prasyarat
-
Dapatkan Kunci API untuk mengotentikasi panggilan ke OpenSearch - Edisi LLM Intelligent Q&A. Untuk informasi lebih lanjut, lihat Kelola Kunci API.
-
Dapatkan titik akhir layanan untuk melakukan panggilan ke OpenSearch - Edisi LLM Intelligent Q&A. Untuk informasi lebih lanjut, lihat Dapatkan titik akhir layanan.
API ini dirancang untuk penggunaan di sisi server dan tidak boleh dipanggil langsung dari lingkungan front-end seperti browser, mini program, atau aplikasi seluler. Ada dua alasan untuk hal ini. Pertama, API menggunakan header Authorization: Bearer <API key> untuk otentikasi. Kunci API merupakan kredensial jangka panjang; menyematkannya dalam kode front-end akan membuatnya rentan terhadap pencurian. Kedua, API ini tidak mendukung Cross-Origin Resource Sharing (CORS), sehingga browser akan memblokir semua panggilan langsung. Anda harus menyimpan kunci API di server Anda, lakukan panggilan dari server, lalu kembalikan hasilnya ke front-end.
API
|
Metode permintaan |
Protokol |
Format permintaan |
|
POST |
HTTP |
JSON |
URL Permintaan
{host}/v3/openapi/apps/{app_group_identity}/actions/knowledge-search
-
{host}: Titik akhir layanan, dapat diakses melalui Internet atau virtual private cloud (VPC). Untuk informasi lebih lanjut, lihat Dapatkan titik akhir. -
{app_group_identity}: Nama aplikasi. Masuk ke Konsol OpenSearch Edisi Pencarian Percakapan Berbasis LLM dan temukan nama ini di halaman Manajemen Instans.
Parameter permintaan
Parameter header
|
Parameter |
Tipe |
Wajib |
Deskripsi |
Contoh |
|
Content-Type |
string |
Ya |
Menentukan jenis media dari badan permintaan. Harus bernilai "application/json". |
application/json |
|
Authorization |
string |
Ya |
Kunci API Anda, diawali dengan "Bearer ". |
Bearer OS-d1**2a |
|
accept |
string |
Tidak |
Atur ke "text/event-stream" untuk menerima respons streaming menggunakan Server-Sent Events (SSE). |
text/event-stream |
Parameter badan
|
Parameter |
Tipe |
Wajib |
Deskripsi |
Nilai contoh |
|
question |
map |
Ya |
Pertanyaan input. |
{ "text":"user question", "type": "TEXT", "session" : "" } |
|
question.text |
string |
Ya |
Konten teks dari pertanyaan pengguna. |
user question |
|
question.session |
string |
Tidak |
ID sesi yang mengidentifikasi konteks percakapan multi-putaran. Nilai yang valid:
|
1725530408586 |
|
question.type |
string |
Tidak |
Jenis pertanyaan input. Atur nilai ini ke |
TEXT |
|
options |
map |
Tidak |
Parameter opsional untuk mengontrol pengaturan seperti pengambilan, pemilihan model, dan prompt. |
|
|
options.chat |
map |
Tidak |
Parameter untuk mengakses Large Language Model (LLM). |
|
|
options.chat.disable |
boolean |
Tidak |
Menentukan apakah akses ke LLM dinonaktifkan.
|
false |
|
options.chat.stream |
boolean |
Tidak |
Menentukan apakah respons streaming diaktifkan.
|
true |
|
options.chat.model |
string |
Tidak |
Large Language Model (LLM) yang digunakan. Nilai yang valid: Asia Pasifik SE 1 (Singapura)
|
opensearch-llama2-13b |
|
options.chat.enable_deep_search |
boolean |
Tidak |
Menentukan apakah deep search diaktifkan.
|
false |
|
options.chat.model_generation |
integer |
Tidak |
Menentukan versi model yang digunakan untuk model produk kustom. Jika Anda tidak menentukan parameter ini, sistem menggunakan versi tertua secara default. |
20 |
|
options.chat.prompt_template |
string |
Tidak |
Nama templat prompt kustom. Jika parameter ini kosong, sistem menggunakan templat prompt bawaannya secara default. |
user_defined_prompt_name |
|
options.chat.prompt_config |
object |
Tidak |
Pasangan kunci-nilai untuk mengonfigurasi prompt kustom. Parameter harus dalam format berikut:
|
|
|
options.chat.prompt_config.attitude |
string |
Tidak |
Parameter untuk templat prompt bawaan yang mengontrol nada respons. Nilai default adalah
|
normal |
|
options.chat.prompt_config.rule |
string |
Tidak |
Mengontrol tingkat detail dalam respons. Nilai default adalah
|
detailed |
|
options.chat.prompt_config.noanswer |
string |
Tidak |
Respons yang dikembalikan ketika sistem tidak dapat menjawab pertanyaan. Nilai default adalah
|
sorry |
|
options.chat.prompt_config.language |
string |
Tidak |
Bahasa yang digunakan untuk respons. Nilai default adalah
|
Chinese |
|
options.chat.prompt_config.role |
boolean |
Tidak |
Menentukan apakah persona kustom untuk respons diaktifkan. Jika Anda mengatur nilai ini ke |
false |
|
options.chat.prompt_config.role_name |
string |
Tidak |
Nama persona kustom. Contohnya: AI Assistant. |
AI Assistant |
|
options.chat.prompt_config.out_format |
string |
Tidak |
Format konten output. Nilai default adalah
|
text |
|
options.chat.generate_config.repetition_penalty |
float |
Tidak |
Mengontrol penalti untuk pengulangan dalam urutan token yang dihasilkan. Nilai yang lebih tinggi mengurangi kemungkinan pengulangan. Nilai |
1.01 |
|
options.chat.generate_config.top_k |
integer |
Tidak |
Jumlah token dengan probabilitas tertinggi yang dipertimbangkan untuk pengambilan sampel. Misalnya, nilai |
50 |
|
options.chat.generate_config.top_p |
float |
Tidak |
Ambang batas probabilitas kumulatif untuk pengambilan sampel inti. Misalnya, nilai |
0.5 |
|
options.chat.generate_config.temperature |
float |
Tidak |
Mengontrol keacakan dan keragaman teks yang dihasilkan. Suhu yang lebih tinggi meratakan distribusi probabilitas token kandidat, memungkinkan model memilih token yang kurang mungkin dan membuat output lebih beragam. Nilai yang lebih rendah memperjelas distribusi, membuat model lebih cenderung memilih token berprobabilitas tinggi dan output menjadi lebih deterministik. Rentang nilai: [0, 2). Jangan atur parameter ini ke 0. versi python >=1.10.1 versi java >= 2.5.1 |
0.7 |
|
options.chat.history_max |
integer |
Tidak |
Jumlah maksimum putaran yang disimpan dalam riwayat percakapan multi-putaran. Nilai maksimum adalah 20. Nilai default adalah 1. |
20 |
|
options.chat.link |
boolean |
Tidak |
Menentukan apakah kutipan sumber disertakan dalam respons. Nilai yang valid:
Berikut adalah contoh respons yang berisi kutipan:
Angka yang diapit oleh |
false |
|
options.chat.rich_text_strategy |
string |
Tidak |
Strategi post-processing untuk output dari LLM rich-text. Jika parameter ini kosong atau tidak ditentukan, pemrosesan rich text dinonaktifkan secara default.
|
inside_response |
|
options.chat.agent |
map |
Tidak |
Menentukan opsi untuk kemampuan penggunaan tool Agen RAG. Saat diaktifkan, model memutuskan apakah akan mengeksekusi tool berdasarkan konten yang tersedia. LLM yang saat ini mendukung fitur ini adalah:
|
|
|
options.chat.agent.think_process |
boolean |
Tidak |
Menentukan apakah proses berpikir agen dikembalikan. |
true |
|
options.chat.agent.max_think_round |
integer |
Tidak |
Jumlah maksimum putaran berpikir untuk agen. Nilainya tidak boleh melebihi 20. |
10 |
|
options.chat.agent.language |
string |
Tidak |
Bahasa untuk proses berpikir dan jawaban akhir.
|
AUTO |
|
options.chat.agent.tools |
list of string |
Tidak |
Tool RAG yang dapat digunakan agen. Tool berikut tersedia:
|
["knowledge_search"] |
|
options.retrieve |
map |
Tidak |
Menentukan parameter yang mengontrol proses pengambilan. |
|
|
options.retrieve.web_search.enable |
boolean |
Tidak |
Menentukan apakah pencarian web diaktifkan.
|
false |
|
doc |
map |
Tidak |
Menentukan parameter terkait pengambilan dokumen. |
|
|
options.retrieve.doc.disable |
boolean |
Tidak |
Menentukan apakah pengambilan dari basis pengetahuan dinonaktifkan.
|
false |
|
options.retrieve.doc.filter |
string |
Tidak |
Ekspresi filter untuk memilih data yang akan diambil dari basis pengetahuan. Jika tidak ditentukan, tidak ada filter yang diterapkan. Untuk contoh sintaksis, lihat parameter filter. Bidang yang didukung:
Format contoh:
|
category=\"value1\" |
|
options.retrieve.doc.sf |
float |
Tidak |
Ambang batas skor untuk pengambilan berbasis vektor.
|
0.35 |
|
options.retrieve.doc.top_n |
integer |
Tidak |
Jumlah dokumen yang diambil. Nilainya harus berada dalam rentang (0, 50]. Nilai default adalah 5. |
5 |
|
options.retrieve.doc.formula |
string |
Tidak |
Rumus peringkat kustom untuk dokumen yang diambil. Catatan
Untuk detail sintaksis, lihat Fungsi Pengurutan Bisnis. Fitur Relevansi Algoritmik dan Relevansi Geografis tidak didukung. |
-timestamp: Mengurutkan dokumen secara menurun berdasarkan bidang timestamp. |
|
options.retrieve.doc.rerank_size |
integer |
Tidak |
Jumlah dokumen yang disusun ulang saat fitur penyusunan ulang diaktifkan. Nilainya harus berada dalam rentang (0, 100]. Nilai default adalah 30. |
30 |
|
options.retrieve.doc.operator |
string |
Tidak |
Hubungan antar istilah yang dihasilkan dari tokenisasi
|
AND |
|
options.retrieve.doc.dense_weight |
float |
Tidak |
Saat vektor jarang diaktifkan, parameter ini mengontrol bobot vektor padat selama pengambilan dokumen. Nilainya harus berada dalam rentang (0.0, 1.0). Nilai default adalah 0.7. |
0.7 |
|
options.retrieve.entry |
map |
Tidak |
Menentukan parameter untuk mengambil hasil dari data intervensi manual. |
|
|
options.retrieve.entry.disable |
boolean |
Tidak |
Menentukan apakah pengambilan dari data intervensi manual dinonaktifkan.
|
false |
|
options.retrieve.entry.sf |
float |
Tidak |
Ambang batas skor vektor untuk mengambil data intervensi manual. Rentang nilai adalah |
0.3 |
|
options.retrieve.image |
map |
Tidak |
Menentukan parameter untuk mengambil hasil gambar dari basis pengetahuan. |
|
|
options.retrieve.image.disable |
boolean |
Tidak |
Menentukan apakah pengambilan gambar dinonaktifkan. Nilai default adalah
|
false |
|
options.retrieve.image.sf |
float |
Tidak |
Ambang batas skor untuk pengambilan vektor gambar.
|
1.0 |
|
options.retrieve.image.dense_weight |
float |
Tidak |
Saat vektor jarang diaktifkan, parameter ini mengontrol bobot vektor padat selama pengambilan gambar. Nilainya harus berada dalam rentang (0.0, 1.0). Nilai default adalah 0.7. |
0.7 |
|
options.retrieve.qp |
map |
Tidak |
Menentukan opsi untuk penulisan ulang kueri. |
|
|
options.retrieve.qp.query_extend |
boolean |
Tidak |
Menentukan apakah kueri pengguna diperluas. Mesin pencari menggunakan kueri yang diperluas untuk mengambil chunk dokumen.
|
false |
|
options.retrieve.qp.query_extend_num |
integer |
Tidak |
Saat perluasan kueri diaktifkan, parameter ini menentukan jumlah maksimum kueri tambahan yang dihasilkan. Nilai default adalah 5. |
5 |
|
options.retrieve.rerank |
map |
Tidak |
Menentukan opsi untuk penyusunan ulang dokumen yang diambil. |
|
|
options.retrieve.rerank.enable |
boolean |
Tidak |
Menentukan apakah model digunakan untuk menyusun ulang hasil pencarian berdasarkan relevansi. Nilai yang valid:
|
true |
|
options.retrieve.rerank.model |
string |
Tidak |
Nama model besar yang digunakan untuk penyusunan ulang.
|
ops-bge-reranker-larger |
|
options.retrieve.return_hits |
boolean |
Tidak |
Menentukan apakah hasil pengambilan dokumen dikembalikan, yang berkorespondensi dengan objek |
false |
Badan permintaan
{
"question": {
"text": "What is Alibaba Cloud OpenSearch?",
"session": "session_001",
"type": "TEXT"
},
"options": {
"chat": {
"disable": false,
"stream": false,
"model": "Qwen",
"history_max": 20,
"link": false,
"agent": {
"tools": ["knowledge_search"]
}
},
"retrieve": {
"doc": {
"disable": false,
"filter": "category=\"type\"",
"sf": 0.35,
"top_n": 5,
"operator": "OR"
},
"web_search": { "enable": false },
"entry": { "disable": false, "sf": 0.3 },
"image": { "disable": false, "sf": 1.0 },
"rerank": {
"enable": true,
"model": "ops-bge-reranker-larger"
},
"return_hits": false
}
}
}
Parameter utama:
-
Gunakan
question.sessionuntuk mengaktifkan konteks percakapan multi-putaran. -
Atur
options.chat.disableketrueuntuk melewati LLM dan mengembalikan hasil pengambilan. -
Gunakan
options.retrieve.doc.top_nuntuk menentukan jumlah dokumen yang diambil. Nilai default adalah 5. -
Atur
options.retrieve.return_hitsketrueuntuk mengembalikan konten detail darisearch_hits.
Parameter respons
|
Parameter |
Tipe |
Deskripsi |
|
request_id |
string |
Identifikasi unik permintaan. Sertakan nilai ini dalam permintaan dukungan. |
|
status |
string |
Status pemrosesan permintaan.
|
|
latency |
float |
Waktu pemrosesan server dalam milidetik. Dikembalikan hanya saat permintaan berhasil. |
|
id |
integer |
Kunci primer. |
|
title |
string |
Judul dokumen. |
|
category |
string |
Nama kategori. |
|
url |
string |
URL dokumen. |
|
answer |
string |
Jawaban yang dihasilkan. |
|
type |
string |
Jenis hasil. |
|
scores |
array |
Skor relevansi dokumen. |
|
event |
string |
Jenis event streaming. Satu putaran berpikir mencakup event |
|
event_status |
string |
Menunjukkan apakah event telah selesai.
|
|
code |
string |
Kode kesalahan. Dikembalikan hanya saat terjadi kesalahan. |
|
message |
string |
Pesan kesalahan. Dikembalikan hanya saat terjadi kesalahan. |
Contoh badan respons
Respons berhasil
{
"request_id": "6859E98D-D885-4AEF-B61C-9683A0184744",
"status": "OK",
"latency": 6684.41,
"result": {
"data": [
{
"answer": "Alibaba Cloud OpenSearch adalah layanan terkelola untuk mencari data terstruktur...",
"type": "TEXT",
"reference": [
{"url": "https://www.alibabacloud.com/help/document_detail/463469.html", "title": "Pengenalan Produk OpenSearch"}
]
}
],
"search_hits": [
{
"fields": {"content": "Konten dokumen terkait OpenSearch...", "title": "Pengenalan OpenSearch"},
"scores": ["0.9778"],
"type": "DOC"
}
]
}
}
Respons kesalahan
{
"request_id": "e579a090bf99dc787d29d878b40c8367",
"status": "FAIL",
"errors": [
{"code": 3005, "message": "topN[51] is not in (0, 50]"}
]
}