Prasyarat: Dapatkan endpoint dan token
Untuk memanggil layanan RAG melalui API-nya, Anda perlu mendapatkan endpoint layanan dan sebuah token. Semua permintaan API harus menyertakan EAS_TOKEN di header HTTP Authorization.
$EAS_SERVICE_URL dan $EAS_TOKEN yang muncul dalam deskripsi API di bawah ini adalah variabel lingkungan. Anda harus menyetelnya sebelum digunakan. Ikuti langkah-langkah berikut untuk mendapatkannya:
-
Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
-
Klik nama layanan target Anda, lalu pada bagian Basic Information, klik View Endpoint Information.
-
Pada halaman Invocation Method, dapatkan Internet/VPC Endpoint (EAS_SERVICE_URL) dan Token (EAS_TOKEN).
Penting
-
Hapus tanda slash (/) di akhir nilai EAS_SERVICE_URL.
-
Gunakan endpoint internet jika klien Anda dapat mengakses Internet publik.
-
Gunakan endpoint VPC hanya jika klien Anda berada dalam Virtual Private Cloud (VPC) yang sama dengan layanan RAG.
Setelah mendapatkan EAS_SERVICE_URL dan EAS_TOKEN, tetapkan sebagai variabel lingkungan untuk menyederhanakan pemanggilan API selanjutnya:
export EAS_SERVICE_URL="your_service_endpoint"
export EAS_TOKEN="your_token"
Setelah ditetapkan, Anda dapat menggunakan $EAS_SERVICE_URL dan $EAS_TOKEN dalam perintah curl berikutnya.
Chat API
Chat API adalah antarmuka chat streaming yang mendukung agen dan Retrieval-Augmented Generation (RAG). API ini memperluas protokol chat kompatibel OpenAI dengan fitur lanjutan seperti pengambilan basis pengetahuan, penalaran multi-langkah, dan pemanggilan alat, sehingga cocok untuk membangun sistem percakapan cerdas dan chatbot tanya-jawab.
Penting
Cara yang direkomendasikan untuk memanggil Chat API adalah dengan mengonfigurasi aplikasi chat Anda sendiri. Misalnya, Anda dapat membuat aplikasi bernama my_assistant dan mengonfigurasi basis pengetahuannya serta pengaturan pencarian web.
POST $EAS_SERVICE_URL/v1/chat/completions
Description: Mengirim permintaan chat. Gunakan parameter model untuk memanggil aplikasi chat yang telah dikonfigurasi sebelumnya, yang mungkin terhubung ke basis pengetahuan, pencarian web, atau sumber daya lainnya.
Request body (application/json)
|
Parameter
|
Type
|
Required
|
Description
|
|
model
|
String
|
Yes
|
Nama aplikasi chat Anda.
|
|
messages
|
Array
|
Yes
|
Riwayat percakapan, berupa daftar pesan dalam format OpenAI.
|
|
stream
|
Boolean
|
No
|
Menentukan apakah respons dikembalikan dalam mode streaming. Nilai default-nya adalah false.
|
Contoh request body
{
"model": "my_assistant",
"messages": [
{
"role": "user",
"content": "What are the core features of PAI-RAG?"
}
],
"stream": true
}
Response body
Format respons kompatibel dengan API OpenAI chat.completions.
Contoh klien OpenAI:
from openai import OpenAI
import os
EAS_ENDPOINT = os.getenv("EAS_SERVICE_URL")
EAS_TOKEN = os.getenv("EAS_TOKEN")
client = OpenAI(
base_url=EAS_ENDPOINT,
api_key=EAS_TOKEN
)
response = client.chat.completions.create(
model="my_assistant", # Ganti dengan nama aplikasi chat Anda
messages=[
{"role": "user", "content": "Hello"}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content)
Manajemen basis pengetahuan
Basis pengetahuan
Buat basis pengetahuan baru dan konfigurasikan pengaturannya untuk chunking data, penyematan, dan pengambilan.
POST $EAS_SERVICE_URL/v1/config/knowledgebases
Request
|
curl -X POST "$EAS_SERVICE_URL/v1/config/knowledgebases" \
--header "Authorization: Bearer $EAS_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "example_kb",
"description": "This is an example knowledge base.",
"chunk_config": {
"parser_type": "structure",
"separator": "\n\n",
"chunk_size": 1000,
"chunk_overlap": 50
},
"embedding_model": "BAAI/bge-m3",
"retrieval_config": {
"retrieval_mode": "hybrid",
"top_k": 5,
"similarity_threshold": 0.2,
"enable_rerank": true,
"rerank_model": "qwen3-reranker",
"vector_weight": 0.7
}
}'
|
Request headers
|
|
Content-Type string (Required)
Tipe konten permintaan. Parameter ini harus diatur ke application/json.
|
|
Authorization string (Required)
Token autentikasi untuk permintaan. Gunakan EAS_TOKEN.
|
Request body
|
|
name string (Required)
Nama basis pengetahuan.
|
|
description string (Optional)
Deskripsi basis pengetahuan.
|
|
embedding_model string (Required)
Nama atau path model penyematan. Model lokal maupun remote didukung.
|
|
chunk_config object (Optional)
Konfigurasi chunking data.
Properties
parser_type string (Optional)
Jenis parser. Nilai valid: structure, table, token, dan paragraph.
separator string (Optional)
Pemisah kustom.
chunk_size int (Optional)
Panjang maksimum setiap chunk, dalam karakter.
chunk_overlap int (Optional)
Panjang tumpang tindih antara chunk yang berdekatan, dalam karakter.
image_caption_model string (Optional)
Model keterangan gambar.
|
|
retrieval_config object (Optional)
Konfigurasi pengambilan.
Properties
retrieval_mode string (Optional)
Mode pengambilan. Nilai valid: hybrid (pencarian hibrida) dan vector (pencarian vektor).
top_k int (Optional)
Jumlah chunk teratas yang dikembalikan.
similarity_threshold float (Optional)
Menyaring hasil dengan skor kemiripan di bawah nilai ini.
enable_rerank bool (Optional)
Menentukan apakah hasil pengambilan akan diurutkan ulang.
Penting
Untuk menggunakan fitur ini, Anda harus terlebih dahulu mengonfigurasi model reranker di PAI-RAG Web UI.
rerank_model string (Optional)
Nama atau path model reranker.
vector_weight float (Optional)
Bobot komponen pencarian vektor yang digunakan dalam pencarian hibrida.
|
Contoh respons
{
"code": 200,
"message": "Knowledge base created successfully.",
"data": {
"name": "example_kb",
"tenant_id": "__default_tenant_id__",
"created_at": "2026-02-27T02:35:01.121035Z",
"description": "This is an example knowledge base.",
"updated_at": "2026-02-27T02:35:01.121046Z",
"chunk_config": {
"chunk_size": 1000,
"chunk_overlap": 50,
"parser_type": "structure",
"separator": "\n\n",
"image_caption_model": null,
"image_caption_provider_name": "openai_like",
"table_config": {
"concat_rows": false,
"row_joiner": "\n",
"header_index_max": 0,
"format_sheet_data_to_json": false,
"sheet_column_filters": null,
"question_column_index": 0,
"answer_column_index": 1
}
},
"id": "a4815ee728a64e9c83a3d891dbc1c956",
"embedding_model": "BAAI/bge-m3",
"embedding_provider_name": "openai_like",
"retrieval_config": {
"retrieval_mode": "hybrid",
"top_k": 5,
"similarity_threshold": 0.2,
"vector_weight": 0.7,
"enable_rerank": true,
"rerank_model": "qwen3-reranker",
"rerank_provider_name": "openai_like",
"rerank_top_k": 5
}
}
}
Daftar basis pengetahuan
Mengambil daftar basis pengetahuan yang dipaginasi dalam layanan saat ini.
GET $EAS_SERVICE_URL/v1/config/knowledgebases?page=1&size=10
Request
|
curl -X GET "$EAS_SERVICE_URL/v1/config/knowledgebases?page=1&size=10" \
--header "Authorization: Bearer $EAS_TOKE"
|
Request headers
|
|
Authorization string (Required)
Token autentikasi untuk permintaan. Gunakan nilai EAS_TOKEN.
|
Query parameters
|
|
page int (Optional)
Nomor halaman yang diambil. Nilai default-nya adalah 1.
|
|
size int (Optional)
Jumlah item per halaman. Nilai default-nya adalah 10, dan nilai maksimumnya adalah 1000.
|
Contoh respons
{
"code": 200,
"message": "Successfully retrieved the list of knowledge bases.",
"data": {
"items": [
{
"name": "example_kb",
"tenant_id": "__default_tenant_id__",
"created_at": "2026-02-27T02:35:01.121035Z",
"description": "This is an example knowledge base.",
"updated_at": "2026-02-27T02:35:01.121046Z",
"chunk_config": {
"chunk_size": 1000,
"chunk_overlap": 50,
"parser_type": "structure",
"separator": "\n\n",
"image_caption_model": null,
"image_caption_provider_name": "openai_like",
"table_config": {
"concat_rows": false,
"row_joiner": "\n",
"header_index_max": 0,
"format_sheet_data_to_json": false,
"sheet_column_filters": null,
"question_column_index": 0,
"answer_column_index": 1
}
},
"id": "a4815ee728a64e9c83a3d891dbc1c956",
"embedding_model": "BAAI/bge-m3",
"embedding_provider_name": "openai_like",
"retrieval_config": {
"retrieval_mode": "hybrid",
"top_k": 5,
"similarity_threshold": 0.2,
"vector_weight": 0.7,
"enable_rerank": true,
"rerank_model": "qwen3-reranker",
"rerank_provider_name": "openai_like",
"rerank_top_k": 5
},
"file_count": 0
},
{
"name": "iPhone16",
"tenant_id": "__default_tenant_id__",
"created_at": "2026-02-25T08:57:07.085859Z",
"description": "",
"updated_at": "2026-02-25T09:01:40.035292Z",
"chunk_config": {
"chunk_size": 1000,
"chunk_overlap": 50,
"parser_type": "structure",
"separator": "\n\n",
"image_caption_model": null,
"image_caption_provider_name": "openai_like",
"table_config": {
"concat_rows": false,
"row_joiner": "\n",
"header_index_max": 0,
"format_sheet_data_to_json": false,
"sheet_column_filters": null,
"question_column_index": 0,
"answer_column_index": 1
}
},
"id": "08f6bb77fd3441099fb5b19e4f10d67b",
"embedding_model": "BAAI/bge-m3",
"embedding_provider_name": "openai_like",
"retrieval_config": {
"retrieval_mode": "vector",
"top_k": 5,
"similarity_threshold": 0.2,
"vector_weight": 0.7,
"enable_rerank": false,
"rerank_model": "",
"rerank_provider_name": "openai_like",
"rerank_top_k": 5
},
"file_count": 2
}
],
"total": 2,
"pages": 1,
"page": 1,
"size": 10
}
}
Ambil basis pengetahuan
Mengambil detail basis pengetahuan.
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}
Request
|
curl -X GET "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}" \
--header "Authorization: Bearer $EAS_TOKEN"
|
Headers
|
|
Authorization string (Required)
Token autentikasi. Gunakan EAS_TOKEN Anda.
|
Path parameters
|
|
kb_id string (Required)
Identifier unik basis pengetahuan.
|
Contoh respons
{
"code": 200,
"message": "Retrieved the knowledge base successfully.",
"data": {
"id": "a4815ee728a64e9c83a3d891dbc1c956",
"tenant_id": "__default_tenant_id__",
"name": "example_kb",
"description": "This is an example knowledge base.",
"created_at": "2026-02-27T02:35:01.121035+00:00",
"updated_at": "2026-02-27T02:35:01.121046+00:00",
"embedding_model": "BAAI/bge-m3",
"embedding_provider_name": "openai_like",
"chunk_config": {
"chunk_size": 1000,
"chunk_overlap": 50,
"parser_type": "structure",
"separator": "\n\n",
"image_caption_model": null,
"image_caption_provider_name": "openai_like",
"table_config": {
"concat_rows": false,
"row_joiner": "\n",
"header_index_max": 0,
"format_sheet_data_to_json": false,
"sheet_column_filters": null,
"question_column_index": 0,
"answer_column_index": 1
}
},
"retrieval_config": {
"retrieval_mode": "hybrid",
"top_k": 5,
"similarity_threshold": 0.2,
"vector_weight": 0.7,
"enable_rerank": true,
"rerank_model": "qwen3-reranker",
"rerank_provider_name": "openai_like",
"rerank_top_k": 5
}
}
}
Perbarui basis pengetahuan
Memperbarui basis pengetahuan yang sudah ada.
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}
Request
|
curl -X PUT "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}" \
--header "Authorization: Bearer $EAS_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"name": "example_kb",
"description": "Example",
"id": "kb4451867a6d0f4166babddb7a048a311d",
"embedding_model": "BAAI/bge-m3",
"chunk_config": {
"chunk_size": 1000,
"chunk_overlap": 50,
"parser_type": "structure",
"separator": "\n\n"
},
"retrieval_config": {
"retrieval_mode": "hybrid",
"top_k": 6,
"similarity_threshold": 0.2,
"vector_weight": 0.7,
"enable_rerank": true,
"rerank_model": "qwen3-reranker"
}
}'
|
Request headers
|
|
Content-Type string (Required)
Parameter ini harus diatur ke application/json.
|
|
Authorization string (Required)
Token autentikasi. Gunakan EAS_TOKEN.
|
Path parameters
|
|
kb_id string (Required)
Identifier unik basis pengetahuan.
|
Request body
|
|
Body permintaan menerima parameter yang sama dengan operasi pembuatan basis pengetahuan, termasuk name, description, embedding_model, chunk_config, dan retrieval_config.
|
Contoh respons
{
"code": 200,
"message": "Knowledge base updated successfully.",
"data": {
"name": "example_kb",
"tenant_id": "__default_tenant_id__",
"created_at": "2026-02-27T02:35:01.121035Z",
"description": "Example",
"updated_at": "2026-02-27T07:26:55.543217Z",
"chunk_config": {
"chunk_size": 1000,
"chunk_overlap": 50,
"parser_type": "structure",
"separator": "\n\n",
"image_caption_model": null,
"image_caption_provider_name": "openai_like",
"table_config": {
"concat_rows": false,
"row_joiner": "\n",
"header_index_max": 0,
"format_sheet_data_to_json": false,
"sheet_column_filters": null,
"question_column_index": 0,
"answer_column_index": 1
}
},
"id": "a4815ee728a64e9c83a3d891dbc1c956",
"embedding_model": "BAAI/bge-m3",
"embedding_provider_name": "openai_like",
"retrieval_config": {
"retrieval_mode": "hybrid",
"top_k": 6,
"similarity_threshold": 0.2,
"vector_weight": 0.7,
"enable_rerank": true,
"rerank_model": "qwen3-reranker",
"rerank_provider_name": "openai_like",
"rerank_top_k": 5
}
}
}
Hapus basis pengetahuan
Menghapus basis pengetahuan yang ditentukan beserta semua file dan indeksnya secara permanen. Operasi ini tidak dapat dikembalikan. Lakukan dengan hati-hati.
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}
Request
|
curl -X DELETE "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}" \
--header "Authorization: Bearer $EAS_TOKEN"
|
Request headers
|
|
Authorization string (Required)
Token autentikasi untuk permintaan. Gunakan EAS_TOKEN.
|
Path parameters
|
|
kb_id string (Required)
Identifier unik basis pengetahuan.
|
Contoh respons
{"code":200,"message":"Knowledge base deleted successfully.","data":null}
Manajemen file
Unggah file
Mengunggah satu atau beberapa file ke basis pengetahuan tertentu. API asinkron ini langsung mengembalikan informasi file. Parsing dan pengindeksan terjadi di latar belakang. Format file yang didukung meliputi PDF, DOCX, dan TXT.
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files
Request
|
curl -X POST "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files" \
--header "Authorization: Bearer $EAS_TOKEN" \
--header 'Content-Type: multipart/form-data' \
--form 'files=@"/path/to/your/file.pdf"'
|
Request headers
|
|
Content-Type string (Required)
Tipe konten permintaan. Parameter ini harus diatur ke multipart/form-data.
|
|
Authorization string (Required)
Token autentikasi untuk permintaan. Gunakan EAS_TOKEN Anda.
|
Path parameters
|
|
kb_id string (Required)
Identifier unik basis pengetahuan.
|
Request body
|
|
files file (Required)
Satu atau beberapa file untuk diunggah.
|
Contoh respons
{
"code": 200,
"message": "File upload successful",
"data": [
{
"file_content_length": 0,
"status": "pending",
"file_source": null,
"failed_reason": null,
"file_name": "EAS_model_service_overview.pdf",
"active": true,
"tenant_id": "__default_tenant_id__",
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS_model_service_overview.pdf",
"created_at": "2026-02-27T07:30:10.875488Z",
"id": "2540b5414f2d422291cea3162eb8e1e0",
"file_extension": ".pdf",
"updated_at": "2026-02-27T07:30:10.875503Z",
"kb_id": "a4815ee728a64e9c83a3d891dbc1c956",
"file_size": 889027,
"file_metadata": {
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS_model_service_overview.pdf",
"file_name": "EAS_model_service_overview.pdf",
"file_size": 889027,
"file_extension": ".pdf"
},
"message_id": "tmp-1772177410",
"file_md5": "f4b60d2b9fd9edec06649ce7b5d65cb0",
"chunk_config": {
"chunk_size": 1000,
"chunk_overlap": 50,
"parser_type": "structure",
"separator": "\n\n",
"image_caption_model": null,
"image_caption_provider_name": "openai_like",
"table_config": {
"concat_rows": false,
"row_joiner": "\n",
"header_index_max": 0,
"format_sheet_data_to_json": false,
"sheet_column_filters": null,
"question_column_index": 0,
"answer_column_index": 1
}
},
"file_content": "",
"file_version": 1772177410
}
]
}
Daftar file
Mengambil daftar file yang dipaginasi dari basis pengetahuan tertentu. Anda dapat menyaring hasil berdasarkan nama file dan status pemrosesan.
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files
Request
|
curl -X GET "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files?query=EAS&status=succeeded&page=1&size=10" \
--header "Authorization: Bearer $EAS_TOKEN"
|
Request headers
|
|
Authorization string (required)
Token autentikasi Anda. Gunakan nilai $EAS_TOKEN.
|
Path parameters
|
|
kb_id string (required)
ID basis pengetahuan.
|
Query parameters
|
|
query string (optional)
Kata kunci pencarian untuk pencocokan kabur pada nama file.
|
|
status string (optional)
Menyaring file berdasarkan status pemrosesan. Jika dihilangkan, API mengembalikan file dari semua status. Nilai valid: pending, succeeded, failed, persisting, parsing.
|
|
page int (optional)
Nomor halaman. Default-nya adalah 1.
|
|
size int (optional)
Jumlah hasil yang dikembalikan per halaman. Default-nya adalah 10.
|
Contoh respons
{
"code": 200,
"message": "Successfully retrieved the file list.",
"data": {
"items": [
{
"file_content_length": 0,
"status": "succeeded",
"file_source": null,
"failed_reason": null,
"file_name": "EAS model service overview.pdf",
"active": true,
"tenant_id": "__default_tenant_id__",
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS model service overview.pdf",
"created_at": "2026-02-27T07:30:10.875488Z",
"id": "2540b5414f2d422291cea3162eb8e1e0",
"file_extension": ".pdf",
"updated_at": "2026-02-27T07:30:10.875503Z",
"kb_id": "a4815ee728a64e9c83a3d891dbc1c956",
"file_size": 889027,
"file_metadata": {
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS model service overview.pdf",
"file_name": "EAS model service overview.pdf",
"file_size": 889027,
"file_extension": ".pdf"
},
"message_id": "tmp-1772177410",
"file_md5": "f4b60d2b9fd9edec06649ce7b5d65cb0",
"chunk_config": null,
"file_content": "",
"file_version": 1772177410
}
],
"total": 1,
"pages": 1,
"page": 1,
"size": 10
}
}
Ambil detail file
Mengembalikan informasi detail tentang satu file. Gunakan endpoint ini untuk memantau status pemrosesan file.
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}
Request
|
curl -X GET "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}" \
--header "Authorization: Bearer $EAS_TOKEN"
|
Headers
|
|
Authorization string (Required)
Token otorisasi. Gunakan EAS_TOKEN Anda.
|
Path parameters
|
|
kb_id string (Required)
ID basis pengetahuan.
|
|
file_id string (Required)
ID file.
|
Contoh respons
{
"code": 200,
"message": "File query successful",
"data": {
"file_content_length": 0,
"status": "succeeded",
"file_source": null,
"failed_reason": null,
"file_name": "EAS模型服务概述.pdf",
"active": true,
"tenant_id": "__default_tenant_id__",
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS模型服务概述.pdf",
"created_at": "2026-02-27T07:30:10.875488Z",
"id": "2540b5414f2d422291cea3162eb8e1e0",
"file_extension": ".pdf",
"updated_at": "2026-02-27T07:30:10.875503Z",
"kb_id": "a4815ee728a64e9c83a3d891dbc1c956",
"file_size": 889027,
"file_metadata": {
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS模型服务概述.pdf",
"file_name": "EAS模型服务概述.pdf",
"file_size": 889027,
"file_extension": ".pdf",
"file_url": "http://rag-test-****.oss-cn-hangzhou.aliyuncs.com/pairag_knowledgebases%2Fa4815ee728a64e9c83a3d891dbc1c956%2Fdocs%2FEAS%E6%A8%A1%E5%9E%8B%E6%9C%8D%E5%8A%A1%E6%A6%82%E8%BF%B0.pdf?OSSAccessKeyId=******&Expires=1772181413&Signature=IME****MxJ7Ys2%2BMwckrZsNfg%3D"
},
"message_id": "tmp-1772177410",
"file_md5": "f4b60d2b9fd9edec06649ce7b5d65cb0",
"chunk_config": null,
"file_content": "",
"file_version": 1772177410
}
}
Proses ulang file
Memproses ulang file, misalnya file yang gagal diproses atau telah diperbarui. Ini adalah operasi asinkron yang membuat tugas pemrosesan baru dan mengatur ulang status file menjadi pending.
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}
Request
|
curl -X PUT "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}" \
--header "Authorization: Bearer $EAS_TOKEN" \
--header 'Content-Type: application/json' \
|
Header
|
|
Content-Type string (Required)
Tipe konten permintaan. Parameter ini harus diatur ke application/json.
|
|
Authorization string (Required)
Token autentikasi untuk permintaan. Gunakan EAS_TOKEN.
|
Path parameter
|
|
kb_id string (Required)
Identifier unik basis pengetahuan.
|
|
file_id string (Required)
Identifier unik file.
|
Contoh respons
{
"code": 200,
"message": "Successfully added 1 files to the reprocessing queue.",
"data": 1
}
Hapus file
Menghapus file dan chunk data serta indeks terkaitnya dari basis pengetahuan.
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}
Request
|
curl -X DELETE "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}" \
--header "Authorization: Bearer $EAS_TOKEN"
|
Headers
|
|
Authorization string (Required)
Token autentikasi. Gunakan EAS_TOKEN Anda.
|
Path parameters
|
|
kb_id string (Required)
Identifier unik untuk basis pengetahuan.
|
|
file_id string (Required)
Identifier unik untuk file.
|
Contoh respons
{
"code": 200,
"message": "Knowledge base file deleted successfully.",
"data": null
}
Manajemen chunk data
Daftar chunk file
Mengembalikan daftar chunk yang dipaginasi dari file tertentu.
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/chunks?page=1&size=10
Request
|
curl -X GET "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/chunks?page=1&size=10" \
--header "Authorization: Bearer $EAS_TOKEN"
|
Request headers
|
|
Authorization string (required)
Token yang digunakan untuk mengautentikasi permintaan. Gunakan EAS_TOKEN.
|
Path parameters
|
|
kb_id string (required)
Identifier unik basis pengetahuan.
|
|
file_id string (required)
Identifier unik file.
|
Query parameters
|
|
|
page int (optional)
Nomor halaman. Nilai default-nya adalah 1.
|
|
|
size int (optional)
Jumlah chunk per halaman. Nilai default-nya adalah 10.
|
|
Contoh respons
{
"code": 200,
"message": "Chunk list retrieval successful",
"data": {
"items": [
{
"active": true,
"text": "EAS model service overview******and other capabilities.\n\n",
"chunk_metadata": {
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS_model_service_overview.pdf",
"file_name": "EAS_model_service_overview.pdf",
"file_size": 889027,
"file_extension": ".pdf",
"page_bbox": "[{\"page_idx\":1, \"bbox\":[77.600088, 73.57552407360004, 551.0441759999999, 239.87664000000007]}]",
"token_count": 196,
"doc_id": "2540b5414f2d422291cea3162eb8e1e0",
"images_info": []
},
"file_id": "2540b5414f2d422291cea3162eb8e1e0",
"file_version": 0,
"index": 0,
"updated_at": "2026-02-27T07:42:00.167502Z",
"status": "succeeded",
"tenant_id": "__default_tenant_id__",
"id": "e2b0d936158f4656a6cacb5ab639de6d",
"file_part": 0,
"kb_id": "a4815ee728a64e9c83a3d891dbc1c956",
"created_at": "2026-02-27T07:42:00.167488Z"
}
],
"total": 1,
"pages": 1,
"page": 1,
"size": 10
}
}
Perbarui chunk
Memperbarui konten atau status chunk. Misalnya, Anda dapat memperbaiki secara manual teks yang tersegmentasi buruk atau menonaktifkan chunk agar tidak dimasukkan dalam pengambilan.
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/chunks/{chunk_id}
Request
|
curl -X PUT "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/chunks/{chunk_id}" \
--header "Authorization: Bearer $EAS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"text": "The updated text content of the chunk...",
"active": true
}'
|
Request headers
|
|
Authorization string (Required)
Token autentikasi untuk permintaan. Gunakan EAS_TOKEN.
|
|
Content-Type string (Required)
application/json
|
Path parameters
|
|
kb_id string (Required)
Identifier unik basis pengetahuan.
|
|
file_id string (Required)
Identifier unik file.
|
|
chunk_id string (Required)
Identifier unik chunk.
|
Request body
|
|
text string (Optional)
Konten teks terbaru untuk chunk.
|
|
active bool (Optional)
Menunjukkan apakah chunk aktif. Jika false, chunk tidak dimasukkan dalam pengambilan.
|
Contoh respons
{
"code": 200,
"message": "Chunk update successful",
"data": {
"active": true,
"text": "Updated chunk text content...",
"chunk_metadata": {
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS_model_service_overview.pdf",
"file_name": "EAS_model_service_overview.pdf",
"file_size": 889027,
"file_extension": ".pdf",
"page_bbox": "[{\"page_idx\":1, \"bbox\":[77.600088, 73.57552407360004, 551.0441759999999, 239.87664000000007]}]",
"token_count": 196,
"doc_id": "2540b5414f2d422291cea3162eb8e1e0"
},
"file_id": "2540b5414f2d422291cea3162eb8e1e0",
"file_version": 0,
"index": 0,
"updated_at": "2026-02-27T07:42:00.167502Z",
"status": "succeeded",
"tenant_id": "__default_tenant_id__",
"id": "e2b0d936158f4656a6cacb5ab639de6d",
"file_part": 0,
"kb_id": "a4815ee728a64e9c83a3d891dbc1c956",
"created_at": "2026-02-27T07:42:00.167488Z"
}
}
Kecualikan chunk
Gunakan operasi pembaruan untuk mengatur field active menjadi false.
Manajemen metadata
Metadata menambahkan informasi terstruktur ke dokumen Anda, memungkinkan penyaringan yang lebih tepat selama pengambilan. Misalnya, Anda dapat mengambil hanya dokumen yang diterbitkan oleh departemen IT setelah tahun 2024.
Definisikan field metadata
Menentukan skema untuk field metadata dalam basis pengetahuan, termasuk nama, tipe nilai, dan deskripsinya.
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata
Request
|
curl -X POST "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata" \
--header "Authorization: Bearer $EAS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"kb_id": "kb9594e2d2d2744bf1acd4227a9202b90b",
"name": "expire_period",
"value_type": "datetime",
"description": "Product expiration date"
}'
|
Headers
|
|
Authorization string (Required)
Token autentikasi untuk permintaan.
|
|
Content-Type string (Required)
application/json
|
Path parameters
|
|
kb_id string (Required)
ID basis pengetahuan.
|
Request body
|
|
kb_id string (Required)
ID basis pengetahuan.
|
|
name string (Required)
Nama tampilan field metadata. Harus terdiri dari 3 hingga 50 karakter.
|
|
value_type string (Required)
Tipe nilai field. Harus berupa string, number, atau datetime.
|
|
description string (Optional)
Deskripsi field metadata.
|
Contoh respons
{
"code": 200,
"message": "Metadata created successfully.",
"data": {
"value_type": "datetime",
"kb_id": "a4815ee728a64e9c83a3d891dbc1c956",
"created_at": "2026-02-27T07:49:19.964621Z",
"name": "expire_period",
"id": "d2b5ef3cf07d459da7b91b83dbb0a533",
"tenant_id": "__default_tenant_id__",
"description": "Product expiration date",
"updated_at": "2026-02-27T07:49:19.964632Z"
}
}
Daftar metadata
Menampilkan semua field metadata yang telah ditentukan untuk basis pengetahuan tertentu.
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata
Contoh respons
{
"code": 200,
"message": "Metadata listed successfully.",
"data": {
"items": [
{
"value_type": "datetime",
"kb_id": "a4815ee728a64e9c83a3d891dbc1c956",
"created_at": "2026-02-27T07:49:19.964621Z",
"name": "expire_period",
"id": "d2b5ef3cf07d459da7b91b83dbb0a533",
"tenant_id": "__default_tenant_id__",
"description": "Product expiration date",
"updated_at": "2026-02-27T07:49:19.964632Z",
"count": 0
}
],
"total": 1,
"pages": 1,
"page": 1,
"size": 20
}
}
Hapus metadata
Menghapus field metadata tertentu dari basis pengetahuan.
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata/{metadata_id}
Request
|
curl -X DELETE "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata/{metadata_id}" \
--header "Authorization: Bearer $EAS_TOKEN"
|
Headers
|
|
Authorization string (Required)
Token autentikasi untuk permintaan.
|
Path parameters
|
|
kb_id string (Required)
ID basis pengetahuan.
|
|
metadata_id string (Required)
ID field metadata yang akan dihapus.
|
Contoh respons
{
"code": 200,
"message": "Metadata deleted successfully.",
"data": null
}
Tetapkan metadata file
Menetapkan metadata untuk file tertentu. Penting: Operasi ini menggantikan semua metadata yang ada untuk file tersebut. Untuk memperbarui metadata tanpa kehilangan data, pertama-tama ambil nilai saat ini dengan permintaan GET, modifikasi nilainya, lalu kirimkan kembali set lengkap nilai tersebut dengan permintaan ini.
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/metadata
Request
|
curl -X POST "$EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/metadata" \
--header "Authorization: Bearer $EAS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"entries": [
{"name": "expire_period", "value": 1764574102000},
{"name": "category", "value": "food"},
{"name": "price", "value": 12}
]
}'
|
Headers
|
|
Authorization string (Required)
Token autentikasi untuk permintaan.
|
|
Content-Type string (Required)
application/json
|
Path parameters
|
|
kb_id string (Required)
ID basis pengetahuan.
|
|
file_id string (Required)
ID file.
|
Request body
|
|
entries array (Required)
Array entri metadata yang akan ditetapkan pada file.
Properties
name string (Required)
Nama field metadata yang telah ditentukan untuk basis pengetahuan.
value string/number (Required)
Nilai yang akan ditetapkan ke field metadata. Tipe nilai ini harus sesuai dengan value_type yang ditentukan untuk field tersebut.
|
Contoh respons
{
"code": 200,
"message": "File metadata set successfully.",
"data": {
"file_content_length": 0,
"status": "succeeded",
"file_source": null,
"failed_reason": null,
"file_name": "EAS_model_service_overview.pdf",
"active": true,
"tenant_id": "__default_tenant_id__",
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS_model_service_overview.pdf",
"created_at": "2026-02-27T07:30:10.875488Z",
"id": "2540b5414f2d422291cea3162eb8e1e0",
"file_extension": ".pdf",
"updated_at": "2026-02-27T07:41:59.360291Z",
"kb_id": "a4815ee728a64e9c83a3d891dbc1c956",
"file_size": 889027,
"file_metadata": {
"file_path": "a4815ee728a64e9c83a3d891dbc1c956/docs/EAS_model_service_overview.pdf",
"file_name": "EAS_model_service_overview.pdf",
"file_size": 889027,
"file_extension": ".pdf",
"expire_period": 1764574102000,
"category": "food"
},
"message_id": "tmp-1772177410",
"file_md5": "f4b60d2b9fd9edec06649ce7b5d65cb0",
"chunk_config": null,
"file_content": "",
"file_version": 1772178119
}
}
Retrieval API
Pengambilan hibrida (teks + vektor + penyaringan metadata)
Menjalankan pengambilan hibrida pada basis pengetahuan tertentu dengan menggabungkan teks, vektor, dan penyaringan metadata.
POST $EAS_SERVICE_URL/v1/retrieval
Request
|
curl -X POST "$EAS_SERVICE_URL/v1/retrieval" \
--header "Authorization: Bearer $EAS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"query": "recommendation system",
"knowledge_id": "kbdeec6a87e7b342b6a0da7e67a171fbb4",
"metadata_condition": {
"conditions": [
{"name": "department", "value": "i", "comparison_operator": "start with"},
{"name": "age", "value": "23", "comparison_operator": "<"}
],
"logical_operator": "and"
},
"retrieval_setting": {
"top_k": 2,
"score_threshold": 0.4
}
}'
|
Headers
|
|
Authorization string (required)
Token autentikasi untuk permintaan. Gunakan EAS_TOKEN.
|
|
Content-Type string (required)
application/json
|
Request body
|
|
query string (required)
Teks kueri.
|
|
knowledge_id string (required)
ID basis pengetahuan.
|
|
user_id string (optional)
Identifier unik untuk pengguna, digunakan untuk personalisasi atau pencatatan log.
|
|
metadata_condition object (optional)
Menentukan kondisi untuk penyaringan metadata, termasuk logical_operator dan array conditions.
Properties
logical_operator string (optional)
Operator logika untuk kondisi. Nilai default-nya adalah and. Nilai valid adalah and dan or.
conditions array (optional)
Array objek kondisi.
Properties
name string (required)
ID field metadata.
value string/number (required)
Nilai perbandingan.
comparison_operator string (required)
Operator perbandingan.
Nilai valid
-
empty: Memeriksa apakah field bernilai null atau string kosong.
-
not empty: Memeriksa apakah field memiliki nilai yang tidak kosong.
-
contains: Memeriksa apakah parameter nilai merupakan substring dari nilai string field.
-
not contains: Memeriksa apakah parameter nilai bukan substring dari nilai string field.
-
start with: Memeriksa apakah nilai string field diawali dengan parameter nilai.
-
end with: Memeriksa apakah nilai string field diakhiri dengan parameter nilai.
-
=: Sama dengan. Berlaku untuk tipe number dan datetime.
-
≠: Tidak sama dengan. Berlaku untuk tipe number dan datetime.
-
≥: Lebih besar dari atau sama dengan. Berlaku untuk tipe number dan datetime.
-
≤: Kurang dari atau sama dengan. Berlaku untuk tipe number dan datetime.
-
>: Lebih besar dari. Berlaku untuk tipe number dan datetime.
-
<: Kurang dari. Berlaku untuk tipe number dan datetime.
|
|
retrieval_setting object (optional)
Pengaturan per-permintaan yang menggantikan konfigurasi default basis pengetahuan.
Properties
top_k int (optional)
Jumlah chunk data paling relevan yang dikembalikan.
score_threshold float (optional)
Ambang batas skor kemiripan. Hanya chunk data dengan skor pada atau di atas ambang batas ini yang dikembalikan.
|
Contoh respons
{
"records": [
{
"content": "EasyRec is an easy-to-use recommendation framework...",
"score": 0.5892808330916407,
"title": "EasyRec.txt",
"metadata": {
"file_name": "EasyRec.txt",
"department": "it"
}
}
]
}
Konfigurasi sandbox kode
Buat atau perbarui sandbox
Request
|
curl -X POST "$EAS_SERVICE_URL/api/config/code_sandbox" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"type": "aliyun-fc",
"aliyun_id": "your-aliyun-id",
"interpreter_id": "your-interpreter-id",
"enabled": true
}'
|
Request headers
|
|
Content-Type string(Required)
Tipe konten permintaan. Parameter ini harus diatur ke application/json.
|
|
Authorization string(Required)
Token autentikasi untuk permintaan. Gunakan EAS_TOKEN Anda.
|
Request body
|
|
type string(Required)
Jenis sandbox. Atur ke aliyun-fc, karena hanya sandbox Alibaba Cloud Function Compute (FC) yang didukung saat ini.
|
|
aliyun_id string(Required)
ID akun Alibaba Cloud Anda.
|
|
interpreter_id string(Required)
ID interpreter kode.
|
|
enabled bool(Required)
Atur ke true untuk mengaktifkan sandbox, atau false untuk menonaktifkannya.
|
Ambil konfigurasi sandbox
curl -X GET "$EAS_SERVICE_URL/api/config/code_sandbox"
Konfigurasi FAQ
Base paths: /v1/config/apps (konfigurasi aplikasi), /v1/faq-retrieval (pengambilan FAQ)
Semua permintaan memerlukan otorisasi (misalnya, Authorization: Bearer YOUR_BEARER_TOKEN). Ganti {EAS_SERVICE_URL} dengan URL layanan aktual.
Aktifkan dan konfigurasi FAQ
Gunakan API Update application untuk mengaktifkan FAQ dan menerapkan konfigurasinya.
PUT {EAS_SERVICE_URL}/v1/config/apps/{id}
Request
|
curl -X PUT "$EAS_SERVICE_URL/v1/config/apps/{id}" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"app_id": "your_app_id",
"description": "Application description",
"model_id": "your_model_id",
"kb_ids": [],
"enable_faq": true,
"faq_config": {
"active": true,
"similarity_threshold": 0.8,
"embedding_model": "BAAI/bge-m3",
"enable_question_in_retrieval": true,
"enable_question_in_response": true,
"enable_answer_in_retrieval": false,
"enable_answer_in_response": true,
"return_direct": false
}
}'
|
Headers
|
|
Content-Type string (Required)
Tipe konten permintaan. Parameter ini harus diatur ke application/json.
|
|
Authorization string (Required)
Token otorisasi untuk permintaan. Gunakan EAS_TOKEN Anda.
|
Path parameters
|
|
id string (Required)
ID unik aplikasi. Dapatkan ID ini menggunakan API Query application.
|
Request body
|
|
app_id string (Required)
ID aplikasi.
|
|
description string (Optional)
Deskripsi aplikasi.
|
|
model_id string (Required)
ID model dasar.
|
|
kb_ids array (Optional)
Array ID basis pengetahuan yang terkait dengan aplikasi.
|
|
enable_faq bool (Optional)
Mengaktifkan atau menonaktifkan fitur FAQ.
|
|
faq_config object (Optional)
Konfigurasi FAQ.
Properties
active bool (Optional)
Mengaktifkan atau menonaktifkan konfigurasi FAQ ini.
similarity_threshold float (Optional)
Ambang batas kemiripan. Nilai antara 0,8 hingga 1,0 direkomendasikan.
embedding_model string (Optional)
ID model penyematan.
enable_question_in_retrieval bool (Optional)
Apakah pertanyaan dimasukkan dalam proses pengambilan.
enable_question_in_response bool (Optional)
Apakah pertanyaan dimasukkan dalam respons.
enable_answer_in_retrieval bool (Optional)
Apakah jawaban dimasukkan dalam proses pengambilan.
enable_answer_in_response bool (Optional)
Apakah jawaban dimasukkan dalam respons.
return_direct bool (Optional)
Apakah output alat dikembalikan langsung, tanpa pemrosesan LLM.
|
Query aplikasi
curl -X GET "$EAS_SERVICE_URL/v1/config/apps?app_id=your_app_id" \
-H "Authorization: Bearer $EAS_TOKEN"
app_id diperoleh sebagai berikut. Pada halaman konfigurasi aplikasi di konsol, pilih tab Chat Application, temukan nilai ID aplikasi (misalnya chatbot) pada field App ID yang diperlukan, lalu gunakan sebagai nilai parameter app_id dalam permintaan.
Buat FAQ
curl -X POST "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"question": "How do I reset my password?",
"answer": "On the sign-in page, click '\''Forgot Password'\'' and follow the prompts.",
"active": true
}'
Daftar FAQ
curl -X GET "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs?page=1&size=100" \
-H "Authorization: Bearer $EAS_TOKEN"
Perbarui FAQ
curl -X PUT "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs/{faq_item_id}" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"question": "How do I change my password?",
"answer": "After signing in, go to Account Settings > Security to change your password.",
"active": true
}'
Hapus FAQ
curl -X DELETE "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs/{faq_item_id}" \
-H "Authorization: Bearer $EAS_TOKEN"
Unggah file FAQ secara massal
Permintaan ini menggunakan multipart/form-data. Unggah satu atau beberapa file menggunakan field files. Anda dapat secara opsional memberikan string JSON table_config untuk memetakan header dan indeks kolom. Jenis file yang didukung adalah .xlsx dan .xls.
curl -X POST "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faq-files" \
-H "Authorization: Bearer $EAS_TOKEN" \
-F 'files=@/path/to/faq.xlsx' \
-F 'table_config={"header_index_max":0,"question_column_index":0,"answer_column_index":1}'
Parameter table_config:
-
header_index_max: Indeks berbasis nol dari baris header terakhir. Untuk satu baris header, atur ke 0.
-
question_column_index: Indeks berbasis nol dari kolom pertanyaan.
-
answer_column_index: Indeks berbasis nol dari kolom jawaban.
Pengambilan FAQ (mandiri)
Mengambil hasil FAQ untuk kueri secara langsung tanpa memulai percakapan.
curl -X POST "$EAS_SERVICE_URL/v1/faq-retrieval" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"chatapp_id": "your_app_id",
"query": "User'\''s input query"
}'
Field permintaan opsional: user_id dan retrieval_setting (misalnya, top_k, similarity_threshold). Jika retrieval_setting dihilangkan, konfigurasi FAQ default aplikasi akan digunakan.