全部产品
Search
文档中心

Platform For AI:Menyebarkan alur aplikasi

更新时间:Jul 11, 2025

Setelah mengembangkan alur aplikasi, Anda dapat menyebarkannya sebagai layanan Elastic Algorithm Service (EAS). EAS menyediakan fitur seperti penskalaan otomatis dan pemantauan O&M yang komprehensif. Hal ini memastikan bahwa aplikasi Anda dapat merespons perubahan bisnis secara fleksibel, meningkatkan stabilitas dan kinerja sistem, serta memenuhi persyaratan lingkungan produksi.

Prasyarat

Anda telah membuat dan men-debug alur aplikasi. Lihat Kembangkan Alur Aplikasi.

Menyebarkan alur aplikasi

Buka LangStudio dan pilih ruang kerja. Pada tab Application Flow, klik alur aplikasi yang telah Anda debug, lalu klik Deploy di pojok kanan atas. Pastikan runtime telah dimulai sebelum menyebarkan. Tabel berikut menjelaskan parameter utama.

image

Parameter

Deskripsi

Informasi Sumber Daya

Tipe Sumber Daya

Pilih sumber daya publik atau kelompok sumber daya khusus yang telah Anda buat.

Instans

Konfigurasikan jumlah instans layanan. Pada tahap produksi, konfigurasikan beberapa instans untuk mengurangi risiko titik kegagalan tunggal.

Sumber Daya Penyebaran

Jika Anda hanya menggunakan alur aplikasi untuk penjadwalan alur bisnis, Anda dapat memilih sumber daya CPU yang sesuai berdasarkan kompleksitas alur bisnis. Dibandingkan dengan sumber daya GPU, sumber daya CPU biasanya lebih hemat biaya. Setelah penyebaran, Anda akan dikenakan biaya untuk sumber daya tersebut, lihat Penagihan EAS.

VPC: Alur aplikasi sebenarnya disebarkan sebagai layanan EAS. Untuk memastikan bahwa klien dapat mengaksesnya secara normal, pilih virtual private cloud (VPC). Perhatikan bahwa layanan EAS tidak dapat mengakses Internet secara default. Untuk mengakses Internet, konfigurasikan VPC yang dapat diakses melalui Internet, lihat Konfigurasikan konektivitas jaringan.

Catatan

Jika alur aplikasi mencakup koneksi database vektor (seperti Milvus), pastikan VPC yang dikonfigurasikan adalah tempat instance database vektor berada atau dua VPC terhubung.

Riwayat

Aktifkan Riwayat

Parameter ini hanya berlaku untuk alur aplikasi tipe obrolan. Saat diaktifkan, sistem dapat menyimpan dan mentransmisikan beberapa putaran riwayat obrolan. Fitur ini harus digunakan bersama dengan parameter header permintaan.

Penyimpanan Riwayat

Penyimpanan lokal tidak mendukung penyebaran multi-instans. Jika Anda menyebarkan layanan untuk penggunaan produksi, gunakan penyimpanan eksternal, seperti ApsaraDB RDS. Untuk informasi lebih lanjut, lihat Lampiran: Riwayat Obrolan.

Penting

Jika Anda menggunakan penyimpanan lokal, penyebaran multi-instans tidak didukung, dan skala dari satu instans ke banyak instans juga tidak didukung. Jika tidak, fitur riwayat obrolan mungkin tidak berfungsi dengan baik.

Aktifkan Tracing: Saat diaktifkan, Anda dapat melihat catatan jejak untuk mengevaluasi efek alur aplikasi setelah penyebaran.

Peran dan Izin: Dalam alur aplikasi, jika Anda menggunakan database vektor Faiss (pilih database vektor Faiss atau Milvus saat membuat basis pengetahuan) atau "Alibaba Cloud IQS Search" (diperlukan oleh template IQS web search-based chatbot), Anda harus memilih peran yang sesuai.

Untuk informasi lebih lanjut tentang konfigurasi parameter, lihat Parameter untuk Penyebaran Kustom di Konsol.

Debugging Online

Panggil Layanan

Debugging Online

Setelah penyebaran berhasil, Anda akan dialihkan ke PAI-EAS. Pada tab Online Debugging, konfigurasikan dan kirim permintaan. Kunci dalam badan permintaan harus sesuai dengan nilai parameter Chat Input di Start Node dari alur aplikasi. Dalam topik ini, bidang default question digunakan.

image

Buat Panggilan API

  1. Pada tab Overview, peroleh endpoint dan token.

    image

  2. Kirim permintaan API.

    Anda dapat memanggil layanan dalam mode sederhana atau lengkap. Tabel berikut menjelaskan perbedaan antara kedua mode tersebut.

    Properti

    Mode Sederhana

    Mode Lengkap

    Path Permintaan

    <Endpoint>/

    <Endpoint>/run

    Deskripsi Fitur

    Mengembalikan langsung hasil output alur aplikasi.

    Mengembalikan struktur kompleks, termasuk status node, pesan kesalahan, dan pesan output alur aplikasi.

    Skenario

    • Anda hanya membutuhkan hasil output akhir alur aplikasi dan tidak peduli dengan proses internal atau status alur.

    • Cocok untuk kueri atau operasi sederhana untuk mendapatkan hasil dengan cepat.

    • Anda perlu memahami proses eksekusi alur aplikasi secara rinci, termasuk status setiap node dan pesan kesalahan yang mungkin ada.

    • Cocok untuk debugging, pemantauan, atau analisis eksekusi alur aplikasi.

    Keuntungan

    Mudah digunakan, tidak perlu mengurai struktur kompleks.

    • Memberikan informasi komprehensif untuk membantu Anda memahami proses eksekusi alur aplikasi secara mendalam.

    • Membantu menyelesaikan masalah dan mengoptimalkan kinerja alur aplikasi.

    Mode Sederhana

    Perintah cURL

    Layanan alur aplikasi EAS yang disebarkan mendukung panggilan streaming atau non-streaming menggunakan perintah cURL. Tabel berikut memberikan contoh permintaan dan respons.

    Contoh

    Streaming

    Non-streaming

    Permintaan Contoh

    curl -X POST \
         -H "Authorization: Bearer <your_token>" \
         -H "Content-Type: application/json" \
         -H "Accept: text/event-stream" \
         -d '{"question": "Di mana ibu kota Prancis?"}' \
         "<your_endpoint>"
    curl -X POST \
         -H "Authorization: Bearer <your_token>" \
         -H "Content-Type: application/json" \
         -d '{"question": "Di mana ibu kota Prancis?"}' \
         "<your_endpoint>"

    Respons Contoh

    event: Message
    data: {"answer": ""}
    
    event: Message
    data: {"answer": "The"}
    
    event: Message
    data: {"answer": " capital"}
    
    event: Message
    data: {"answer": " of"}
    
    event: Message
    data: {"answer": " France"}
    
    event: Message
    data: {"answer": " is"}
    
    event: Message
    data: {"answer": " Paris"}
    
    event: Message
    data: {"answer": "."}
    
    event: Message
    data: {"answer": ""}
    {"answer":"Ibu kota Prancis adalah Paris."}

    Tabel berikut menjelaskan parameter permintaan.

    Parameter

    Deskripsi

    -H "Authorization: Bearer <your_token>"

    Header HTTP. Ganti <your_token> dengan token yang Anda peroleh di Langkah 1.

    -H "Accept: text/event-stream"

    Menunjukkan bahwa klien menerima permintaan SSE dan informasi yang dikembalikan adalah streaming. Catatan: Streaming hanya didukung ketika node LLM digunakan sebagai node output alur aplikasi (node LLM adalah input langsung ke node akhir).

    -d '{"question": "Di mana ibu kota Prancis?"}'

    Badan permintaan, objek JSON yang berisi pasangan kunci-nilai, yaitu string pertanyaan. Kunci harus sesuai dengan bidang parameter "Chat Input" di "Start Node" alur aplikasi. Dalam hal ini, bidang default question digunakan.

    "<your_endpoint>"

    URL tujuan permintaan. Ganti <your_endpoint> dengan endpoint yang Anda peroleh di Langkah 1.

    Kode Python

    Contoh berikut menunjukkan cara menggunakan library requests untuk mengirim permintaan POST ke layanan alur aplikasi, mendukung panggilan streaming atau non-streaming. Pastikan Anda telah menginstal library ini. Jika belum, jalankan pip install requests untuk menginstal.

    Contoh

    Streaming

    Non-streaming

    Permintaan Contoh

    import requests
    import json
    
    url = "http://<your-endpoint-here>"
    token = "<your-token-here>"
    data = {"question": "Di mana ibu kota Prancis?"}
    
    # Tentukan header permintaan, termasuk token layanan alur aplikasi Anda.
    headers = {
        "Authorization": f"Bearer {token}",
        "Accept": "text/event-stream",
        "Content-Type": "application/json"
    }
    
    if __name__ == '__main__':
        with requests.post(url, json=data, headers=headers, stream=True) as r:
            for line in r.iter_lines(chunk_size=1024):
                print(line)
    
    import requests
    import json
    
    url = "http://<your-endpoint-here>"
    token = "<your-token-here>"
    data = {"question": "Di mana ibu kota Prancis?"}
    
    # Tentukan header permintaan, termasuk token layanan alur aplikasi Anda.
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    
    response = requests.post(url, json=data, headers=headers)
    
    if response.status_code == 200:
        print("Permintaan berhasil, hasil:")
        print(response.text)
    else:
        print(f"Permintaan gagal, kode status: {response.status_code}")
    

    Respons Contoh

    event: Message
    data: {"answer": ""}
    
    event: Message
    data: {"answer": "The"}
    
    event: Message
    data: {"answer": " capital"}
    
    event: Message
    data: {"answer": " of"}
    
    event: Message
    data: {"answer": " France"}
    
    event: Message
    data: {"answer": " is"}
    
    event: Message
    data: {"answer": " Paris"}
    
    event: Message
    data: {"answer": "."}
    
    event: Message
    data: {"answer": ""}
    {"answer":"Ibu kota Prancis adalah Paris."}

    Tabel berikut menjelaskan parameter permintaan.

    Parameter

    Deskripsi

    url

    URL tujuan permintaan. Ganti <your-endpoint-here> dengan endpoint yang Anda peroleh di Langkah 1.

    token

    Header HTTP. Ganti <your-token-here> dengan token yang Anda peroleh di Langkah 1.

    data

    Badan permintaan, objek JSON yang berisi pasangan kunci-nilai, yaitu string pertanyaan. Kunci harus sesuai dengan bidang parameter "Chat Input" di "Start Node" alur aplikasi. Dalam hal ini, bidang default question digunakan.

    "Accept": "text/event-stream"

    Menunjukkan bahwa klien menerima permintaan SSE dan informasi yang dikembalikan adalah streaming. Catatan: Streaming hanya didukung ketika node LLM digunakan sebagai node output alur aplikasi (node LLM adalah input langsung ke node akhir).

    Mode Lengkap

    Langstudio mendukung Server-Sent Events (SSE), yang dapat mengeluarkan status, pesan kesalahan, dan pesan output setiap node saat alur aplikasi dieksekusi. Anda juga dapat menyesuaikan konten node_run_infos dalam event. Contoh berikut menggunakan debugging online. Anda perlu menambahkan /run ke alamat panggilan dan kemudian edit badan permintaan:

    image

    Tabel berikut menjelaskan parameter badan permintaan.

    Nama Bidang

    Tipe

    Nilai Default

    Deskripsi

    inputs

    Mapping[str, Any]

    Tidak ada

    Kamus data input. Kunci harus sesuai dengan nama bidang input yang didefinisikan dalam alur aplikasi. Jika alur tidak memiliki input, bidang ini diabaikan.

    stream

    bool

    True

    Mengontrol format respons. Nilai default: Dinamis. Nilai valid:

    • True: Merespons dengan streaming SSE. Content-Type dalam header respons adalah text/event-stream, dan data dikembalikan dalam format DataOnly, dibagi menjadi event berbeda: RunStarted, NodeUpdated, RunOutput, dan RunTerminated. Untuk informasi lebih lanjut, lihat tabel di bawah.

    • False: Merespons dengan satu body JSON tunggal. Content-Type dalam header respons adalah application/json. Anda dapat merujuk pada informasi respons dalam Debugging Online.

    response_config

    Dict[str, Any]

    -

    Mengontrol informasi node terperinci yang termasuk dalam respons streaming (saat stream=True).

    ∟ include_node_description

    bool

    False

    (Dalam response_config) Apakah akan menyertakan deskripsi node dalam aliran event SSE.

    ∟ include_node_display_name

    bool

    False

    (Dalam response_config) Apakah akan menyertakan nama tampilan node dalam aliran event SSE.

    ∟ include_node_output

    bool

    False

    (Dalam response_config) Apakah akan menyertakan output node dalam aliran event SSE.

    ∟ exclude_nodes

    List[str]

    []

    (Dalam response_config) Daftar nama node untuk dikecualikan dari aliran event SSE.

    Data yang dikembalikan dibagi menjadi event berbeda: RunStarted, NodeUpdated, RunOutput, dan RunTerminated:

    Event RunStarted

    • Definisi: Event RunStarted menandai dimulainya run. Biasanya dikirim sebagai event pertama dalam aliran SSE dari sebuah run.

    • Contoh Payload:

      data: {"event": "RunStarted", "run_id": "fb745e15-3b3b-4a10-9e0d-0bea08d47411", "timestamp": "2025-06-12T08:15:07.223611Z", "flow_run_info": {"run_id": "fb745e15-3b3b-4a10-9e0d-0bea08d47411", "status": "Running", "error": null, "otel_trace_id": ""}}
    • Deskripsi Bidang:

      Nama Bidang

      Tipe

      Deskripsi

      event

      string

      Jenis event, tetap sebagai RunStarted.

      run_id

      string

      Pengenal unik untuk run saat ini.

      timestamp

      string

      Cap waktu kejadian, mengikuti standar ISO 8601.

      flow_run_info

      object

      Berisi informasi status akhir untuk seluruh run.

      ∟ run_id

      string

      (Dalam flow_run_info) Pengenal unik untuk run (sama dengan run_id luar).

      ∟ status

      string

      (Dalam flow_run_info) Status awal run, tetap sebagai Running.

      ∟ error

      object atau null

      (Dalam flow_run_info) Jika run gagal, berisi objek pesan kesalahan; jika tidak null.

      ∟ otel_trace_id

      string

      (Dalam flow_run_info) ID jejak OpenTelemetry yang terkait dengan run ini (mungkin kosong atau bernilai nol).

    Event NodeUpdated

    • Definisi: Event NodeUpdated menunjukkan bahwa status atau output satu atau beberapa node dalam Flow telah berubah. Selama run, event ini biasanya dikirim ketika node mulai berjalan (Running) atau menyelesaikan eksekusi (Completed/Failed). Jika response_config disetel, event ini juga dapat mencakup deskripsi node, nama tampilan, dan output. Catatan: Jika Anda menentukan exclude_nodes dalam response_config permintaan, event NodeUpdated untuk node tersebut tidak akan dikembalikan.

    • Contoh Payload:

      data: {"event": "NodeUpdated", "run_id": "8f92b1a6-4d69-422a-a080-50713e488b56", "timestamp": "2025-04-25T08:57:15.208601Z", "node_run_infos": [{"node_name": "custom_python", "node": "custom_python", "status": "Running", "error": null, "duration": 0.0, "description": null, "display_name": null, "output": null}]}
      data: {"event": "NodeUpdated", "run_id": "8f92b1a6-4d69-422a-a080-50713e488b56", "timestamp": "2025-04-25T08:57:15.209621Z", "node_run_infos": [{"node_name": "custom_python", "node": "custom_python", "status": "Completed", "error": null, "duration": 0.001246, "description": null, "display_name": null, "output": {"text": "echo:hello", "input_length": 2}}]}
    • Deskripsi Bidang:

      Nama Bidang

      Tipe

      Deskripsi

      event

      string

      Jenis event, tetap sebagai NodeUpdated.

      run_id

      string

      Pengenal unik untuk run saat ini.

      timestamp

      string

      Cap waktu kejadian, mengikuti standar ISO 8601.

      node_run_infos

      array[object]

      Array yang berisi satu atau beberapa objek informasi run node. Setiap objek mewakili node yang status atau outputnya telah berubah.

      ∟ node_name

      string

      (Dalam node_run_infos) Nama node (bidang warisan, sama dengan bidang node).

      ∟ node

      string

      (Dalam node_run_infos) Nama node.

      ∟ status

      string

      (Dalam node_run_infos) Status running saat ini dari node, seperti Running, Completed, Failed.

      ∟ error

      object atau null

      (Dalam node_run_infos) Jika eksekusi node gagal, berisi objek pesan kesalahan; jika tidak null.

      ∟ duration

      float

      (Dalam node_run_infos) Waktu yang dihabiskan untuk eksekusi node (dalam detik). Untuk status Running, ini biasanya 0.0.

      ∟ description

      string atau null

      (Dalam node_run_infos) Deskripsi node. Disertakan hanya ketika response_config.include_node_description adalah true dalam permintaan; jika tidak null.

      ∟ display_name

      string atau null

      (Dalam node_run_infos) Nama tampilan node. Disertakan hanya ketika response_config.include_node_display_name adalah true dalam permintaan; jika tidak null.

      ∟ output

      object atau null

      (Dalam node_run_infos) Data output node. Disertakan hanya ketika status node adalah Completed dan response_config.include_node_output adalah true dalam permintaan; jika tidak null.

    Event RunOutput

    • Definisi: Event RunOutput menunjukkan bahwa run telah menghasilkan output akhirnya. Biasanya terjadi sebelum event RunTerminated di akhir run Flow.

    • Contoh Payload:

      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_llm_3ce063ad-bc9b-417d-9e68-08ce92c3db1b", "timestamp": "2025-04-30T11:55:24.745130Z", "outputs": {"answer": "Apa yang bisa"}, "output_metadata": {"answer": {"is_stream": true, "status": "Streaming"}}}
      
      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_llm_3ce063ad-bc9b-417d-9e68-08ce92c3db1b", "timestamp": "2025-04-30T11:55:24.829133Z", "outputs": {"answer": " saya bantu?"}, "output_metadata": {"answer": {"is_stream": true, "status": "Streaming"}}}
      
      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_llm_3ce063ad-bc9b-417d-9e68-08ce92c3db1b", "timestamp": "2025-04-30T11:55:24.950055Z", "outputs": {"answer": ""}, "output_metadata": {"answer": {"is_stream": true, "status": "Streaming"}}}
      
      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_llm_3ce063ad-bc9b-417d-9e68-08ce92c3db1b", "timestamp": "2025-04-30T11:55:24.954983Z", "outputs": {}, "output_metadata": {"answer": {"is_stream": true, "status": "Finished"}}}
      
      data: {"event": "RunOutput", "run_id": "4c185c72-1bb0-4beb-a288-f7a73e37fc3b_python_oHG7_1c9fb0ac-0f45-4dbc-bf97-8e4175fd991c", "timestamp": "2025-04-30T11:55:24.957091Z", "outputs": {"python_output": "Halo: Halo! Apa yang bisa saya bantu?"}, "output_metadata": {"python_output": {"is_stream": false, "status": "Finished"}}}
    • Deskripsi Bidang:

      Nama Bidang

      Tipe

      Deskripsi

      event

      string

      Jenis event, tetap sebagai RunOutput.

      run_id

      string

      Pengenal unik untuk run saat ini.

      timestamp

      string

      Cap waktu kejadian, mengikuti standar ISO 8601.

      outputs

      object

      Kamus yang berisi hasil output akhir Flow. Struktur spesifiknya bergantung pada output yang didefinisikan saat mendesain Flow.

      output_metadata

      object

      Kamus yang berisi metadata output Flow. Kuncinya adalah nama output (sesuai dengan kunci dalam outputs), dan nilainya adalah objek yang berisi metadata untuk output tersebut (seperti is_stream dan status).

    Event RunTerminated

    • Definisi: Event RunTerminated menandai akhir run. Biasanya dikirim sebagai event terakhir dalam aliran SSE dari sebuah run.

    • Contoh Payload:

      data: {"event": "RunTerminated", "run_id": "8f92b1a6-4d69-422a-a080-50713e488b56", "timestamp": "2025-04-25T08:57:15.212791Z", "flow_run_info": {"run_id": "8f92b1a6-4d69-422a-a080-50713e488b56", "status": "Completed", "error": null, "otel_trace_id": "0x00000000000000000000000000000000"}}
    • Deskripsi Bidang:

      Nama Bidang

      Tipe

      Deskripsi

      event

      string

      Jenis event, tetap sebagai RunTerminate.

      run_id

      string

      Pengenal unik untuk run saat ini.

      timestamp

      string

      Cap waktu kejadian, mengikuti standar ISO 8601.

      flow_run_info

      object

      Berisi informasi status akhir dari seluruh run.

      ∟ run_id

      string

      Pengenal unik untuk run (dalam flow_run_info, sama dengan run_id luar).

      ∟ status

      string

      Status akhir run (dalam flow_run_info), seperti Completed, Failed, atau Canceled.

      ∟ error

      object atau null

      (Dalam flow_run_info) Jika run gagal, berisi objek pesan kesalahan; jika tidak, adalah null.

      ∟ otel_trace_id

      string

      (Dalam flow_run_info) ID jejak OpenTelemetry yang terkait dengan run ini (mungkin kosong atau bernilai nol).

Metode pemanggilan kompatibel dengan OpenAI

Alur aplikasi tipe obrolan yang disebarkan mendukung metode pemanggilan kompatibel dengan OpenAI dan dapat digunakan oleh klien yang mendukung OpenAI.

Metode berbasis API OpenAI

Contoh ini menunjukkan panggilan streaming menggunakan perintah cURL. Berikut adalah contoh permintaan dan respons:

Permintaan Contoh:

curl --location '<Endpoint>/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "default",  
    "messages": [
        {
            "role": "system",
            "content": "Anda adalah asisten yang membantu."
        },
        {
            "role": "user", 
            "content": "Siapa Anda?"
        }
    ],
    "stream":true
}'

Tabel berikut menjelaskan parameter permintaan.

Parameter

Deskripsi

--location '<Endpoint>/v1/chat/completions'

URL tujuan permintaan. Ganti <Endpoint> dengan endpoint yang Anda peroleh di Langkah 1.

--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Header HTTP. Ganti $DASHSCOPE_API_KEY dengan token yang Anda peroleh di Langkah 1.

"model": "default"

Nama model, yang tetap sebagai default.

"stream":true

Menentukan apakah informasi yang dikembalikan adalah streaming. Catatan: Streaming hanya didukung ketika node LLM digunakan sebagai node output alur aplikasi (node LLM adalah input langsung ke node akhir).

Respons Contoh:

data: {"choices":[{"delta":{"content":"","role":"assistant"},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"finish_reason":null,"delta":{"content":"Saya adalah"},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"model bahasa besar"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"yang dibuat oleh Alibaba Cloud"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":". Saya disebut Qwen."},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":""},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: [DONE]

Integrasi dengan klien lainnya

Contoh ini menunjukkan integrasi dengan ChatBox v1.13.4 pada platform Windows.

  1. Unduh dan instal Chatbox.

  2. Buka ChatBox dan konfigurasikan nama penyedia model, seperti LangStudio, sebagai berikut.

    image

  3. Pilih penyedia model yang telah dikonfigurasikan dan atur parameter permintaan layanan.

    image

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    Mode API

    Tetap sebagai Kompatibel dengan API OpenAI.

    API Key

    Atur ke token layanan yang disebarkan, lihat Peroleh endpoint dan token pada tab Overview.

    API Host

    Atur ke endpoint layanan yang disebarkan (lihat Peroleh endpoint dan token pada tab Overview.) dan tambahkan akhiran /v1 di akhir. Contoh ini menggunakan endpoint internet. Oleh karena itu, host API adalah http://langstudio-20250319153409-xdcp.115770327099****.cn-hangzhou.pai-eas.aliyuncs.com/v1.

    API Path

    Tetap sebagai /chat/completions.

    Model

    Klik New dan masukkan Model ID kustom, seperti qwen3-8b.

  4. Panggil layanan yang disebarkan dalam kotak dialog obrolan.

    image

Lihat catatan jejak

Setelah memanggil layanan, sistem secara otomatis menghasilkan catatan jejak. Pada tab Tracing Analysis, temukan catatan jejak yang ingin Anda kelola dan klik View Trace di kolom Actions.

image

Data jejak memungkinkan Anda melihat informasi input dan output setiap node dalam alur aplikasi, seperti hasil recall database vektor atau informasi input dan output node LLM.

Lampiran: Riwayat Obrolan

Untuk alur aplikasi berbasis obrolan, LangStudio menyediakan fitur untuk menyimpan riwayat percakapan multi-putaran. Anda dapat memilih untuk menggunakan penyimpanan lokal atau eksternal untuk menyimpan riwayat obrolan.

Tipe Penyimpanan

  • Penyimpanan lokal: Layanan menggunakan disk lokal untuk secara otomatis membuat database SQLite bernama chat_history.db pada instance EAS tempat alur aplikasi disebarkan untuk menyimpan riwayat obrolan. Jalur penyimpanan default adalah /langstudio/flow/. Perhatikan bahwa penyimpanan lokal tidak mendukung penyebaran multi-instans. Secara berkala periksa penggunaan disk lokal. Anda juga dapat melihat atau menghapus riwayat obrolan dengan menggunakan API yang disediakan di bawah ini. Jika instance EAS dihapus, riwayat obrolan terkait juga akan dihapus.

  • Penyimpanan eksternal: Mendukung ApsaraDB RDS for MySQL. Untuk menggunakan penyimpanan eksternal, Anda harus mengonfigurasi koneksi RDS MySQL untuk menyimpan riwayat obrolan saat menyebarkan layanan. Untuk informasi lebih lanjut, lihat Konfigurasi Koneksi Layanan - Database. Layanan secara otomatis membuat tabel dengan akhiran nama layanan di database RDS MySQL yang Anda konfigurasikan. Sebagai contoh, layanan membuat tabel langstudio_chat_session_<Nama Layanan> untuk menyimpan sesi obrolan dan tabel langstudio_chat_history_<Nama Layanan> untuk menyimpan riwayat obrolan.

Dukungan Sesi atau Pengguna

Setiap permintaan obrolan ke alur aplikasi bersifat tanpa status. Jika Anda ingin beberapa permintaan diperlakukan sebagai percakapan yang sama, Anda perlu mengonfigurasi header permintaan secara manual. Untuk informasi tentang cara melakukan panggilan, lihat Buat Panggilan API.

Header Permintaan

Tipe Data

Deskripsi

Catatan

Chat-Session-Id

String

ID sesi. Untuk setiap permintaan layanan, sistem secara otomatis menetapkan pengenal unik untuk sesi untuk membedakan antara sesi yang berbeda, dan mengembalikannya melalui bidang Chat-Session-Id dalam Response Header.

ID sesi kustom didukung. Untuk memastikan keunikan, ID sesi harus memiliki panjang 32 hingga 255 karakter dan dapat berisi huruf, angka, garis bawah (_), tanda hubung (-), dan titik dua (:).

Chat-User-Id

String

ID pengguna, yang mengidentifikasi pengguna kepada siapa obrolan tersebut dimiliki. Sistem tidak secara otomatis menetapkan ID pengguna. ID pengguna kustom didukung.

-

API Riwayat Obrolan

Layanan alur aplikasi juga menyediakan operasi API manajemen data riwayat obrolan, yang memungkinkan Anda dengan mudah melihat dan menghapus data tersebut. Anda dapat memperoleh skema API lengkap dengan mengirim permintaan GET ke {Endpoint}/openapi.json. Skema ini dibangun berdasarkan standar Swagger. Untuk pemahaman yang lebih intuitif dan eksplorasi operasi API ini, kami sarankan Anda menggunakan Swagger UI untuk melakukan operasi visualisasi, sehingga operasi menjadi lebih sederhana dan jelas.