Skip to main content
Basis Pengetahuan (RAG)

API Basis Pengetahuan

Alibaba Cloud Model Studio menyediakan API terbuka yang memungkinkan Anda mengintegrasikannya dengan sistem bisnis yang sudah ada, mengotomatiskan operasi, serta memenuhi kebutuhan pengambilan (retrieval) yang kompleks.

Prasyarat

  1. Untuk mengelola basis pengetahuan melalui API, Pengguna RAM harus memiliki izin API (kebijakan AliyunBailianDataFullAccess) dan bergabung ke ruang kerja. Persyaratan ini tidak berlaku untuk Akun Alibaba Cloud.
    Pengguna RAM hanya dapat mengelola basis pengetahuan di ruang kerja tempat mereka bergabung. Akun Alibaba Cloud dapat mengelola basis pengetahuan di semua ruang kerja.
  2. Instal versi terbaru dari Alibaba Cloud Model Studio SDK untuk memanggil API basis pengetahuan. Untuk petunjuk instalasi, lihat Referensi Pengembangan SDK Alibaba Cloud.
    Jika SDK tidak memenuhi kebutuhan Anda, Anda dapat memanggil API basis pengetahuan melalui permintaan HTTP menggunakan mekanisme tanda tangan. Untuk detail koneksi, lihat Ikhtisar API.
  3. Dapatkan ID AccessKey dan Secret AccessKey, serta ID ruang kerja. Konfigurasikan ketiganya sebagai variabel lingkungan sistem untuk menjalankan kode contoh. Contoh berikut menunjukkan cara mengatur variabel tersebut di Linux:
    Jika Anda menggunakan IDE atau plugin pengembangan lainnya, konfigurasikan variabel ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, dan WORKSPACE_ID di lingkungan pengembangan Anda.
export ALIBABA_CLOUD_ACCESS_KEY_ID='Your AccessKey ID'
export ALIBABA_CLOUD_ACCESS_KEY_SECRET='Your AccessKey Secret'
export WORKSPACE_ID='Your Alibaba Cloud Model Studio workspace ID'
  1. Siapkan dokumen pengetahuan contoh Alibaba Cloud Model Studio Phone Introduction.docx untuk membuat basis pengetahuan.
  • Buat basis pengetahuan
  • Ambil dari basis pengetahuan
  • Perbarui basis pengetahuan
  • Kelola basis pengetahuan
  • Sebelum memanggil contoh ini, lengkapi prasyarat dan pastikan pengguna RAM memiliki kebijakan AliyunBailianDataFullAccess.
  • Jika Anda menggunakan IDE atau plugin pengembangan lainnya, atur variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, dan WORKSPACE_ID di lingkungan pengembangan Anda.
Python
# Kode contoh ini hanya untuk referensi. Jangan gunakan dalam lingkungan produksi.
import hashlib
import os
import time

import requests
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models

def check_environment_variables():
    """Memverifikasi bahwa variabel lingkungan yang diperlukan telah diatur."""
    required_vars = {
        'ALIBABA_CLOUD_ACCESS_KEY_ID': 'Alibaba Cloud AccessKey ID',
        'ALIBABA_CLOUD_ACCESS_KEY_SECRET': 'Alibaba Cloud AccessKey Secret',
        'WORKSPACE_ID': 'Alibaba Cloud Model Studio workspace ID'
    }
    missing_vars = []
    for var, description in required_vars.items():
        if not os.environ.get(var):
            missing_vars.append(var)
            print(f"Error: Silakan atur variabel lingkungan {var} ({description}).")

    return len(missing_vars) == 0

def calculate_md5(file_path: str) -> str:
    """
    Menghitung hash MD5 dari file.

    Args:
        file_path (str): Jalur lokal file.

    Returns:
        str: Hash MD5 file.
    """
    md5_hash = hashlib.md5()

    # Baca file dalam mode biner.
    with open(file_path, "rb") as f:
        # Baca file dalam potongan untuk menghemat memori saat memproses file besar.
        for chunk in iter(lambda: f.read(4096), b""):
            md5_hash.update(chunk)

    return md5_hash.hexdigest()

def get_file_size(file_path: str) -> int:
    """
    Mengembalikan ukuran file dalam byte.
    Args:
        file_path (str): Jalur lokal file.
    Returns:
        int: Ukuran file dalam byte.
    """
    return os.path.getsize(file_path)

# Inisialisasi klien.
def create_client() -> bailian20231229Client:
    """
    Membuat dan mengonfigurasi klien.

    Returns:
        bailian20231229Client: Klien yang telah dikonfigurasi.
    """
    config = open_api_models.Config(
        access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
    )
    # Titik akhir ini untuk wilayah Asia Pasifik SE 1 (Singapura). Ubah jika Anda menggunakan wilayah berbeda.
    config.endpoint = 'bailian.ap-southeast-1.aliyuncs.com'
    return bailian20231229Client(config)

# Meminta sewa unggah file.
def apply_lease(client, category_id, file_name, file_md5, file_size, workspace_id):
    """
    Meminta sewa unggah file dari layanan Model Studio.

    Args:
        client (bailian20231229Client): Klien.
        category_id (str): ID kategori.
        file_name (str): Nama file.
        file_md5 (str): Hash MD5 file.
        file_size (int): Ukuran file dalam byte.
        workspace_id (str): ID ruang kerja.

    Returns:
        Respons dari layanan Model Studio.
    """
    headers = {}
    request = bailian_20231229_models.ApplyFileUploadLeaseRequest(
        file_name=file_name,
        md_5=file_md5,
        size_in_bytes=file_size,
    )
    runtime = util_models.RuntimeOptions()
    return client.apply_file_upload_lease_with_options(category_id, workspace_id, request, headers, runtime)

# Unggah file ke penyimpanan sementara.
def upload_file(pre_signed_url, headers, file_path):
    """
    Mengunggah file ke URL yang ditandatangani sebelumnya dari sewa unggah.
    Args:
        pre_signed_url (str): URL dari sewa unggah.
        headers (dict): Header permintaan untuk unggahan.
        file_path (str): Jalur lokal file.
    """
    with open(file_path, 'rb') as f:
        file_content = f.read()
    upload_headers = {
        "X-bailian-extra": headers["X-bailian-extra"],
        "Content-Type": headers["Content-Type"]
    }
    response = requests.put(pre_signed_url, data=file_content, headers=upload_headers)
    response.raise_for_status()

# Tambahkan file ke kategori.
def add_file(client: bailian20231229Client, lease_id: str, parser: str, category_id: str, workspace_id: str):
    """
    Menambahkan file ke kategori tertentu dalam layanan Model Studio.

    Args:
        client (bailian20231229Client): Klien.
        lease_id (str): ID sewa.
        parser (str): Parser untuk file.
        category_id (str): ID kategori.
        workspace_id (str): ID ruang kerja.

    Returns:
        Respons dari layanan Model Studio.
    """
    headers = {}
    request = bailian_20231229_models.AddFileRequest(
        lease_id=lease_id,
        parser=parser,
        category_id=category_id,
    )
    runtime = util_models.RuntimeOptions()
    return client.add_file_with_options(workspace_id, request, headers, runtime)

# Kueri status parsing file.
def describe_file(client, workspace_id, file_id):
    """
    Mendapatkan informasi dasar tentang file.

    Args:
        client (bailian20231229Client): Klien.
        workspace_id (str): ID ruang kerja.
        file_id (str): ID file.

    Returns:
        Respons dari layanan Model Studio.
    """
    headers = {}
    runtime = util_models.RuntimeOptions()
    return client.describe_file_with_options(workspace_id, file_id, headers, runtime)

# Inisialisasi basis pengetahuan (indeks).
def create_index(client, workspace_id, file_id, name, structure_type, source_type, sink_type):
    """
    Membuat basis pengetahuan (menginisialisasi indeks) dalam layanan Model Studio.

    Args:
        client (bailian20231229Client): Klien.
        workspace_id (str): ID ruang kerja.
        file_id (str): ID file.
        name (str): Nama basis pengetahuan.
        structure_type (str): Tipe data basis pengetahuan.
        source_type (str): Tipe sumber data. Misalnya, skrip menggunakan 'DATA_CENTER_FILE'.
        sink_type (str): Tipe penyimpanan vektor untuk basis pengetahuan.

    Returns:
        Respons dari layanan Model Studio.
    """
    headers = {}
    request = bailian_20231229_models.CreateIndexRequest(
        structure_type=structure_type,
        name=name,
        source_type=source_type,
        sink_type=sink_type,
        document_ids=[file_id]
    )
    runtime = util_models.RuntimeOptions()
    return client.create_index_with_options(workspace_id, request, headers, runtime)

# Kirim tugas pengindeksan.
def submit_index(client, workspace_id, index_id):
    """
    Mengirimkan tugas pengindeksan ke layanan Model Studio.

    Args:
        client (bailian20231229Client): Klien.
        workspace_id (str): ID ruang kerja.
        index_id (str): ID basis pengetahuan.

    Returns:
        Respons dari layanan Model Studio.
    """
    headers = {}
    submit_index_job_request = bailian_20231229_models.SubmitIndexJobRequest(
        index_id=index_id
    )
    runtime = util_models.RuntimeOptions()
    return client.submit_index_job_with_options(workspace_id, submit_index_job_request, headers, runtime)

# Dapatkan status tugas pengindeksan.
def get_index_job_status(client, workspace_id, job_id, index_id):
    """
    Menanyakan status tugas pengindeksan.

    Args:
        client (bailian20231229Client): Klien.
        workspace_id (str): ID ruang kerja.
        index_id (str): ID basis pengetahuan.
        job_id (str): ID tugas pengindeksan.

    Returns:
        Respons dari layanan Model Studio.
    """
    headers = {}
    get_index_job_status_request = bailian_20231229_models.GetIndexJobStatusRequest(
        index_id=index_id,
        job_id=job_id
    )
    runtime = util_models.RuntimeOptions()
    return client.get_index_job_status_with_options(workspace_id, get_index_job_status_request, headers, runtime)

def create_knowledge_base(
        file_path: str,
        workspace_id: str,
        name: str
):
    """
    Membuat basis pengetahuan di Model Studio.
    Args:
        file_path (str): Jalur lokal file.
        workspace_id (str): ID ruang kerja.
        name (str): Nama basis pengetahuan.
    Returns:
        str atau None: ID basis pengetahuan jika berhasil, atau None jika gagal.
    """
    # Atur nilai default.
    category_id = 'default'
    parser = 'DASHSCOPE_DOCMIND'
    source_type = 'DATA_CENTER_FILE'
    structure_type = 'unstructured'
    sink_type = 'DEFAULT'
    try:
        # Langkah 1: Inisialisasi klien.
        print("Langkah 1: Menginisialisasi klien...")
        client = create_client()
        # Langkah 2: Siapkan informasi file.
        print("Langkah 2: Menyiapkan informasi file...")
        file_name = os.path.basename(file_path)
        file_md5 = calculate_md5(file_path)
        file_size = get_file_size(file_path)
        # Langkah 3: Meminta sewa unggah.
        print("Langkah 3: Meminta sewa unggah dari Model Studio...")
        lease_response = apply_lease(client, category_id, file_name, file_md5, file_size, workspace_id)
        lease_id = lease_response.body.data.file_upload_lease_id
        upload_url = lease_response.body.data.param.url
        upload_headers = lease_response.body.data.param.headers
        # Langkah 4: Unggah file.
        print("Langkah 4: Mengunggah file ke Model Studio...")
        upload_file(upload_url, upload_headers, file_path)
        # Langkah 5: Tambahkan file ke server.
        print("Langkah 5: Menambahkan file ke Model Studio...")
        add_response = add_file(client, lease_id, parser, category_id, workspace_id)
        file_id = add_response.body.data.file_id
        # Langkah 6: Periksa status file.
        print("Langkah 6: Memeriksa status file di Model Studio...")
        while True:
            describe_response = describe_file(client, workspace_id, file_id)
            status = describe_response.body.data.status
            print(f"Status file saat ini: {status}")
            if status == 'INIT':
                print("File menunggu parsing. Harap tunggu...")
            elif status == 'PARSING':
                print("File sedang diparsing. Harap tunggu...")
            elif status == 'PARSE_SUCCESS':
                print("File berhasil diparsing!")
                break
            else:
                print(f"Status file tidak dikenal: {status}. Harap hubungi dukungan teknis.")
                return None
            time.sleep(5)
        # Langkah 7: Inisialisasi basis pengetahuan.
        print("Langkah 7: Menginisialisasi basis pengetahuan di Model Studio...")
        index_response = create_index(client, workspace_id, file_id, name, structure_type, source_type, sink_type)
        index_id = index_response.body.data.id
        # Langkah 8: Kirim tugas pengindeksan.
        print("Langkah 8: Mengirimkan tugas pengindeksan ke Model Studio...")
        submit_response = submit_index(client, workspace_id, index_id)
        job_id = submit_response.body.data.id
        # Langkah 9: Dapatkan status tugas pengindeksan.
        print("Langkah 9: Mendapatkan status tugas pengindeksan dari Model Studio...")
        while True:
            get_index_job_status_response = get_index_job_status(client, workspace_id, job_id, index_id)
            status = get_index_job_status_response.body.data.status
            print(f"Status tugas pengindeksan saat ini: {status}")
            if status == 'COMPLETED':
                break
            time.sleep(5)
        print("Basis pengetahuan Model Studio berhasil dibuat!")
        return index_id
    except Exception as e:
        print(f"Terjadi kesalahan: {e}")
        return None

def main():
    if not check_environment_variables():
        print("Pemeriksaan variabel lingkungan gagal.")
        return
    file_path = input("Masukkan jalur lokal file yang akan diunggah (misalnya, /path/to/file.docx): ")
    kb_name = input("Masukkan nama untuk basis pengetahuan Anda: ")
    workspace_id = os.environ.get('WORKSPACE_ID')
    create_knowledge_base(file_path, workspace_id, kb_name)

if __name__ == '__main__':
    main()

Create a knowledge base

Buat basis pengetahuan pencarian dokumen di ruang kerja yang ditentukan.

1. Initialize client

Untuk mengunggah file dan membuat basis pengetahuan, pertama-tama inisialisasi klien. Gunakan AccessKey dan AccessKey Secret Anda untuk memverifikasi identitas dan mengonfigurasi endpoint.
  • Public endpoints
    Klien Anda harus memiliki akses internet.
    • Public cloud: bailian.ap-southeast-1.aliyuncs.com
  • VPC endpoints
    Jika klien Anda dideploy di public cloud di wilayah Alibaba Cloud Singapura (ap-southeast-1) dan berada dalam VPC, Anda dapat menggunakan endpoint VPC berikut. Akses lintas wilayah tidak didukung.
    • Public cloud: bailian-vpc.ap-southeast-1.aliyuncs.com
Inisialisasi klien mengembalikan objek Client untuk panggilan API selanjutnya.
Python
def create_client() -> bailian20231229Client:
    """
    Membuat dan mengonfigurasi klien.

    Mengembalikan:
        bailian20231229Client: Klien yang telah dikonfigurasi.
    """
    config = open_api_models.Config(
        access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
    )
    # Titik akhir berikut ini adalah contoh titik akhir publik untuk cloud publik. Anda dapat mengubah titik akhir sesuai kebutuhan.
    config.endpoint = 'bailian.ap-southeast-1.aliyuncs.com'
    return bailian20231229Client(config)

2. Upload knowledge base files

2.1. Request a file upload lease

Sebelum membuat basis pengetahuan, unggah file sumbernya ke ruang kerja yang sama. Untuk melakukannya, panggil operasi ApplyFileUploadLease untuk meminta sewa unggah file. Sewa ini merupakan otorisasi sementara untuk mengunggah file dan berlaku selama beberapa menit.
  • workspace_id: Lihat Cara mendapatkan ID ruang kerja.
  • category_id: Dalam contoh ini, gunakan default. Model Studio menggunakan kategori untuk mengelola file yang Anda unggah. Sistem secara otomatis membuat kategori default. Anda juga dapat memanggil API AddCategory untuk membuat kategori baru dan mendapatkan category_id yang sesuai.
  • file_name: Masukkan nama file yang diunggah, termasuk ekstensinya. Nilainya harus sesuai dengan nama file sebenarnya. Misalnya, saat Anda mengunggah file seperti pada gambar, gunakan Alibaba_Cloud_Model_Studio_Mobile_Phone_Series_Introduction.docx.
    image
  • file_md5: Masukkan hash MD5 dari file yang akan diunggah. Saat ini, Alibaba Cloud tidak memverifikasi nilai ini, sehingga memudahkan pengunggahan file dari URL.
    Di Python, Anda bisa mendapatkan hash MD5 dengan menggunakan modul hashlib. Untuk bahasa lainnya, lihat kode contoh lengkap.
    import hashlib
    
    def calculate_md5(file_path):
        """
        Calculate the MD5 hash of a file.
    
        Args:
            file_path (str): The local path of the file.
    
        Returns:
            str: The MD5 hash of the file.
        """
        md5_hash = hashlib.md5()
    
        # Read the file in binary mode.
        with open(file_path, "rb") as f:
            # Read the file in chunks to avoid high memory usage for large files.
            for chunk in iter(lambda: f.read(4096), b""):
                md5_hash.update(chunk)
    
        return md5_hash.hexdigest()
    
    # Example usage
    file_path = "Ganti dengan path lokal aktual file yang akan diunggah, misalnya /path/to/your/Alibaba Cloud Model Studio Product Overview.docx"
    md5_value = calculate_md5(file_path)
    print(f"The MD5 hash of the file is: {md5_value}")
    
    Ganti variabel file_path dalam kode dengan path lokal aktual file tersebut dan jalankan kode untuk mendapatkan hash MD5 file target. Berikut adalah contoh nilainya:
    The MD5 hash of the file is: 2ef7361ea907f3a1b91e3b9936f5643a
    
  • file_size: Masukkan ukuran file yang akan diunggah dalam byte.
    Di Python, Anda bisa mendapatkan nilai ini dengan menggunakan modul os. Untuk bahasa lainnya, lihat kode contoh lengkap.
    import os
    
    def get_file_size(file_path: str) -> int:
        """
        Get the size of a file in bytes.
    
        Args:
            file_path (str): The actual local path of the file.
    
        Returns:
            int: The file size in bytes.
        """
        return os.path.getsize(file_path)
    
    # Example usage
    file_path = "Ganti dengan path lokal aktual file yang akan diunggah, misalnya /path/to/your/Alibaba Cloud Model Studio Product Overview.docx"
    file_size = get_file_size(file_path)
    print(f"The size of the file in bytes is: {file_size}")
    
    Ganti variabel file_path dengan path lokal aktual file tersebut dan jalankan kode untuk mendapatkan ukuran file target dalam byte. Berikut adalah contoh nilainya:
    The size of the file in bytes is: 14015
    
Permintaan sewa unggah sementara yang berhasil akan mengembalikan hal berikut:
  • Sekumpulan parameter unggah sementara:
    • Data.FileUploadLeaseId
    • Data.Param.Method
    • X-bailian-extra dalam Data.Param.Headers
    • Content-Type dalam Data.Param.Headers
  • URL unggah sementara:Data.Param.Url
  • Sebelum memanggil operasi ini, RAM user harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess).
  • Operasi ini mendukung debugging online dan pembuatan kode contoh untuk berbagai bahasa.
Python
def apply_lease(client, category_id, file_name, file_md5, file_size, workspace_id):
    """
    Request a file upload lease from Alibaba Cloud Model Studio.

    Args:
        client (bailian20231229Client): The client.
        category_id (str): The category ID.
        file_name (str): The file name.
        file_md5 (str): The MD5 hash of the file.
        file_size (int): The file size in bytes.
        workspace_id (str): The workspace ID.

    Returns:
        The response from Alibaba Cloud Model Studio.
    """
    headers = {}
    request = bailian_20231229_models.ApplyFileUploadLeaseRequest(
        file_name=file_name,
        md_5=file_md5,
        size_in_bytes=file_size,
    )
    runtime = util_models.RuntimeOptions()
    return client.apply_file_upload_lease_with_options(category_id, workspace_id, request, headers, runtime)
{
  "CategoryId": "default",
  "FileName": "Alibaba Cloud Model Studio Product Overview.docx",
  "Md5": "2ef7361ea907f3a1b91e3b9936f5643a",
  "SizeInBytes": "14015",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "RequestId": "778C0B3B-59C2-5FC1-A947-36EDD1XXXXXX",
  "Success": true,
  "Message": "",
  "Code": "success",
  "Status": "200",
  "Data": {
    "FileUploadLeaseId": "1e6a159107384782be5e45ac4759b247.1719325231035",
    "Type": "HTTP",
    "Param": {
      "Method": "PUT",
      "Url": "https://bailian-datahub-data-origin-prod.oss-cn-hangzhou.aliyuncs.com/1005426495169178/10024405/68abd1dea7b6404d8f7d7b9f7fbd332d.1716698936847.pdf?Expires=1716699536&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
      "Headers": "        \"X-bailian-extra\": \"MTAwNTQyNjQ5NTE2OTE3OA==\",\n        \"Content-Type\": \"application/pdf\""
    }
  }
}

2.2. Upload file to temporary storage

Dengan sewa unggah tersebut, gunakan parameter dan URL unggah sementara untuk mengunggah file dari penyimpanan lokal atau URL yang dapat diakses publik ke server Model Studio. Setiap ruang kerja mendukung hingga 10.000 file. Format yang didukung mencakup PDF, DOCX, DOC, TXT, Markdown, PPTX, PPT, XLSX, XLS, HTML, PNG, JPG, JPEG, BMP, dan GIF.
  • pre_signed_url: Tentukan Data.Param.Url dari respons API Request a file upload lease.
    Ini adalah URL yang ditandatangani dan tidak mendukung unggahan FormData. Anda harus mengunggah file dalam format biner. Untuk detailnya, lihat kode contoh.
Contoh ini tidak mendukung debugging online atau pembuatan kode contoh.
  • Local upload
  • URL upload
Python
import requests
from urllib.parse import urlparse

def upload_file(pre_signed_url, file_path):
    """
    Upload a local file to temporary storage.

    Args:
        pre_signed_url (str): The URL from the upload lease.
        file_path (str): The local path of the file.

    Returns:
        The response from Alibaba Cloud Model Studio.
    """
    try:
        # Set the request headers.
        headers = {
            "X-bailian-extra": "Ganti dengan nilai bidang X-bailian-extra dalam Data.Param.Headers yang dikembalikan oleh operasi ApplyFileUploadLease pada langkah sebelumnya.",
            "Content-Type": "Ganti dengan nilai bidang Content-Type dalam Data.Param.Headers yang dikembalikan oleh operasi ApplyFileUploadLease pada langkah sebelumnya. Jika dikembalikan nilai null, berikan nilai null."
        }

        # Read and upload the file.
        with open(file_path, 'rb') as file:
            # Metode permintaan untuk unggah file harus sama dengan nilai bidang Method dalam Data.Param yang dikembalikan oleh operasi ApplyFileUploadLease pada langkah sebelumnya.
            response = requests.put(pre_signed_url, data=file, headers=headers)

        # Periksa kode status respons.
        if response.status_code == 200:
            print("File uploaded successfully.")
        else:
            print(f"Failed to upload the file. ResponseCode: {response.status_code}")

    except Exception as e:
        print(f"An error occurred: {str(e)}")

if __name__ == "__main__":

    pre_signed_url_or_http_url = "Ganti dengan nilai bidang Url dalam Data.Param yang dikembalikan oleh operasi ApplyFileUploadLease pada langkah sebelumnya."

    # Unggah file lokal ke penyimpanan sementara.
    file_path = "Ganti dengan path lokal aktual file yang akan diunggah, misalnya di Linux: /path/to/your/Alibaba Cloud Model Studio Product Overview.docx"
    upload_file(pre_signed_url_or_http_url, file_path)

2.3. Add file to a category

Setelah mengunggah file, tambahkan file tersebut ke kategori dalam ruang kerja yang sama dengan memanggil operasi AddFile.
  • parser: Tentukan DASHSCOPE_DOCMIND.
  • lease_id: Atur parameter ini ke Data.FileUploadLeaseId yang dikembalikan saat Anda meminta sewa unggah file.
  • category_id: Dalam contoh ini, gunakan default. Jika Anda menggunakan kategori khusus untuk unggahan, Anda harus memberikan category_id yang sesuai.
    CategoryId yang diberikan di sini harus sesuai dengan CategoryId yang digunakan dalam langkah Apply for a file upload lease. Jika tidak, Anda akan menerima error Category is mismatched.
Setelah Anda menambahkan file, Model Studio mengembalikan FileId untuk file tersebut dan secara otomatis mulai menguraikannya. lease_id segera tidak berlaku. Jangan gunakan kembali ID sewa yang sama untuk pengiriman lain.
  • Sebelum memanggil operasi ini, RAM user harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess).
  • Operasi ini mendukung debugging online dan pembuatan kode contoh untuk berbagai bahasa.
Python
def add_file(client: bailian20231229Client, lease_id: str, parser: str, category_id: str, workspace_id: str):
    """
    Add a file to a specified category in Alibaba Cloud Model Studio.

    Args:
        client (bailian20231229Client): The client.
        lease_id (str): The lease ID.
        parser (str): The parser for the file.
        category_id (str): The category ID.
        workspace_id (str): The workspace ID.

    Returns:
        The response from Alibaba Cloud Model Studio.
    """
    headers = {}
    request = bailian_20231229_models.AddFileRequest(
        lease_id=lease_id,
        parser=parser,
        category_id=category_id,
    )
    runtime = util_models.RuntimeOptions()
    return client.add_file_with_options(workspace_id, request, headers, runtime)
{
  "CategoryId": "default",
  "LeaseId": "d92bd94fa9b54326a2547415e100c9e2.1742195250069",
  "Parser": "DASHSCOPE_DOCMIND",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "Status": "200",
  "Message": "",
  "RequestId": "5832A1F4-AF91-5242-8B75-35BDC9XXXXXX",
  "Data": {
    "FileId": "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx",
    "Parser": "DASHSCOPE_DOCMIND"
  },
  "Code": "Success",
  "Success": "true"
}

2.4. Query file parsing status

File tidak dapat digunakan dalam basis pengetahuan sampai selesai diurai. Selama jam sibuk, proses ini dapat memakan waktu beberapa jam. Anda dapat memanggil operasi DescribeFile untuk menanyakan status penguraiannya.Jika bidang Data.Status bernilai PARSE_SUCCESS, file telah berhasil diurai dan Anda dapat mengimpornya ke basis pengetahuan.
  • Sebelum memanggil operasi ini, RAM user harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess atau AliyunBailianDataReadOnlyAccess).
  • Operasi ini mendukung debugging online dan pembuatan kode contoh untuk berbagai bahasa.
Python
def describe_file(client, workspace_id, file_id):
    """
    Get the basic information of a file.

    Args:
        client (bailian20231229Client): The client.
        workspace_id (str): The workspace ID.
        file_id (str): The file ID.

    Returns:
        The response from Alibaba Cloud Model Studio.
    """
    headers = {}
    runtime = util_models.RuntimeOptions()
    return client.describe_file_with_options(workspace_id, file_id, headers, runtime)
{
  "FileId": "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "Status": "200",
  "Message": "",
  "RequestId": "B9246251-987A-5628-8E1E-17BB39XXXXXX",
  "Data": {
    "CategoryId": "cate_206ea350f0014ea4a324adff1ca13011_10xxxxxx",
    "Status": "PARSE_SUCCESS",
    "FileType": "docx",
    "CreateTime": "2025-03-17 15:47:13",
    "FileName": "Alibaba Cloud Model Studio Product Overview.docx",
    "FileId": "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx",
    "SizeInBytes": "14015",
    "Parser": "DASHSCOPE_DOCMIND"
  },
  "Code": "Success",
  "Success": "true"
}

3. Create a knowledge base

3.1. Initialize knowledge base

Setelah file diurai, Anda dapat membuat basis pengetahuan darinya di ruang kerja yang sama. Untuk memulai, panggil operasi CreateIndex untuk menginisialisasi (namun belum menyelesaikan) basis pengetahuan pengambilan dokumen.
  • workspace_id: Lihat Cara mendapatkan ID ruang kerja.
  • file_id: Tentukan FileId yang dikembalikan oleh API saat Anda menambahkan file ke kategori.
    Jika source_type diatur ke DATA_CENTER_FILE, parameter ini wajib diisi, dan API akan mengembalikan error jika tidak ditentukan.
  • structure_type: Dalam contoh ini, gunakan unstructured.
  • source_type: Dalam contoh ini, gunakan DATA_CENTER_FILE.
  • sink_type: Dalam contoh ini, tentukan BUILT_IN.
Nilai bidang Data.Id yang dikembalikan oleh API ini adalah ID basis pengetahuan, yang digunakan untuk pembuatan indeks selanjutnya.
Simpan ID basis pengetahuan dengan aman, karena diperlukan untuk semua operasi API selanjutnya terkait basis pengetahuan ini.
  • Sebelum memanggil operasi ini, RAM user harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess).
  • Operasi ini mendukung debugging online dan pembuatan kode contoh untuk berbagai bahasa.
Python
def create_index(client, workspace_id, file_id, name, structure_type, source_type, sink_type):
    """
    Create (initialize) a knowledge base in Alibaba Cloud Model Studio.

    Args:
        client (bailian20231229Client): The client.
        workspace_id (str): The workspace ID.
        file_id (str): The file ID.
        name (str): The name of the knowledge base.
        structure_type (str): The data structure type of the knowledge base.
        source_type (str): The data source type. Category and file types are supported.
        sink_type (str): The vector storage type of the knowledge base.

    Returns:
        The response from Alibaba Cloud Model Studio.
    """
    headers = {}
    request = bailian_20231229_models.CreateIndexRequest(
        structure_type=structure_type,
        name=name,
        source_type=source_type,
        sink_type=sink_type,
        document_ids=[file_id]
    )
    runtime = util_models.RuntimeOptions()
    return client.create_index_with_options(workspace_id, request, headers, runtime)
{
  "Name": "Alibaba Cloud Model Studio Phone Knowledge Base",
  "SinkType": "BUILT_IN",
  "SourceType": "DATA_CENTER_FILE",
  "StructureType": "unstructured",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx",
  "DocumentIds": [
    "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx"
  ]
}
{
  "Status": "200",
  "Message": "success",
  "RequestId": "87CB0999-F1BB-5290-8C79-A875B2XXXXXX",
  "Data": {
    "Id": "mymxbdxxxx"
  },
  "Code": "Success",
  "Success": "true"
}

3.2. Submit an index job

Setelah menginisialisasi basis pengetahuan, panggil operasi SubmitIndexJob untuk memulai proses pembuatan indeks.Setelah pengiriman selesai, Model Studio segera memulai pembuatan indeks sebagai tugas asinkron. Data.Id yang dikembalikan oleh pemanggilan API ini adalah ID tugas yang sesuai. Anda akan menggunakan ID ini pada langkah berikutnya untuk menanyakan status terbaru tugas tersebut.
  • Sebelum memanggil operasi ini, RAM user harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess).
  • Operasi ini mendukung debugging online dan pembuatan kode contoh untuk berbagai bahasa.
Python
def submit_index(client, workspace_id, index_id):
    """
    Submit an index job to Alibaba Cloud Model Studio.

    Args:
        client (bailian20231229Client): The client.
        workspace_id (str): The workspace ID.
        index_id (str): The knowledge base ID.

    Returns:
        The response from Alibaba Cloud Model Studio.
    """
    headers = {}
    submit_index_job_request = bailian_20231229_models.SubmitIndexJobRequest(
        index_id=index_id
    )
    runtime = util_models.RuntimeOptions()
    return client.submit_index_job_with_options(workspace_id, submit_index_job_request, headers, runtime)
{
  "IndexId": "mymxbdxxxx",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "Status": "200",
  "Message": "success",
  "RequestId": "7774575F-571D-5854-82C2-634AB8XXXXXX",
  "Data": {
    "IndexId": "mymxbdxxxx",
    "Id": "3cd6fb57aaf44cd0b4dd2ca584xxxxxx"
  },
  "Code": "Success",
  "Success": "true"
}

3.3. Query index job status

Tugas indeks memerlukan waktu untuk diselesaikan. Selama jam sibuk, proses ini dapat memakan waktu beberapa jam. Panggil operasi GetIndexJobStatus untuk menanyakan status eksekusinya.Ketika bidang Data.Status bernilai COMPLETED, basis pengetahuan telah dibuat.
  • Sebelum memanggil operasi ini, RAM user harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess).
  • Operasi ini mendukung debugging online dan pembuatan kode contoh untuk berbagai bahasa.
Python
def get_index_job_status(client, workspace_id, index_id, job_id):
    """
    Query the status of an index job.

    Args:
        client (bailian20231229Client): The client.
        workspace_id (str): The workspace ID.
        index_id (str): The knowledge base ID.
        job_id (str): The job ID.

    Returns:
        The response from Alibaba Cloud Model Studio.
    """
    headers = {}
    get_index_job_status_request = bailian_20231229_models.GetIndexJobStatusRequest(
        index_id=index_id,
        job_id=job_id
    )
    runtime = util_models.RuntimeOptions()
    return client.get_index_job_status_with_options(workspace_id, get_index_job_status_request, headers, runtime)
{
  "IndexId": "mymxbdxxxx",
  "JobId": "3cd6fb57aaf44cd0b4dd2ca584xxxxxx",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "Status": "200",
  "Message": "success",
  "RequestId": "E83423B9-7D6D-5283-836B-CF7EAEXXXXXX",
  "Data": {
    "Status": "COMPLETED",
    "Documents": [
      {
        "Status": "FINISH",
        "DocId": "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx",
        "Message": "Imported successfully.",
        "DocName": "Alibaba Cloud Model Studio Product Overview",
        "Code": "FINISH"
      }
    ],
    "JobId": "3cd6fb57aaf44cd0b4dd2ca584xxxxxx"
  },
  "Code": "Success",
  "Success": "true"
}
Anda telah membuat basis pengetahuan dari file yang diunggah.

Ambil dari basis pengetahuan

Anda dapat mengambil informasi dari basis pengetahuan dengan dua cara:
  • Menggunakan aplikasi Alibaba Cloud Model Studio: Saat Anda memanggil aplikasi, gunakan parameter rag_options untuk meneruskan ID basis pengetahuan index_id. Hal ini melengkapi model Anda dengan pengetahuan privat dan menyediakan informasi terkini.
  • Menggunakan API Alibaba Cloud: Panggil Retrieve API untuk mengambil informasi dari basis pengetahuan tertentu dan mengembalikan segmen teks aslinya.
Metode pertama mengirimkan segmen teks yang diambil ke model yang telah Anda konfigurasi untuk menghasilkan jawaban akhir, sedangkan metode kedua langsung mengembalikan segmen teks tersebut. Bagian ini menjelaskan cara menggunakan API Alibaba Cloud.
Untuk mengambil informasi dan mengembalikan segmen teks dari basis pengetahuan tertentu, panggil Retrieve API.
  • client: Cara mendapatkan client
  • workspace_id: ID ruang kerja yang berisi basis pengetahuan. Cara mendapatkan ID ruang kerja
    Pengguna RAM hanya dapat mengambil informasi dari basis pengetahuan dalam ruang kerja yang telah mereka ikuti.
Jika respons berisi informasi yang terlalu banyak tidak relevan, tentukan SearchFilters dalam permintaan untuk memfilter hasil berdasarkan kriteria seperti tag.
  • Pengguna RAM harus memiliki izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess) untuk memanggil operasi ini.
  • Operasi ini mendukung debugging online dan pembuatan kode contoh untuk berbagai bahasa.
Python
def retrieve_index(client, workspace_id, index_id, query):
    """
    Mengambil informasi dari basis pengetahuan tertentu.

    Args:
        client (bailian20231229Client): Objek client.
        workspace_id (str): ID ruang kerja.
        index_id (str): ID basis pengetahuan.
        query (str): Kueri pencarian.

    Returns:
        Respons dari layanan Model Studio.
    """
    headers = {}
    retrieve_request = bailian_20231229_models.RetrieveRequest(
        index_id=index_id,
        query=query
    )
    runtime = util_models.RuntimeOptions()
    return client.retrieve_with_options(workspace_id, retrieve_request, headers, runtime)
{
  "IndexId": "mymxbdxxxx",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx",
  "Query": "Perkenalkan ponsel Alibaba Cloud Model Studio X1."
}
{
  "Status": "200",
  "Message": "success",
  "RequestId": "17316EA2-1F4D-55AC-8872-53F6F1XXXXXX",
  "Data": {
    "Nodes": [
      {
        "Score": 0.6294550895690918,
        "Metadata": {
          "file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/Model_Studio_Series_Phone_Product_Introduction_1742197778230.json?Expires=1742457465&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
          "is_displayed_chunk_content": "true",
          "_rc_v_score": 0.7449869735535081,
          "image_url": [],
          "nid": "9ad347d9e4d7465d2c1e693a08b0077c|d6f7fbf8403e0df796258e5ada1ee1c1|4772257e93ed64ea087ff4be0d5e4620|7ce1370e4a1958842c9268144a452cc7",
          "_q_score": 1,
          "source": "0",
          "_score": 0.6294550895690918,
          "title": "Alibaba Cloud Model Studio Phone Product Introduction",
          "doc_id": "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx",
          "content": "Alibaba Cloud Model Studio Phone Product Introduction\nAlibaba Cloud Model Studio X1 — Enjoy the ultimate visual experience: Features a 6.7-inch 1440 x 3200 pixel ultra-clear screen with a 120 Hz refresh rate for a smooth and vivid visual experience. The powerful combination of 256 GB of mass storage and 12 GB of RAM handles large games and multitasking with ease. A long-lasting 5000 mAh battery and an ultra-sensitive quad-camera system capture every wonderful moment of your life. Reference price: 4,599–4,999\nTongyi Vivid 7 — A new experience in smart photography: Features a 6.5-inch 1080 x 2400 pixel full screen. The AI smart photography feature ensures every photo shows professional-grade color and detail. 8 GB of RAM and 128 GB of storage ensure smooth operation, and the 4,500 mAh battery meets daily needs. Side fingerprint unlock is convenient and secure. Reference price: 2,999–3,299\nStardust S9 Pro — An innovative visual feast: A groundbreaking 6.9-inch 1440 x 3088 pixel under-screen camera design provides a borderless visual experience. Top-tier configuration with 512 GB of storage and 16 GB of RAM, combined with a 6,000 mAh battery and 100 W fast charging technology, delivers both performance and endurance, leading the tech trend. Reference price: 5,999–6,499.",
          "_rc_score": 0,
          "workspace_id": "llm-4u5xpd1xdjqpxxxx",
          "hier_title": "Alibaba Cloud Model Studio Phone Product Introduction",
          "_rc_t_score": 0.05215025693178177,
          "doc_name": "Alibaba Cloud Model Studio Series Phone Product Introduction",
          "pipeline_id": "mymxbdxxxx",
          "_id": "llm-4u5xpd1xdjqp8itj_mymxbd6172_file_0b21e0a852cd40cd9741c54fefbb61cd_10285263_0_0"
        },
        "Text": "Alibaba Cloud Model Studio Phone Product Introduction\nAlibaba Cloud Model Studio X1 — Enjoy the ultimate visual experience: Features a 6.7-inch 1440 x 3200 pixel ultra-clear screen with a 120 Hz refresh rate for a smooth and vivid visual experience. The powerful combination of 256 GB of mass storage and 12 GB of RAM handles large games and multitasking with ease. A long-lasting 5000 mAh battery and an ultra-sensitive quad-camera system capture every wonderful moment of your life. Reference price: 4,599–4,999\nTongyi Vivid 7 — A new experience in smart photography: Features a 6.5-inch 1080 x 2400 pixel full screen. The AI smart photography feature ensures every photo shows professional-grade color and detail. 8 GB of RAM and 128 GB of storage ensure smooth operation, and the 4,500 mAh battery meets daily needs. Side fingerprint unlock is convenient and secure. Reference price: 2,999–3,299\nStardust S9 Pro — An innovative visual feast: A groundbreaking 6.9-inch 1440 x 3088 pixel under-screen camera design provides a borderless visual experience. Top-tier configuration with 512 GB of storage and 16 GB of RAM, combined with a 6,000 mAh battery and 100 W fast charging technology, delivers both performance and endurance, leading the tech trend. Reference price: 5,999–6,499."
      },
      {
        "Score": 0.5322970747947693,
        "Metadata": {
          "file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/Model_Studio_Series_Phone_Product_Introduction_1742197778230.json?Expires=1742457465&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
          "is_displayed_chunk_content": "true",
          "_rc_v_score": 0.641660213470459,
          "image_url": [],
          "nid": "00be1864c18b4c39c59f83713af80092|4f2bfb02cc9fc4e85597b2e717699207",
          "_q_score": 0.9948930557644994,
          "source": "0",
          "_score": 0.5322970747947693,
          "title": "Alibaba Cloud Model Studio Phone Product Introduction",
          "doc_id": "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx",
          "content": "Alibaba Cloud Model Studio Flex Fold+ — A new era of foldable screens: Combining innovation and luxury, it features a 7.6-inch 1800 x 2400 pixel main screen and a 4.7-inch 1080 x 2400 pixel external screen. The multi-angle free-stop hinge design meets the needs of different scenarios. Alibaba Cloud Model Studio Flex Fold+ — A new era of foldable screens: Combining innovation and luxury, it features a 7.6-inch 1800 x 2400 pixel main screen and a 4.7-inch 1080 x 2400 pixel external screen. The multi-angle free-stop hinge design meets the needs of different scenarios. 512 GB of storage, 12 GB of RAM, a 4700 mAh battery, and UTG ultra-thin flexible glass open a new chapter in the era of foldable screens. In addition, this phone supports Dual SIM Dual Standby and satellite calls, helping you stay connected anywhere in the world. Reference retail price: 9,999–10,999. Each phone is a masterpiece of craftsmanship, designed to be a work of technological art in your hands. Choose your smart companion and start a new chapter of future tech life.",
          "_rc_score": 0,
          "workspace_id": "llm-4u5xpd1xdjqpxxxx",
          "hier_title": "Alibaba Cloud Model Studio Phone Product Introduction",
          "_rc_t_score": 0.05188392847776413,
          "doc_name": "Alibaba Cloud Model Studio Series Phone Product Introduction",
          "pipeline_id": "mymxbdxxxx",
          "_id": "llm-4u5xpd1xdjqp8itj_mymxbd6172_file_0b21e0a852cd40cd9741c54fefbb61cd_10285263_0_2"
        },
        "Text": "Alibaba Cloud Model Studio Flex Fold+ — A new era of foldable screens: Combining innovation and luxury, it features a 7.6-inch 1800 x 2400 pixel main screen and a 4.7-inch 1080 x 2400 pixel external screen. The multi-angle free-stop hinge design meets the needs of different scenarios. Alibaba Cloud Model Studio Flex Fold+ — A new era of foldable screens: Combining innovation and luxury, it features a 7.6-inch 1800 x 2400 pixel main screen and a 4.7-inch 1080 x 2400 pixel external screen. The multi-angle free-stop hinge design meets the needs of different scenarios. 512 GB of storage, 12 GB of RAM, a 4700 mAh battery, and UTG ultra-thin flexible glass open a new chapter in the era of foldable screens. In addition, this phone supports Dual SIM Dual Standby and satellite calls, helping you stay connected anywhere in the world. Reference retail price: 9,999–10,999. Each phone is a masterpiece of craftsmanship, designed to be a work of technological art in your hands. Choose your smart companion and start a new chapter of future tech life."
      },
      {
        "Score": 0.5050643086433411,
        "Metadata": {
          "file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/Model_Studio_Series_Phone_Product_Introduction_1742197778230.json?Expires=1742457465&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
          "is_displayed_chunk_content": "true",
          "_rc_v_score": 0.6757396459579468,
          "image_url": [],
          "nid": "f05d1b51eb6b033b32a162d90a9da71b|5cb6b848be8d11eb168c031025415cc5|4f2bfb02cc9fc4e85597b2e717699207",
          "_q_score": 0.9890713450653327,
          "source": "0",
          "_score": 0.5050643086433411,
          "title": "Alibaba Cloud Model Studio Phone Product Introduction",
          "doc_id": "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx",
          "content": "Top-tier configuration with 512 GB of storage and 16 GB of RAM, combined with a 6,000 mAh battery and 100 W fast charging technology, delivers both performance and endurance, leading the tech trend. Reference price: 5,999–6,499. Alibaba Cloud Model Studio Ace Ultra — The gamer's choice: Equipped with a 6.67-inch 1080 x 2400 pixel screen, 10 GB of RAM, and 256 GB of storage to ensure silky-smooth gameplay. The 5,500 mAh battery with a liquid cooling system stays cool even during long gaming sessions. High-dynamic dual speakers upgrade the gaming experience with immersive sound effects. Reference price: 3,999–4,299. Alibaba Cloud Model Studio Zephyr Z9 — The art of being thin and portable: A lightweight 6.4-inch 1080 x 2340 pixel design, with 128 GB of storage and 6 GB of RAM, is more than enough for daily use. The 4,000 mAh battery ensures a full day of use without worry. The 30x digital zoom lens captures distant details. It is thin but powerful. Reference price: 2,499–2,799. Alibaba Cloud Model Studio Flex Fold+ — A new era of foldable screens: Combining innovation and luxury, it features a 7.6-inch 1800 x 2400 pixel main screen and a 4.7-inch 1080 x 2400 pixel external screen. The multi-angle free-stop hinge design meets the needs of different scenarios.",
          "_rc_score": 0,
          "workspace_id": "llm-4u5xpd1xdjqpxxxx",
          "hier_title": "Alibaba Cloud Model Studio Phone Product Introduction",
          "_rc_t_score": 0.05158032476902008,
          "doc_name": "Alibaba Cloud Model Studio Series Phone Product Introduction",
          "pipeline_id": "mymxbdxxxx",
          "_id": "llm-4u5xpd1xdjqp8itj_mymxbd6172_file_0b21e0a852cd40cd9741c54fefbb61cd_10285263_0_1"
        },
        "Text": "Top-tier configuration with 512 GB of storage and 16 GB of RAM, combined with a 6,000 mAh battery and 100 W fast charging technology, delivers both performance and endurance, leading the tech trend. Reference price: 5,999–6,499. Alibaba Cloud Model Studio Ace Ultra — The gamer's choice: Equipped with a 6.67-inch 1080 x 2400 pixel screen, 10 GB of RAM, and 256 GB of storage to ensure silky-smooth gameplay. The 5,500 mAh battery with a liquid cooling system stays cool even during long gaming sessions. High-dynamic dual speakers upgrade the gaming experience with immersive sound effects. Reference price: 3,999–4,299. Alibaba Cloud Model Studio Zephyr Z9 — The art of being thin and portable: A lightweight 6.4-inch 1080 x 2340 pixel design, with 128 GB of storage and 6 GB of RAM, is more than enough for daily use. The 4,000 mAh battery ensures a full day of use without worry. The 30x digital zoom lens captures distant details. It is thin but powerful. Reference price: 2,499–2,799. Alibaba Cloud Model Studio Flex Fold+ — A new era of foldable screens: Combining innovation and luxury, it features a 7.6-inch 1800 x 2400 pixel main screen and a 4.7-inch 1080 x 2400 pixel external screen. The multi-angle free-stop hinge design meets the needs of different scenarios."
      }
    ]
  },
  "Code": "Success",
  "Success": "true"
}

Perbarui basis pengetahuan

Contoh berikut menunjukkan cara memperbarui basis pengetahuan pencarian dokumen. Aplikasi yang menggunakan basis pengetahuan tersebut mencerminkan pembaruan Anda secara real time. Konten baru menjadi tersedia untuk pengambilan, sedangkan konten yang dihapus tidak lagi dapat diakses.
Anda tidak dapat memperbarui basis pengetahuan kueri data atau tanya jawab gambar menggunakan API. Untuk informasi selengkapnya, lihat Perbarui basis pengetahuan.
  • Pembaruan inkremental: Satu-satunya metode yang didukung adalah proses tiga langkah: unggah file yang diperbarui, tambahkan file ke basis pengetahuan, lalu hapus file lama.
  • Pembaruan penuh: Untuk setiap file dalam basis pengetahuan, lakukan ketiga langkah tersebut untuk menyelesaikan pembaruan.
  • Pembaruan atau sinkronisasi otomatis: Untuk informasi selengkapnya, lihat Cara memperbarui atau menyinkronkan basis pengetahuan secara otomatis.
  • Batas file untuk satu pembaruan: Kami menyarankan untuk memperbarui tidak lebih dari 10.000 file sekaligus. Melebihi batas ini dapat mencegah basis pengetahuan diperbarui dengan benar.

1. Unggah file yang diperbarui

Ikuti prosedur dalam Buat basis pengetahuan: Langkah 2 untuk mengunggah file yang diperbarui ke ruang kerja yang berisi basis pengetahuan tersebut.
Minta sewa unggah file baru untuk menghasilkan serangkaian parameter unggah baru bagi file yang diperbarui.

2. Tambahkan file ke basis pengetahuan

2.1. Kirim Tugas Append

Setelah file yang diunggah selesai diurai, panggil operasi SubmitIndexAddDocumentsJob untuk menambahkan file baru ke basis pengetahuan dan membangun ulang indeks basis pengetahuan.
  • client: Untuk informasi selengkapnya, lihat Cara mendapatkan client.
  • workspace_id: Untuk informasi selengkapnya, lihat Cara mendapatkan ID ruang kerja.
  • file_id: Masukkan FileId yang dikembalikan saat Anda menambahkan file ke kategori.
  • source_type: Pada contoh ini, masukkan DATA_CENTER_FILE.
Setelah Anda mengirimkan task tersebut, Model Studio membangun ulang basis pengetahuan secara asinkron. Operasi ini mengembalikan Data.Id, yaitu ID task (job_id). Gunakan ID ini pada langkah berikutnya untuk menanyakan status task.
  • Setelah Anda memanggil operasi SubmitIndexAddDocumentsJob, task memerlukan waktu tertentu untuk selesai. Anda dapat menggunakan job_id untuk menanyakan status task tersebut. Jangan mengirim ulang task sebelum task tersebut selesai.
  • Pengguna RAM harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess) sebelum memanggil operasi ini.
  • Contoh ini mendukung debugging online dan pembuatan contoh kode multi-bahasa.
Python
def submit_index_add_documents_job(client, workspace_id, index_id, file_id, source_type):
    """
    Menambahkan dan mengimpor file yang telah diurai ke basis pengetahuan pencarian dokumen.

    Args:
        client (bailian20231229Client): The client.
        workspace_id (str): The workspace ID.
        index_id (str): The knowledge base ID.
        file_id (str): The file ID.
        source_type(str): The data type.

    Returns:
        The response from the Alibaba Cloud Model Studio service.
    """
    headers = {}
    submit_index_add_documents_job_request = bailian_20231229_models.SubmitIndexAddDocumentsJobRequest(
        index_id=index_id,
        document_ids=[file_id],
        source_type=source_type
    )
    runtime = util_models.RuntimeOptions()
    return client.submit_index_add_documents_job_with_options(workspace_id, submit_index_add_documents_job_request, headers, runtime)
{
  "IndexId": "mymxbdxxxx",
  "SourceType": "DATA_CENTER_FILE",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx",
  "DocumentIds": [
    "file_247a2fd456a349ee87d071404840109b_10xxxxxx"
  ]
}
{
  "Status": "200",
  "RequestId": "F693EB60-FEFC-559A-BF56-A41F52XXXXXX",
  "Message": "success",
  "Data": {
    "Id": "d8d189a36a3248438dca23c078xxxxxx"
  },
  "Code": "Success",
  "Success": "true"
}

2.2. Tunggu hingga task selesai

Task pengindeksan memerlukan waktu tertentu untuk selesai. Selama jam sibuk, proses ini dapat memakan waktu beberapa jam. Anda dapat memanggil operasi GetIndexJobStatus untuk menanyakan status eksekusinya.Nilai COMPLETED pada bidang Data.Status dalam respons menunjukkan bahwa semua file yang diperbarui telah berhasil ditambahkan ke basis pengetahuan.
Daftar Documents dalam respons berisi semua file untuk task penambahan yang sesuai dengan job_id yang Anda berikan.
  • Pengguna RAM harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess) sebelum memanggil operasi ini.
  • Contoh ini mendukung debugging online dan pembuatan contoh kode multi-bahasa.
Python
def get_index_job_status(client, workspace_id, index_id, job_id):
    """
    Menanyakan status task pengindeksan.

    Args:
        client (bailian20231229Client): The client.
        workspace_id (str): The workspace ID.
        index_id (str): The knowledge base ID.
        job_id (str): The task ID.

    Returns:
        The response from the Alibaba Cloud Model Studio service.
    """
    headers = {}
    get_index_job_status_request = bailian_20231229_models.GetIndexJobStatusRequest(
        index_id=index_id,
        job_id=job_id
    )
    runtime = util_models.RuntimeOptions()
    return client.get_index_job_status_with_options(workspace_id, get_index_job_status_request, headers, runtime)
{
  "IndexId": "mymxbdxxxx",
  "JobId": "76f243b9ee534d59a61f156ff0xxxxxx",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "Status": 200,
  "Message": "success",
  "RequestId": "7F727D58-D90E-51E7-B56E-985A42XXXXXX",
  "Data": {
    "Status": "COMPLETED",
    "Documents": [
      {
        "Status": "FINISH",
        "DocId": "file_247a2fd456a349ee87d071404840109b_10xxxxxx",
        "Message": "Import successful",
        "DocName": "Alibaba Cloud Model Studio Phone Product Introduction",
        "Code": "FINISH"
      }
    ],
    "JobId": "76f243b9ee534d59a61f156ff0xxxxxx"
  },
  "Code": "Success",
  "Success": true
}

3. Hapus file lama

Akhirnya, panggil operasi DeleteIndexDocument untuk menghapus permanen versi lama file dari basis pengetahuan. Hal ini mencegah informasi usang diambil secara tidak sengaja.
  • file_id: Masukkan FileId dari file lama tersebut.
Anda hanya dapat menghapus file dengan status gagal impor (INSERT_ERROR) atau impor berhasil (FINISH). Untuk menanyakan status file dalam basis pengetahuan, Anda dapat memanggil operasi ListIndexDocuments.
  • Pengguna RAM harus diberikan izin API yang diperlukan (kebijakan AliyunBailianDataFullAccess) sebelum memanggil operasi ini.
  • Contoh ini mendukung debugging online dan pembuatan contoh kode multi-bahasa.
Python
def delete_index_document(client, workspace_id, index_id, file_id):
    """
    Menghapus permanen satu atau beberapa file dari basis pengetahuan pencarian dokumen yang ditentukan.

    Args:
        client (bailian20231229Client): The client.
        workspace_id (str): The workspace ID.
        index_id (str): The knowledge base ID.
        file_id (str): The file ID.

    Returns:
        The response from the Alibaba Cloud Model Studio service.
    """
    headers = {}
    delete_index_document_request = bailian_20231229_models.DeleteIndexDocumentRequest(
        index_id=index_id,
        document_ids=[file_id]
    )
    runtime = util_models.RuntimeOptions()
    return client.delete_index_document_with_options(workspace_id, delete_index_document_request, headers, runtime)
{
  "DocumentIds": [
    "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx"
  ],
  "IndexId": "mymxbdxxxx",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "Status": "200",
  "RequestId": "2D8505EC-C667-5102-9154-00B6FEXXXXXX",
  "Message": "success",
  "Data": {
    "DeletedDocument": [
      "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx"
    ]
  },
  "Code": "Success",
  "Success": "true"
}

Mengelola basis pengetahuan

Membuat dan menggunakan basis pengetahuan tidak didukung melalui API. Anda harus melakukan tugas-tugas ini di Konsol Model Studio.

Menampilkan basis pengetahuan

Untuk menampilkan basis pengetahuan dalam ruang kerja tertentu, panggil operasi ListIndices.
  • client: Cara memperoleh client
  • workspace_id: Cara memperoleh ID ruang kerja
    Pengguna RAM hanya dapat melihat basis pengetahuan di ruang kerja yang telah mereka ikuti.
  • Sebelum memanggil operasi ini, pengguna RAM harus memiliki izin API yang diperlukan dengan menyambungkan kebijakan AliyunBailianDataFullAccess.
  • Operasi ini mendukung debugging online dan pembuatan contoh kode untuk berbagai bahasa pemrograman.
Python
def list_indices(client, workspace_id):
    """
    Mendapatkan detail basis pengetahuan dalam ruang kerja tertentu.

    Args:
        client (bailian20231229Client): Client.
        workspace_id (str): ID ruang kerja.

    Returns:
        Respons dari layanan Alibaba Cloud Model Studio.
    """
    headers = {}
    list_indices_request = bailian_20231229_models.ListIndicesRequest()
    runtime = util_models.RuntimeOptions()
    return client.list_indices_with_options(workspace_id, list_indices_request, headers, runtime)
{
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "Status": "200",
  "RequestId": "5ACB2EB3-6C9A-5B0F-8E60-3FBE7EXXXXXX",
  "Message": "success",
  "Data": {
    "TotalCount": "1",
    "PageSize": "10",
    "PageNumber": "1",
    "Indices": [
      {
        "DocumentIds": [
          "file_0b21e0a852cd40cd9741c54fefbb61cd_10xxxxxx"
        ],
        "Description": "",
        "OverlapSize": 100,
        "SinkInstanceId": "gp-2zegk3i6ca4xxxxxx",
        "SourceType": "DATA_CENTER_FILE",
        "RerankModelName": "gte-rerank-hybrid",
        "SinkRegion": "cn-beijing",
        "Name": "Model Studio Mobile Phone Knowledge Base",
        "ChunkSize": 500,
        "EmbeddingModelName": "text-embedding-v2",
        "RerankMinScore": 0.01,
        "Id": "mymxbdxxxx",
        "SinkType": "BUILT_IN",
        "Separator": " |,|,|。|?|!|\n|\\?|\\!"
      }
    ]
  },
  "Code": "Success",
  "Success": "true"
}

Menghapus basis pengetahuan

Untuk menghapus basis pengetahuan secara permanen, panggil operasi DeleteIndex. Sebelum menghapus basis pengetahuan, Anda harus memutuskan kaitannya dari semua aplikasi Alibaba Cloud Model Studio yang terhubung di Konsol Model Studio. Jika tidak, penghapusan akan gagal.Catatan: Operasi ini tidak menghapus file yang telah Anda tambahkan ke kategori.
  • Sebelum memanggil operasi ini, pengguna RAM harus memiliki izin API yang diperlukan dengan menyambungkan kebijakan AliyunBailianDataFullAccess.
  • Operasi ini mendukung debugging online dan pembuatan contoh kode untuk berbagai bahasa pemrograman.
Python
def delete_index(client, workspace_id, index_id):
    """
    Menghapus basis pengetahuan yang ditentukan secara permanen.

    Args:
        client (bailian20231229Client): Client.
        workspace_id (str): ID ruang kerja.
        index_id (str): ID basis pengetahuan.

    Returns:
        Respons dari layanan Alibaba Cloud Model Studio.
    """
    headers = {}
    delete_index_request = bailian_20231229_models.DeleteIndexRequest(
        index_id=index_id
    )
    runtime = util_models.RuntimeOptions()
    return client.delete_index_with_options(workspace_id, delete_index_request, headers, runtime)
{
  "IndexId": "mymxbdxxxx",
  "WorkspaceId": "llm-4u5xpd1xdjqpxxxx"
}
{
  "Status": "200",
  "Message": "success",
  "RequestId": "118CB681-75AA-583B-8D84-25440CXXXXXX",
  "Code": "Success",
  "Success": "true"
}

API

Lihat Katalog API (Basis Pengetahuan) untuk daftar lengkap API basis pengetahuan serta parameter permintaan dan respons-nya.

FAQ

  1. Bagaimana cara mengotomatiskan pembaruan dan sinkronisasi basis pengetahuan?
    • Pencarian dokumen
    • Kueri data dan Tanya Jawab gambar
    Integrasikan API untuk Object Storage Service (OSS), Function Compute (FC), dan basis pengetahuan Model Studio. Ikuti langkah-langkah berikut:
    1. Buat bucket: Buka Konsol OSS untuk membuat bucket OSS guna menyimpan file sumber Anda.
    2. Buat basis pengetahuan: Buat basis pengetahuan pencarian dokumen untuk menyimpan konten pengetahuan privat Anda.
    3. Buat fungsi kustom: Buka Konsol FC dan buat fungsi untuk menangani event perubahan file, seperti operasi tambah atau hapus. Lihat Buat fungsi. Fungsi-fungsi ini menyinkronkan perubahan file dari OSS ke basis pengetahuan Anda dengan memanggil API terkait yang dijelaskan dalam Perbarui basis pengetahuan.
    4. Buat pemicu OSS: Di FC, kaitkan pemicu OSS dengan fungsi kustom yang telah Anda buat pada langkah sebelumnya. Ketika event perubahan file terdeteksi—misalnya unggahan file baru ke OSS—pemicu tersebut akan aktif dan FC menjalankan fungsi tersebut. Lihat Pemicu.
  2. Mengapa basis pengetahuan baru saya kosong? Hal ini biasanya terjadi jika langkah Kirim pekerjaan pengindeksan gagal dijalankan. Jika Anda memanggil API CreateIndex tetapi panggilan API SubmitIndexJob gagal, maka basis pengetahuan akan kosong. Untuk mengatasinya, kirim ulang pekerjaan pengindeksan dan tunggu hingga pekerjaan pengindeksan selesai.
  3. Apa yang harus saya lakukan jika menerima pesan kesalahan "Access your uploaded file failed. Please check if your upload action was successful"? Error ini biasanya terjadi karena langkah Unggah file ke penyimpanan temporary tidak berhasil dijalankan. Pastikan langkah ini berhasil sebelum Anda memanggil operasi API AddFile.
  4. Apa yang harus saya lakukan jika menerima error "Access denied: Either you are not authorized to access this workspace, or the workspace does not exist"? Error ini biasanya terjadi karena alasan berikut:
    • Titik akhir layanan (service endpoint) yang diminta salah: Untuk akses melalui Internet, pengguna situs China (public cloud) harus menggunakan titik akhir layanan di China (Beijing), sedangkan pengguna situs internasional harus menggunakan titik akhir layanan di Singapura. Jika Anda menggunakan fitur online debugging, pastikan Anda memilih titik akhir layanan yang benar, seperti yang ditunjukkan pada gambar berikut.
      image
    • NilaiWorkspaceIdsalah, atau Anda bukan anggota ruang kerja tersebut: Sebelum memanggil API, verifikasi bahwa WorkspaceId benar dan Anda merupakan anggota ruang kerja tersebut. Cara ditambahkan sebagai anggota ruang kerja tertentu
  5. Apa yang harus saya lakukan jika menerima error "Specified access key is not found or invalid"? Error ini biasanya terjadi karena access_key_id atau access_key_secret yang diberikan salah, atau access_key_id telah dinonaktifkan. Pastikan access_key_id benar dan tidak dinonaktifkan sebelum Anda memanggil API.
  6. Apa yang harus saya lakukan jika menerima error "Category is mismatched"? Error ini biasanya terjadi ketika CategoryId yang digunakan dalam panggilan API ApplyFileUploadLease berbeda dari CategoryId yang diteruskan dalam panggilan API AddFile berikutnya. Pastikan Anda menggunakan CategoryId yang sama sepanjang alur unggah file, mulai dari ApplyFileUploadLease hingga AddFile. Anda dapat memanggil API ListCategory untuk mengambil daftar kategori dalam ruang kerja saat ini dan memverifikasi bahwa CategoryId yang Anda gunakan benar.

Penagihan

  • Semua fitur basis pengetahuan dan panggilan API gratis. Lihat Knowledge Base: Billing.
  • Ruang penyimpanan untuk data, seperti file yang diimpor ke Model Studio, gratis.

Kode error

Jika panggilan ke operasi API yang dijelaskan dalam topik ini gagal, lihat Error Center.
API Basis Pengetahuan - Alibaba Cloud Model Studio