All Products
Search
Document Center

Platform For AI:Penerapan alur aplikasi

Last Updated:Aug 22, 2026

Setelah mengembangkan alur aplikasi, Anda dapat menerapkannya sebagai layanan Elastic Algorithm Service (EAS). EAS menyediakan fitur seperti skalabilitas otomatis dan Pemantauan Layanan yang komprehensif, membantu aplikasi beradaptasi dengan perubahan bisnis, meningkatkan stabilitas dan kinerja sistem, serta memenuhi kebutuhan lingkungan produksi.

Prasyarat

Anda telah membuat dan men-debug alur aplikasi. Untuk informasi selengkapnya, lihat Mengembangkan alur aplikasi.

Penerapan 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. Anda hanya dapat menerapkan alur aplikasi jika waktu proses telah dimulai. Tabel berikut menjelaskan parameter utama.

image

Parameter

Deskripsi

Penerapan Sumber Daya

Resource type

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

Instances

Konfigurasikan jumlah instans layanan. Dalam lingkungan produksi, konfigurasikan beberapa instans layanan untuk mengurangi risiko single point of failure.

Deployment resources

Jika Anda hanya menggunakan alur aplikasi untuk penjadwalan alur bisnis, pilih CPU resources yang sesuai berdasarkan kompleksitas alur bisnis tersebut. Dibandingkan dengan GPU resources, CPU resources biasanya lebih hemat biaya. Setelah penerapan, Anda akan dikenai biaya resource untuk EAS. Untuk informasi selengkapnya tentang penagihan, lihat Penagihan Elastic Algorithm Service (EAS).

Virtual Private Cloud (VPC): Alur aplikasi diterapkan sebagai layanan EAS. Untuk memastikan klien dapat mengakses layanan EAS online setelah penerapan, pilih VPC untuk menghubungkan klien ke layanan tersebut. Perlu diperhatikan bahwa layanan EAS tidak dapat mengakses jaringan publik secara default. Jika layanan EAS Anda perlu mengakses jaringan publik, konfigurasikan VPC dengan kemampuan akses jaringan publik. Untuk informasi selengkapnya, lihat Mengakses resource publik atau privat dari EAS.

Catatan

Jika alur aplikasi mencakup koneksi database vektor, seperti Milvus, pastikan VPC yang dikonfigurasi sama dengan VPC tempat instans database vektor berada, atau pastikan kedua jaringan saling terhubung.

Riwayat chat

Enable chat history

Parameter ini hanya berlaku untuk alur aplikasi berbasis chat. Saat diaktifkan, layanan dapat menyimpan dan mentransmisikan riwayat percakapan multi-putaran. Fitur ini harus digunakan bersama parameter header permintaan layanan.

Chat history storage

Penyimpanan lokal tidak mendukung penerapan multi-instans. Jika Anda menerapkan layanan untuk penggunaan produksi, gunakan penyimpanan eksternal, seperti ApsaraDB RDS. Untuk informasi selengkapnya, lihat Lampiran: Riwayat chat.

Penting

Jika Anda menggunakan penyimpanan lokal, penerapan multi-instans tidak didukung. Penskalaan dari satu instans ke beberapa instans juga tidak didukung. Jika tidak, fitur riwayat chat mungkin tidak berfungsi dengan benar.

Analisis Tracing: Saat diaktifkan, Anda dapat melihat detail jejak setelah layanan diterapkan untuk mengevaluasi kinerja alur aplikasi.

Peran dan izin: Dalam alur aplikasi, jika Anda menggunakan database vektor Faiss (Anda harus memilih database vektor Faiss atau Milvus untuk Manajemen basis pengetahuan) atau komponen "Alibaba Cloud IQS-Standard Search" (digunakan oleh templat IQS Web Search Chat Assistant), pilih peran sesuai kebutuhan.

Untuk informasi selengkapnya tentang pengaturan parameter, lihat Penerapan kustom.

Debugging online

Panggil layanan

Debugging online

Setelah layanan berhasil diterapkan, Anda akan diarahkan ke Konsol PAI-EAS. Pada tab Online Debugging, Anda dapat mengonfigurasi dan mengirim permintaan. Kunci dalam badan permintaan harus sama dengan nilai parameter "Conversation Input" pada node Start alur aplikasi. Topik ini menggunakan bidang default question.

image

Panggilan API

  1. Pada tab Overview, peroleh titik akhir dan token layanan.

    image

  2. Kirim permintaan API.

    Anda dapat memanggil layanan dalam mode dasar atau mode lengkap. Tabel berikut menjelaskan perbedaannya.

    Properti

    Mode dasar

    Mode lengkap

    Request path

    <Endpoint>/

    <Endpoint>/run

    Description

    Secara langsung mengembalikan output alur aplikasi.

    Mengembalikan struktur kompleks yang mencakup status node, pesan error, dan pesan output dari alur aplikasi.

    Skenario

    • Anda hanya memerlukan output akhir alur aplikasi dan tidak peduli dengan pemrosesan internal atau statusnya.

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

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

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

    Keunggulan

    Mudah digunakan. Anda tidak perlu mengurai struktur kompleks.

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

    • Membantu pemecahan masalah dan optimalisasi kinerja alur aplikasi.

    Mode dasar

    Perintah cURL

    Layanan alur aplikasi yang diterapkan di EAS mendukung panggilan streaming dan non-streaming menggunakan perintah cURL. Berikut adalah contoh permintaan dan respons:

    Jenis contoh

    Streaming

    Non-streaming

    Contoh permintaan

    curl -X POST \
         -H "Authorization: Bearer <your_token>" \
         -H "Content-Type: application/json" \
         -H "Accept: text/event-stream" \
         -d '{"question": "Where is the capital of France?"}' \
         "<your_endpoint>"
    curl -X POST \
         -H "Authorization: Bearer <your_token>" \
         -H "Content-Type: application/json" \
         -d '{"question": "Where is the capital of France?"}' \
         "<your_endpoint>"

    Contoh respons

    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":"The capital of France is Paris."}

    Tabel berikut menjelaskan parameter permintaan.

    Parameter

    Deskripsi

    -H "Authorization: Bearer <your_token>"

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

    -H "Accept: text/event-stream"

    Menunjukkan bahwa klien menerima permintaan Server-Sent Events (SSE) dan respons berupa stream. Catatan: Panggilan streaming hanya didukung ketika node LLM merupakan node output alur aplikasi. Input langsung ke node akhir harus merupakan node LLM.

    -d '{"question": "Where is the capital of France?"}'

    Badan permintaan. Ini adalah objek JSON yang berisi pasangan kunci-nilai, yaitu string pertanyaan. Kuncinya harus sesuai dengan parameter "Conversation Input" pada node Start alur aplikasi. Topik ini menggunakan bidang default question.

    "<your_endpoint>"

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

    Skrip Python

    Contoh berikut menunjukkan cara menggunakan library requests untuk mengirim permintaan POST ke layanan alur aplikasi. Permintaan dapat berupa streaming atau non-streaming. Pastikan library tersebut telah diinstal. Jika belum, jalankan perintah pip install requests untuk menginstalnya.

    Jenis contoh

    Streaming

    Non-streaming

    Contoh permintaan

    import requests
    import json
    
    url = "http://<your-endpoint-here>"
    token = "<your-token-here>"
    data = {"question": "Where is the capital of France?"}
    
    # Set the request header, including your token.
    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": "Where is the capital of France?"}
    
    # Set the request header, including your token.
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    
    response = requests.post(url, json=data, headers=headers)
    
    if response.status_code == 200:
        print("Request successful. Response:")
        print(response.text)
    else:
        print(f"Request failed. Status code: {response.status_code}")
    

    Contoh respons

    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":"The capital of France is Paris."}

    Tabel berikut menjelaskan parameter permintaan.

    Parameter

    Deskripsi

    url

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

    token

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

    data

    Badan permintaan. Ini adalah objek JSON yang berisi pasangan kunci-nilai, yaitu string pertanyaan. Kuncinya harus sesuai dengan parameter "Conversation Input" pada node Start alur aplikasi. Topik ini menggunakan bidang default question.

    "Accept": "text/event-stream"

    Menunjukkan bahwa klien menerima permintaan SSE dan respons berupa stream. Catatan: Panggilan streaming hanya didukung ketika node LLM merupakan node output alur aplikasi. Input langsung ke node akhir harus merupakan node LLM.

    Mode lengkap

    LangStudio mendukung Server-Sent Events (SSE). Saat Anda mengirim permintaan, layanan dapat mengeluarkan status setiap node, pesan error, dan pesan output selama eksekusi alur aplikasi. Anda juga dapat menyesuaikan konten node_run_infos dalam event. Bagian ini menggunakan debugging online sebagai contoh. Anda harus menambahkan /run ke titik akhir, lalu mengedit badan permintaan:

    image

    Tabel berikut menjelaskan bidang dalam badan permintaan.

    Bidang

    Tipe

    Nilai default

    Deskripsi

    inputs

    Mapping[str, Any]

    None

    Kamus data input untuk alur. Kuncinya harus sesuai dengan nama bidang input yang ditentukan dalam alur. Jika alur tidak memiliki input, abaikan bidang ini.

    stream

    bool

    True

    Mengontrol format respons. Nilai yang valid:

    • True: Merespons dengan stream SSE. Content-Type dalam header respons adalah text/event-stream. Data dikembalikan dalam format DataOnly dan dibagi menjadi event yang berbeda: RunStarted, NodeUpdated, RunOutput, dan RunTerminated. Untuk informasi selengkapnya, lihat bagian berikut.

    • False: Merespons dengan satu objek JSON. Content-Type dalam header respons adalah application/json. Untuk informasi selengkapnya, lihat respons di Debugging online.

    response_config

    Dict[str, Any]

    -

    Mengontrol detail node yang disertakan dalam respons streaming saat stream diatur ke True.

    ∟ include_node_description

    bool

    False

    (Dalam response_config) Menentukan apakah deskripsi node disertakan dalam stream event SSE.

    ∟ include_node_display_name

    bool

    False

    (Dalam response_config) Menentukan apakah nama tampilan node disertakan dalam stream event SSE.

    ∟ include_node_output

    bool

    False

    (Dalam response_config) Menentukan apakah output node disertakan dalam stream event SSE.

    ∟ exclude_nodes

    List[str]

    []

    (Dalam response_config) Daftar nama node yang dikecualikan dari stream event SSE.

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

    Event RunStarted

    • Definisi: Event RunStarted menandai awal eksekusi alur. Biasanya merupakan event pertama yang dikirim dalam stream SSE untuk suatu 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:

      Bidang

      Type

      Deskripsi

      event

      string

      Jenis event. Nilainya tetap RunStarted.

      run_id

      string

      Pengidentifikasi unik untuk eksekusi alur saat ini.

      timestamp

      string

      Timestamp event, dalam format ISO 8601.

      flow_run_info

      object

      Berisi informasi status akhir untuk seluruh run alur.

      ∟ run_id

      string

      (Dalam flow_run_info) Pengidentifikasi unik untuk eksekusi alur. Sama dengan run_id luar.

      ∟ status

      string

      (Dalam flow_run_info) Status awal eksekusi alur. Nilainya tetap Running.

      ∟ error

      object atau null

      (Dalam flow_run_info) Jika eksekusi alur gagal, bidang ini berisi objek pesan error. Jika tidak, nilainya null.

      ∟ otel_trace_id

      string

      (Dalam flow_run_info) ID jejak OpenTelemetry yang terkait dengan eksekusi alur ini. Nilainya bisa kosong atau nol.

    Event NodeUpdated

    • Definisi: Event NodeUpdated menunjukkan bahwa status atau output satu atau beberapa node dalam alur telah berubah. Selama eksekusi alur, event ini biasanya dikirim saat node mulai berjalan (Running) atau menyelesaikan eksekusi (Completed atau Failed). Jika response_config diatur, event ini juga dapat menyertakan deskripsi node, nama tampilan, dan output. Catatan: Jika Anda menentukan exclude_nodes dalam response_config permintaan, event NodeUpdated untuk node yang ditentukan tidak 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:

      Bidang

      Tipe

      Deskripsi

      event

      string

      Jenis event. Nilainya tetap NodeUpdated.

      run_id

      string

      Pengidentifikasi unik untuk eksekusi alur saat ini.

      timestamp

      string

      Timestamp event, dalam format ISO 8601.

      node_run_infos

      array[object]

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

      ∟ node_name

      string

      (Dalam node_run_infos) Nama node. Ini adalah bidang lawas dan sama dengan bidang node.

      ∟ node

      string

      (Dalam node_run_infos) Nama node.

      ∟ status

      string

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

      ∟ error

      object atau null

      (Dalam node_run_infos) Jika eksekusi node gagal, bidang ini berisi objek pesan error. Jika tidak, nilainya null.

      ∟ duration

      float

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

      ∟ description

      string atau null

      (Dalam node_run_infos) Deskripsi node. Bidang ini disertakan hanya jika response_config.include_node_description diatur ke true dalam permintaan. Jika tidak, nilainya null.

      ∟ display_name

      string atau null

      (Dalam node_run_infos) Nama tampilan node. Bidang ini disertakan hanya jika response_config.include_node_display_name diatur ke true dalam permintaan. Jika tidak, nilainya null.

      ∟ output

      object atau null

      (Dalam node_run_infos) Data output node. Bidang ini disertakan hanya jika status node Completed dan response_config.include_node_output diatur ke true dalam permintaan. Jika tidak, nilainya null.

    Event RunOutput

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

    • 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": "What can"}, "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": " I help you with?"}, "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": "Hello: Hello! What can I help you with?"}, "output_metadata": {"python_output": {"is_stream": false, "status": "Finished"}}}
    • Deskripsi bidang:

      Bidang

      Tipe

      Deskripsi

      event

      string

      Jenis event. Nilainya tetap RunOutput.

      run_id

      string

      Pengidentifikasi unik untuk eksekusi alur saat ini.

      timestamp

      string

      Timestamp event, dalam format ISO 8601.

      outputs

      object

      Kamus yang berisi output akhir alur. Strukturnya tergantung pada output yang ditentukan dalam desain alur.

      output_metadata

      object

      Kamus yang berisi metadata output alur. Kuncinya adalah nama output, yang sesuai dengan kunci dalam outputs. Nilainya adalah objek yang berisi metadata untuk output, seperti is_stream dan status.

    Event RunTerminated

    • Definisi: Event RunTerminated menandai akhir eksekusi alur. Biasanya merupakan event terakhir yang dikirim dalam stream SSE untuk suatu 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 diatur ke RunTerminate.

      run_id

      string

      Pengidentifikasi unik untuk eksekusi alur saat ini.

      timestamp

      string

      Timestamp event, dalam format ISO 8601.

      flow_run_info

      object

      Berisi informasi status akhir untuk seluruh run alur.

      ∟ run_id

      string

      (Dalam flow_run_info) Pengidentifikasi unik untuk eksekusi alur. Sama dengan run_id luar.

      ∟ status

      string

      (Dalam flow_run_info) Status akhir eksekusi alur, seperti Completed, Failed, atau Canceled.

      ∟ error

      object atau null

      (Dalam flow_run_info) Jika eksekusi alur gagal, bidang ini berisi objek pesan error. Jika tidak, nilainya null.

      ∟ otel_trace_id

      string

      (Dalam flow_run_info) ID jejak OpenTelemetry yang terkait dengan eksekusi alur ini. Nilainya bisa kosong atau nol.

Panggilan kompatibel OpenAI

Alur aplikasi chat yang diterapkan, atau ChatFlow, mendukung panggilan kompatibel OpenAI. Layanan ini juga dapat digunakan oleh klien lain yang mendukung OpenAI.

Menggunakan API OpenAI

Bagian ini memberikan contoh panggilan streaming menggunakan perintah cURL. Berikut adalah contoh permintaan dan respons:

Contoh permintaan:

curl --location '<Endpoint>/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "default",  
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user", 
            "content": "Who are you?"
        }
    ],
    "stream":true
}'

Tabel berikut menjelaskan parameter permintaan.

Parameter

Deskripsi

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

URL tujuan permintaan. Ganti <Endpoint> dengan titik akhir yang Anda peroleh di Langkah 1 panggilan API.

--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Header permintaan. Ganti $DASHSCOPE_API_KEY dengan token yang Anda peroleh di Langkah 1 panggilan API.

"model": "default"

Nama model. Nilainya tetap default.

"stream":true

Menentukan apakah respons berupa stream. Catatan: Panggilan streaming hanya didukung ketika node LLM merupakan node output alur aplikasi. Input langsung ke node akhir harus merupakan node LLM.

Contoh respons:

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":"I am"},"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":"a large"},"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":"language model"},"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":"created by 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":". I am called 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 aplikasi klien lain

Bagian ini menggunakan aplikasi ChatBox v1.13.4 pada platform Windows sebagai contoh.

  1. Unduh dan instal Chatbox.

  2. Buka ChatBox dan konfigurasikan Model Provider Name, seperti LangStudio.

    image

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

    image

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    API Mode

    Nilainya tetap OpenAI API Compatible.

    API Key

    Token layanan LangStudio yang diterapkan. Untuk informasi selengkapnya tentang cara memperoleh token, lihat Langkah 1 panggilan API.

    API Host

    Titik akhir layanan LangStudio yang diterapkan. Untuk informasi selengkapnya tentang cara memperoleh titik akhir, lihat Langkah 1 panggilan API. Tambahkan sufiks /v1 di akhir titik akhir. Topik ini menggunakan titik akhir Internet sebagai contoh. API host diatur ke http://langstudio-20250319153409-xdcp.115770327099****.cn-hangzhou.pai-eas.aliyuncs.com/v1.

    API Path

    Nilainya tetap /chat/completions.

    Model

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

  4. Panggil layanan LangStudio yang diterapkan di kotak dialog chat.

    image

Tampilkan jejak

Setelah Anda memanggil layanan, jejak akan dibuat secara otomatis. Pada tab Tracing Analysis, temukan jejak yang ingin Anda tampilkan dan klik View Trace di kolom Actions untuk mengevaluasi kinerja alur aplikasi.

image

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

Lampiran: Riwayat chat

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

Jenis penyimpanan

  • Penyimpanan lokal: Layanan menggunakan disk lokal untuk secara otomatis membuat database SQLite bernama chat_history.db pada instans EAS tempat alur aplikasi diterapkan. Database ini menyimpan riwayat chat. Jalur penyimpanan default adalah /langstudio/flow/. Catatan: Penyimpanan lokal tidak mendukung penerapan multi-instans. Anda harus memeriksa penggunaan disk lokal secara berkala. Anda juga dapat menggunakan Operasi API yang disediakan untuk mengkueri dan menghapus data riwayat chat. Jika instans EAS dihapus, riwayat chat terkait juga akan dihapus.

  • Penyimpanan eksternal: Didukung ApsaraDB RDS untuk MySQL. Saat menerapkan layanan, Anda harus mengonfigurasi koneksi ke instans ApsaraDB RDS untuk MySQL untuk menyimpan riwayat chat. Untuk informasi selengkapnya tentang konfigurasi, lihat Konfigurasi koneksi database. Layanan secara otomatis membuat tabel dengan nama layanan sebagai sufiks dalam database ApsaraDB RDS untuk MySQL yang dikonfigurasi. Misalnya, tabel langstudio_chat_session_<service_name> menyimpan sesi chat, dan tabel langstudio_chat_history_<service_name> menyimpan pesan riwayat chat.

Dukungan sesi dan pengguna

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

Header permintaan

Tipe data

Deskripsi

Catatan

Chat-Session-Id

String

ID sesi. Untuk setiap permintaan layanan, sistem secara otomatis menetapkan pengidentifikasi unik untuk sesi guna membedakannya dari sesi lain. ID dikembalikan dalam bidang Chat-Session-Id header respons.

Anda dapat menggunakan ID sesi kustom. Untuk memastikan keunikan, ID sesi harus terdiri dari 32 hingga 255 karakter dan dapat berisi huruf besar, huruf kecil, angka, garis bawah (_), tanda hubung (-), dan titik dua (:).

Chat-User-Id

String

ID pengguna. Mengidentifikasi pengguna yang memiliki chat tersebut. Sistem tidak secara otomatis menetapkan ID pengguna. Anda dapat menggunakan ID pengguna kustom.

-

API riwayat chat

Layanan alur aplikasi juga menyediakan Operasi API untuk mengelola data riwayat chat. Anda dapat menggunakan Operasi API ini untuk melihat dan menghapus data. Untuk memperoleh skema API lengkap, kirim permintaan GET ke {Endpoint}/openapi.json. Skema ini berbasis standar Swagger. Untuk memahami dan mengeksplorasi Operasi API ini dengan lebih baik, Anda dapat menggunakan Swagger UI untuk visualisasi. Hal ini menyederhanakan operasi dan meningkatkan kejelasan.