Skip to main content
Pemanggilan Aplikasi

Pemanggilan Aplikasi

Anda dapat mengintegrasikan aplikasi agen, alur kerja, atau orkestrasi agen dari Model Studio ke dalam sistem bisnis Anda melalui SDK DashScope atau HTTP.

Prasyarat

Gunakan SDK DashScope atau antarmuka HTTP untuk memanggil aplikasi Model Studio. Persiapkan lingkungan Anda sebelum melanjutkan.
Tidak peduli metode pemanggilan yang digunakan, kami sarankan Anda konfigurasikan Kunci API sebagai variabel lingkungan. Jika Anda menggunakan SDK DashScope, Anda juga harus instal SDK DashScope.

Cara menggunakan

Percakapan satu putaran

Kode contoh untuk SDK DashScope atau metode HTTP untuk mengimplementasikan percakapan satu putaran.
  • Python
  • Java
  • HTTP
Permintaan contoh
import os
from http import HTTPStatus
from dashscope import Application
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
response = Application.call(
    # Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan api_key="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    app_id='YOUR_APP_ID',# Ganti dengan ID aplikasi yang sebenarnya
    prompt='Siapa kamu?')

if response.status_code != HTTPStatus.OK:
    print(f'request_id={response.request_id}')
    print(f'code={response.status_code}')
    print(f'message={response.message}')
    print(f'Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
else:
    print(response.output.text)
Tanggapan contoh
Saya adalah model bahasa besar yang dikembangkan oleh Alibaba Cloud, bernama Qwen. Saya dirancang untuk membantu pengguna menghasilkan berbagai jenis teks, seperti artikel, cerita, puisi, cerita, dll., dan dapat disesuaikan serta dioptimalkan sesuai dengan skenario dan kebutuhan yang berbeda. Selain itu, saya juga dapat menjawab berbagai pertanyaan, memberikan informasi dan penjelasan, serta membantu dalam pembelajaran dan penelitian. Jika Anda memiliki kebutuhan apa pun, jangan ragu untuk bertanya kepada saya kapan saja!

Percakapan multi-putaran

Dalam percakapan multi-putaran, LLM dapat merujuk pada riwayat percakapan, sehingga lebih mirip dengan skenario komunikasi sehari-hari.
Saat ini, hanya aplikasi agen dan aplikasi alur kerja dialog yang mendukung percakapan multi-putaran.
  • Ketika Anda memasukkan session_id, permintaan secara otomatis membawa riwayat percakapan yang disimpan di cloud.
    Ketika memasukkan session_id, prompt diperlukan.
  • Anda juga dapat memilih untuk memelihara array messages. Tambahkan setiap putaran riwayat percakapan dan instruksi baru ke dalam array messages. Kemudian, lewatkan riwayat melalui messages.
    Ketika memasukkan messages, prompt bersifat opsional. Jika keduanya dimasukkan, prompt akan ditambahkan ke akhir messages sebagai informasi tambahan.
Jika baik session_id maupun messages dimasukkan, messages akan digunakan terlebih dahulu.
  • Penyimpanan awan (session_id)
  • Pengelolaan mandiri (messages)
  • Python
  • Java
  • HTTP
Permintaan contoh
import os
from http import HTTPStatus
from dashscope import Application
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

def call_with_session():
    response = Application.call(
        # Jika variabel lingkungan tidak dikonfigurasi, Anda dapat mengganti baris berikut dengan api_key="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key langsung ke dalam kode dalam lingkungan produksi untuk mengurangi risiko kebocoran API Key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        app_id='YOUR_APP_ID',  # Ganti dengan ID aplikasi aktual
        prompt='Siapa kamu?')

    if response.status_code != HTTPStatus.OK:
        print(f'request_id={response.request_id}')
        print(f'code={response.status_code}')
        print(f'message={response.message}')
        print(f'Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
        return response

    responseNext = Application.call(
                # Jika variabel lingkungan tidak dikonfigurasi, Anda dapat mengganti baris berikut dengan api_key="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key langsung ke dalam kode dalam lingkungan produksi untuk mengurangi risiko kebocoran API Key.
                api_key=os.getenv("DASHSCOPE_API_KEY"),
                app_id='YOUR_APP_ID',  # Ganti dengan ID aplikasi aktual
                prompt='Apa saja kemampuanmu?',
                session_id=response.output.session_id)  # session_id dari respons sebelumnya

    if responseNext.status_code != HTTPStatus.OK:
        print(f'request_id={responseNext.request_id}')
        print(f'code={responseNext.status_code}')
        print(f'message={responseNext.message}')
        print(f'Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
    else:
        print('%s\n session_id=%s\n' % (responseNext.output.text, responseNext.output.session_id))
        # print('%s\n' % (response.usage))

if __name__ == '__main__':
    call_with_session()
Respons contoh
Saya memiliki beberapa kemampuan dan dapat membantu Anda dengan berbagai tugas. Berikut adalah beberapa kemampuan utama saya:

1. **Pengambilan informasi**: Menyediakan cuaca, berita, fakta sejarah, pengetahuan ilmiah, dan berbagai informasi lainnya.
2. **Pemrosesan bahasa**: Menerjemahkan teks, memperbaiki kesalahan tata bahasa, menghasilkan artikel dan cerita.
3. **Pemecahan masalah teknis**: Menjawab pertanyaan pemrograman, penggunaan perangkat lunak, pemecahan masalah teknis, dll.
4. **Bantuan pendidikan**: Membantu menjawab pertanyaan dalam mata pelajaran seperti matematika, fisika, kimia, dll.
5. **Saran kehidupan**: Memberikan saran tentang kesehatan, diet, perjalanan, belanja, dll.
6. **Interaksi hiburan**: Menceritakan lelucon, bermain game kata, terlibat dalam interaksi obrolan sederhana.
7. **Manajemen jadwal**: Mengingatkan tanggal penting, mengatur jadwal, menyetel pengingat.
8. **Analisis data**: Menjelaskan bagan data, memberikan saran analisis data.
9. **Dukungan emosional**: Mendengarkan perasaan Anda, memberikan kenyamanan dan dukungan.

Jika Anda memiliki kebutuhan atau pertanyaan tertentu, Anda bisa memberi tahu saya langsung, dan saya akan melakukan yang terbaik untuk membantu Anda!
 session_id=98ceb3ca0c4e4b05a20a00f913050b42

Pass parameter kustom

Untuk menyesuaikan agen atau alur kerja yang sama dengan skenario bisnis yang berbeda, Anda dapat mengonfigurasi parameter kustom untuk plugin atau node, dan meneruskan parameter melalui biz_params saat memanggil aplikasi. Untuk mengetahui cara mengonfigurasi parameter tersebut, lihat Penerusan parameter aplikasi. Contoh kode:
  1. Plugin kustom parameter: Teruskan melalui Agent Application terkait atau melalui Plug-in Node dari Workflow Application terkait. Anda dapat meneruskan parameter dan informasi otentikasi tingkat pengguna untuk plugin kustom:
    • Parameter: user_defined_params.
    • Otentikasi tingkat pengguna: user_defined_tokens. user_token adalah informasi otentikasi yang diperlukan oleh plugin, seperti DASHSCOPE_API_KEY.
    Berikut ini adalah contoh Agent Application yang membutuhkan parameter index dan informasi otentikasi tingkat pengguna dari plugin terkait.
    Alat plugin hanya dapat dikaitkan dengan Agent Applications di ruang kerja yang sama.
    Ganti your_plugin_code dengan ID alat plugin terkait yang ditampilkan pada kartu plugin, dan teruskan pasangan nilai-kunci dari parameter input. Dalam contoh ini, article_index dengan nilai 2.
    • Penerusan parameter
    • Otentikasi tingkat pengguna
    • Python
    • Java
    • HTTP
    Contoh permintaan
    import os
    from http import HTTPStatus
    # Versi SDK dashscope yang direkomendasikan >= 1.14.0
    from dashscope import Application
    import dashscope
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    biz_params = {
        # Penerusan parameter input plugin kustom untuk aplikasi agen, ganti your_plugin_code dengan ID plugin kustom Anda
        "user_defined_params": {
            "your_plugin_code": {
                "article_index": 2}}}
    response = Application.call(
            # Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan api_key="sk-xxx". Namun, tidak disarankan untuk mengkode keras API Key langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
            api_key=os.getenv("DASHSCOPE_API_KEY"),
            app_id='YOUR_APP_ID',
            prompt='Isi konvensi asrama',
            biz_params=biz_params)
    
    if response.status_code != HTTPStatus.OK:
        print(f'request_id={response.request_id}')
        print(f'code={response.status_code}')
        print(f'message={response.message}')
        print(f'Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
    else:
        print('%s\n' % (response.output.text))  # Proses output teks saja
        # print('%s\n' % (response.usage))
    
    Contoh tanggapan
    Aturan kedua Konvensi Asrama menyatakan:
    
    "Anggota asrama harus saling membantu, saling peduli, saling belajar, dan bersama-sama meningkatkan; bersikap toleran, rendah hati, saling menghormati, dan bersikap tulus satu sama lain."
    
    Ini menunjukkan bahwa di dalam asrama, anggota harus menciptakan suasana positif untuk hidup dan belajar, mendukung dan membantu satu sama lain, serta belajar untuk memahami dan menghormati satu sama lain. Jika Anda perlu mengetahui tentang klausul lain dari konvensi, silakan beri tahu saya!
    
  2. Parameter node kustom: Teruskan melalui Workflow Application's Start Node, atau melalui Agent Orchestration Application's Application Node. Pada contoh berikut, Workflow Application mendefinisikan parameter city di Start Node. Masukkan variabel city dan query di Prompt, lalu Publish aplikasi tersebut.
    image
    Saat memanggil, teruskan city melalui biz_params dan teruskan query melalui prompt.
    • Python
    • Java
    • HTTP
    Contoh permintaan
    import os
    from http import HTTPStatus
    from dashscope import Application
    import dashscope
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    # Penerusan parameter kustom untuk aplikasi alur kerja dan orkestrasi agen
    biz_params = {"city": "Hangzhou"}
    response = Application.call(
        # Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan api_key="sk-xxx". Namun, tidak disarankan untuk mengkode keras API Key langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        app_id='YOUR_APP_ID',  # Ganti dengan ID aplikasi sebenarnya
        prompt='Kueri pembagian administratif kota ini',
        biz_params=biz_params  # Teruskan parameter bisnis
    )
    
    if response.status_code != HTTPStatus.OK:
        print(f'request_id={response.request_id}')
        print(f'code={response.status_code}')
        print(f'message={response.message}')
        print(f'Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
    else:
        print(f'{response.output.text}')  # Proses output teks saja
    
    Contoh tanggapan
    Kota Hangzhou, sebagai ibu kota Provinsi Zhejiang, memiliki pembagian administratif yang terdiri dari 10 distrik: Distrik Shangcheng, Distrik Gongshu, Distrik Xihu, Distrik Binjiang, Distrik Xiaoshan, Distrik Yuhang, Distrik Linping, Distrik Qiantang, Distrik Fuyang, dan Distrik Lin'an. Setiap distrik memiliki karakteristik dan fokus pengembangan uniknya sendiri.
    
    - Distrik Shangcheng: Terletak di area pusat Hangzhou, ini adalah salah satu pusat politik, ekonomi, dan budaya kota.
    - Distrik Gongshu: Terkenal dengan budaya kanalnya, fitur banyak situs warisan budaya dan sejarah.
    - Distrik Xihu: Terkenal dengan area pemandangan Danau Barat, tujuan penting untuk pariwisata.
    - Distrik Binjiang: Pusat industri teknologi tinggi, dengan perusahaan terkenal seperti Alibaba yang berlokasi di sini.
    - Distrik Xiaoshan: Distrik administratif di tenggara, mengalami pertumbuhan ekonomi pesat, terutama di sektor manufaktur.
    - Distrik Yuhang: Telah berkembang pesat dalam beberapa tahun terakhir, terutama di bidang ekonomi internet; markas besar Alibaba juga berlokasi di sini (Catatan: Markas besar Alibaba sebenarnya berada di Distrik Binjiang).
    - Distrik Linping: Distrik baru yang bertujuan untuk mendorong perkembangan ekonomi dan sosial komprehensif di wilayah tersebut.
    - Distrik Qiantang: Juga hasil penyesuaian administratif baru-baru ini, berfokus pada integrasi inovasi dan perlindungan ekologi.
    - Distrik Fuyang: Terletak di barat daya Hangzhou, dikenal dengan lanskap alam yang kaya dan sejarah serta budaya panjangnya.
    - Distrik Lin'an: Terletak di barat Hangzhou, terkenal dengan lingkungan ekologi yang indah dan warisan budaya yang mendalam.
    
    Harap dicatat bahwa perencanaan kota dapat berubah seiring waktu, dan disarankan untuk merujuk ke informasi resmi terbaru.
    

Keluaran Streaming

Dalam mode keluaran streaming, model menghasilkan hasil perantara, dan hasil akhir terbentuk dengan menggabungkan hasil perantara ini. Anda dapat membaca keluaran model saat dihasilkan, sehingga mempersingkat waktu tunggu untuk tanggapan model. Tergantung pada metode pemanggilan, Anda dapat mengatur parameter untuk mengimplementasikan keluaran streaming:
  • Python SDK: Atur stream ke True.
  • Java SDK: Panggil melalui antarmuka streamCall.
  • HTTP: Tentukan X-DashScope-SSE sebagai enable di Header.
keluaran streaming inkrementalincremental_output (incrementalOutput untuk Java) ke true. Untuk HTTP, atur incremental_output ke true dan letakkan dalam objek parameter.
Contoh:
  • Untuk Agent Application:
    • Python
    • Java
    • HTTP
    Permintaan Contoh
    import os
    from http import HTTPStatus
    from dashscope import Application
    import dashscope
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    responses = Application.call(
                # Jika variabel lingkungan tidak dikonfigurasi, ganti baris berikut dengan: api_key="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
                api_key=os.getenv("DASHSCOPE_API_KEY"),
                app_id='YOUR_APP_ID',
                prompt='Siapa kamu?',
                stream=True,  # Keluaran streaming
                incremental_output=True)  # Keluaran inkremental
    
    for response in responses:
        if response.status_code != HTTPStatus.OK:
            print(f'request_id={response.request_id}')
            print(f'code={response.status_code}')
            print(f'message={response.message}')
            print(f'Lihat dokumentasi: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
        else:
            print(f'{response.output.text}\n')  # Proses untuk mengeluarkan hanya teks
    
    Tanggapan Contoh
    Saya adalah
    
    Alibaba
    
    Cloud
    
    model bahasa skala besar,
    
    nama saya adalah
    
    Qwen.
    
  • Workflow Application menyediakan dua mode keluaran streaming, ditentukan oleh nilai dari flow_stream_mode. Nilai parameter dan metode penggunaan:
    • full_thoughts (nilai default):
      • Deskripsi: Hasil streaming dari semua node akan dikeluarkan di bidang thoughts.
      • Persyaratan: Anda juga harus mengatur has_thoughts ke True.
    • agent_format:
      • Deskripsi: Mode keluaran yang sama dengan aplikasi agen.
      • Efek: Di konsol, Anda dapat mengaktifkan sakelar Response untuk node tertentu, dan hasil streaming dari node tersebut akan disertakan dalam bidang text dari output.
      • Skenario: Cocok untuk skenario di mana Anda hanya peduli pada keluaran node perantara tertentu.
      Sakelar Response hanya tersedia di node transformasi teks, node LLM, dan node akhir (sakelar ini dihidupkan secara default untuk node akhir). Node yang tidak mendukung keluaran streaming akan mengeluarkan kontennya sekaligus.
    Contoh:
    • full_thoughts
    • agent_format
    Ini adalah dipublikasikan Workflow Application dengan keluaran streaming.
    image
    • Python
    • Java
    • HTTP
    Permintaan Contoh
    import os
    from http import HTTPStatus
    from dashscope import Application
    import dashscope
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    biz_params = {
        "city": "Hangzhou"}
    responses = Application.call(
        # Jika variabel lingkungan tidak dikonfigurasi, ganti baris berikut dengan: api_key="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # Ganti dengan ID aplikasi aktual
        app_id='YOUR_APP_ID',
        prompt='Halo',
        biz_params=biz_params,
        # Aktifkan keluaran streaming
        stream=True,
        # incremental_output=true mengaktifkan keluaran inkremental, false menonaktifkannya, defaultnya adalah false jika tidak ditentukan
        incremental_output=True,
        # Perlu mengatur has_thoughts ke True
        has_thoughts=True)
    
    for response in responses:
        if response.status_code != HTTPStatus.OK:
            print(f'request_id={response.request_id}')
            print(f'code={response.status_code}')
            print(f'message={response.message}')
            print(f'Lihat dokumentasi: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
        else:
            print(f'{response.output.thoughts}\n')  # Proses keluaran untuk mengembalikan hanya thoughts; informasi proses dikembalikan di bidang thoughts dari output
    
    Tanggapan Contoh
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_99FA","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_99FA"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"Dongpo\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_99FA"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\" Pork, West Lake Vinegar Fish,\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_99FA"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\" Longjing Shrimp, Hangzhou Pa\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_99FA"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"stry, Beggar\'s Chicken\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_qkYJ","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\"West Lake,\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\" Lingyin Temple, Xixi\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\" National Wetland Park, Hefang\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\" Street, Hangzhou Botanical Garden\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_qkYJ","nodeExecTime":"1048ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"End","nodeResult":"{\\"result\\":\\"What do you think about our recommendation?\\"}","nodeType":"End","nodeStatus":"success","nodeId":"End_DrQn7F","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    • Setiap item dalam thoughts adalah detail eksekusi dari sebuah node. Berikut adalah contoh hasil node LLM.
    id:7
    event:result
    :HTTP_STATUS/200
    data:
    {
        "output": {
            "thoughts": [
                {
                    "response": "{\"nodeName\":\"Start\",\"nodeType\":\"Start\",\"nodeStatus\":\"success\",\"nodeId\":\"Start_bYxoRU\",\"nodeExecTime\":\"0ms\"}"
                },
                {
                    "response": "{\"nodeName\":\"LLM_1\",\"nodeResult\":\"{\\\"result\\\":\\\"Songcheng Fish Soup\\\"}\",\"nodeType\":\"LLM\",\"nodeStatus\":\"success\",\"nodeId\":\"LLM_j45e\",\"nodeExecTime\":\"1167ms\"}"
                },
                {
                    "response": "{\"nodeName\":\"LLM_2Km9\",\"nodeResult\":\"{\\\"result\\\":\\\"\\\"}\",\"nodeType\":\"LLM\",\"nodeStatus\":\"executing\",\"nodeId\":\"LLM_2Km9\"}"
                }
            ],
            "session_id": "6035ee0814b64a9fb88346ecaf8b44bf",
            "finish_reason": "null"
        },
        "usage": {
            "models": [
                {
                    "input_tokens": 25,
                    "output_tokens": 21,
                    "model_id": "qwen-max"
                }
            ]
        },
        "request_id": "64825069-b3aa-93a7-bcf1-c66fe57111fd"
    }
    
    Jika Anda tertarik pada hasil streaming dari node LLM (menggunakan LLM_j45e dalam contoh di atas), Anda dapat fokus pada keluaran node dengan nodeId LLM_j45e di setiap push dari thoughts.
    • Jika sebuah node gagal, seluruh tugas juga akan gagal.

Ambil basis pengetahuan

Basis Pengetahuan adalah kemampuan RAG dari Model Studio. Ini dapat secara efektif melengkapi model dengan pengetahuan pribadi dan terbaru. Anda dapat menentukan ruang lingkup pengambilan saat memanggil Agent Applications untuk meningkatkan akurasi jawaban.

Sebelum Anda mulai

Di konsol Model Studio, aktifkan Knowledge Base Retrieval Augmentation untuk Agent Application Anda. Kemudian, Publish aplikasi tersebut.
Lewati prasyarat ini untuk RAG Applications.

Tentukan ruang lingkup pengambilan

  1. Untuk mengambil basis pengetahuan yang ditentukan, pilih salah satu metode berikut:
    • Di konsol, klik Configure Knowledge Base di aplikasi dan pilih basis pengetahuan yang ditentukan. Lalu, Publish aplikasi tersebut.
    • Jangan asosiasikan basis pengetahuan yang ditentukan di konsol. Kirim ID basis pengetahuan melalui rag_options saat melakukan panggilan API;
    • Asosiasikan basis pengetahuan yang ditentukan di konsol, dan kirim ID basis pengetahuan melalui rag_options saat melakukan panggilan API.
      Dalam hal ini, hanya basis pengetahuan yang dikirim selama pemanggilan yang akan diambil. Sebagai contoh, sebuah Agent Application diasosiasikan dengan basis pengetahuan A. Namun, Anda menentukan basis pengetahuan B saat melakukan panggilan API. Maka, basis pengetahuan A tidak akan diambil, hanya basis pengetahuan B yang akan diambil.
    Untuk mendapatkan ID basis pengetahuan (pipeline_ids): Anda bisa mendapatkannya di halaman Knowledge Base Index, atau gunakan Data.Id yang dikembalikan oleh CreateIndex API. CreateIndex hanya mendukung basis pengetahuan tidak terstruktur. Spesifikasi Telepon Bailian.docx digunakan dalam sampel berikut sebagai basis pengetahuan tidak terstruktur.
    • Python
    • Java
    • HTTP
    Contoh permintaan
    import os
    from http import HTTPStatus
    # Versi SDK dashscope yang direkomendasikan >= 1.20.11
    from dashscope import Application
    import dashscope
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    
    response = Application.call(
        # Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan api_key="sk-xxx". Namun, tidak disarankan untuk mengkode keras API Key langsung ke dalam kode dalam lingkungan produksi untuk mengurangi risiko kebocoran API Key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        app_id='YOUR_APP_ID',  # Ganti YOUR_APP_ID dengan ID aplikasi
        prompt='Tolong rekomendasikan telepon seluler di bawah 3000 yuan',
        rag_options={
            "pipeline_ids": ["YOUR_PIPELINE_ID1,YOUR_PIPELINE_ID2"],  # Ganti dengan ID basis pengetahuan aktual, pisahkan beberapa ID dengan koma
        }
    )
    
    if response.status_code != HTTPStatus.OK:
        print(f'request_id={response.request_id}')
        print(f'code={response.status_code}')
        print(f'message={response.message}')
        print(f'Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
    else:
        print('%s\n' % (response.output.text))  # Proses keluaran teks saja
        # print('%s\n' % (response.usage))
    
    Contoh tanggapan
    Berdasarkan anggaran Anda, saya merekomendasikan **Bailian Zephyr Z9**. Ponsel ini dibanderol antara 2499-2799 yuan, yang sesuai dengan anggaran Anda. Fiturnya mencakup desain layar ringan 6,4 inci 1080 x 2340 piksel, dipadukan dengan penyimpanan 128GB dan RAM 6GB, cocok untuk penggunaan sehari-hari. Selain itu, ia memiliki baterai 4000mAh dan lensa yang mendukung zoom digital 30×, yang dapat memenuhi kebutuhan fotografi dan masa pakai baterai Anda. Jika Anda mencari ponsel yang tipis, portabel, dan memiliki fitur lengkap, Bailian Zephyr Z9 akan menjadi pilihan yang baik.
    
  2. Ambil dokumen tak terstruktur yang ditentukan: Kirim ID basis pengetahuan, ID dokumen, tag, atau metadata (pasangan kunci-nilai) dalam rag_options.
    ID dokumen, tag, dan metadata hanya efektif untuk dokumen tak terstruktur.
    • Bagaimana cara mendapatkannya:
      • ID Dokumen (file_ids): Anda bisa menemukannya di halaman Data Aplikasi, atau gunakan ID yang dikembalikan oleh AddFile API saat mengimpor dokumen.
      • Tag Dokumen: Anda bisa menemukan tag di halaman Data Aplikasi, atau dapatkan dari DescribeFile API.
      • Metadata Dokumen: Di halaman Basis Pengetahuan, klik View untuk masuk ke basis pengetahuan. Lalu, klik Metadata Information.
    • Anda dapat menentukan beberapa ID dokumen, tetapi dokumen tersebut harus sudah termasuk dalam indeks pengetahuan.
    • Saat menentukan ID dokumen, Anda juga harus menentukan ID basis pengetahuan tempat dokumen tersebut berada.
    • Hanya dokumen yang ditentukan yang akan diambil. Sebagai contoh, sebuah Agent Application mengasosiasikan basis pengetahuan A, tetapi pemanggilan API menentukan dokumen dari basis pengetahuan B. Maka, dokumen dari A tidak akan diambil, hanya dokumen dari B yang akan diambil. Spesifikasi Telepon Bailian.docx digunakan dalam sampel berikut sebagai basis pengetahuan tidak terstruktur.
      • Python
      • Java
      • HTTP
      Contoh permintaan
      import os
      from http import HTTPStatus
      # Versi SDK dashscope yang direkomendasikan >= 1.20.11
      from dashscope import Application
      import dashscope
      dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
      
      response = Application.call(
          # Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan api_key="sk-xxx". Namun, tidak disarankan untuk mengkode keras API Key langsung ke dalam kode dalam lingkungan produksi untuk mengurangi risiko kebocoran API Key.
          api_key=os.getenv("DASHSCOPE_API_KEY"),
          app_id='YOUR_APP_ID',  # Ganti YOUR_APP_ID dengan ID aplikasi
          prompt='Tolong rekomendasikan ponsel di bawah 3000 yuan',
          rag_options={
              "pipeline_ids": ["YOUR_PIPELINE_ID1", "YOUR_PIPELINE_ID2"],  # Ganti dengan ID basis pengetahuan aktual, pisahkan beberapa dengan koma
              "file_ids": ["YOUR_FILE_ID1", "YOUR_FILE_ID2"],  # Ganti dengan ID dokumen tidak terstruktur aktual, pisahkan beberapa dengan koma
              "metadata_filter": {  # Pasangan kunci-nilai metadata dokumen, pisahkan beberapa dengan koma
                  "key1": "value1",
                  "key2": "value2"
              },
              "tags": ["tag1", "tag2"]  # Tag dokumen, pisahkan beberapa dengan koma
          }
      )
      
      if response.status_code != HTTPStatus.OK:
          print(f'request_id={response.request_id}')
          print(f'code={response.status_code}')
          print(f'message={response.message}')
          print(f'Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
      else:
          print('%s\n' % (response.output))
      
      Contoh tanggapan
      {
          "text": "Dalam anggaran di bawah 3000 yuan, saya merekomendasikan Anda mempertimbangkan **Bailian Zephyr Z9**. Ponsel ini memiliki fitur berikut:
      
      - **Layar**: 6,4 inci 1080 x 2340 piksel, cocok untuk penggunaan sehari-hari dan hiburan.
      - **Memori dan penyimpanan**: RAM 6GB + ruang penyimpanan 128GB, yang dapat memenuhi kebutuhan kehalusan dan penyimpanan sebagian besar pengguna.
      - **Kapasitas baterai**: 4000mAh, memberikan jaminan penggunaan sepanjang hari.
      - **Fungsi kamera**: Dilengkapi lensa dengan zoom digital 30×, mampu menangkap detail dari jarak lebih jauh.
      - **Fitur lainnya**: Desain ringan dan portabel, mudah dibawa.
      
      Harga referensi adalah antara 2499 dan 2799 yuan, yang sangat sesuai dengan persyaratan anggaran Anda dan menawarkan nilai uang yang baik. Semoga saran-saran ini membantu!",
          "finish_reason": "stop",
          "session_id": "10bdea3d1435406aad8750538b701bee",
          "thoughts": null,
          "doc_references": null
      }
      
  3. Ambil data yang ditentukan dari dokumen terstruktur: Kirim ID basis pengetahuan dan pasangan "header data terstruktur + nilai" dalam rag_options. Dapatkan pasangan kunci-nilai data terstruktur (structured_filter): Di halaman Basis Pengetahuan, klik View untuk masuk ke basis pengetahuan. Selanjutnya, klik View Index.
    • Python
    • Java
    • HTTP
    Contoh permintaan
    import os
    from http import HTTPStatus
    # Versi SDK dashscope yang direkomendasikan >= 1.20.11
    from dashscope import Application
    import dashscope
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    
    response = Application.call(
        # Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan api_key="sk-xxx". Namun, tidak disarankan untuk mengkode keras API Key langsung ke dalam kode dalam lingkungan produksi untuk mengurangi risiko kebocoran API Key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        app_id='YOUR_APP_ID',  # Ganti YOUR_APP_ID dengan ID aplikasi
        prompt='Tolong rekomendasikan ponsel di bawah 3000 yuan',
        rag_options={
            "pipeline_ids": ["YOUR_PIPELINE_ID1", "YOUR_PIPELINE_ID2"],  # Ganti dengan ID basis pengetahuan aktual, pisahkan beberapa dengan koma
             "structured_filter": {  # Pasangan kunci-nilai data terstruktur, sesuai dengan data terstruktur, pisahkan beberapa dengan koma
                "key1": "value1",
                "key2": "value2"
             }
        }
    )
    
    if response.status_code != HTTPStatus.OK:
        print(f'request_id={response.request_id}')
        print(f'code={response.status_code}')
        print(f'message={response.message}')
        print(f'Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
    else:
        print('%s\n' % (response.output))
    
    Contoh tanggapan
    {
        "text": "Saya merekomendasikan ponsel \"Bailian\", yang dibanderol 2999 yuan, sesuai dengan persyaratan anggaran Anda. Jika Anda ingin mengetahui informasi lebih lanjut, seperti performa, penampilan, dll., silakan beri tahu saya.",
        "finish_reason": "stop",
        "session_id": "80a3b868b5ce42c8a12f01dccf8651e2",
        "thoughts": null,
        "doc_references": null
    }
    
Lihat informasi

Lihat proses pengambilan: Saat melakukan panggilan, tambahkan has_thoughts ke dalam kode dan atur menjadi True. Proses pengambilan akan dikembalikan di bidang thoughts dari output.

Lihat sumber jawaban: Aktifkan Show Source di Retrieval Configuration dari Agent Application dan publikasikan aplikasi tersebut.
image

Referensi API

Untuk daftar lengkap parameter, lihat Application calling API.

Kode kesalahan

Jika panggilan gagal dan pesan kesalahan dikembalikan, lihat Pesan kesalahan untuk pemecahan masalah.

Referensi

  • Untuk metode berkode rendah untuk memanggil aplikasi RAG dengan API/SDK, lihat Bangun aplikasi RAG dengan cepat menggunakan kode rendah.
  • Untuk informasi tentang model yang dapat dipilih, lihat Model.
  • Untuk informasi tentang cara membangun dan menggunakan aplikasi, lihat Ikhtisar aplikasi.
  • Untuk alat rekayasa prompt untuk aplikasi, lihat Rekayasa prompt.

FAQ

  1. Periksa apakah nama kelas dan nama paket dalam pernyataan impor sudah benar.
  2. Tambahkan dependensi: Jika Anda menggunakan Maven atau Gradle untuk manajemen proyek, pastikan bahwa pustaka dependensi DashScope Java SDK telah ditambahkan ke pom.xml atau build.gradle, dan merupakan versi terbaru. Anda dapat mengunjungi Maven untuk mendapatkan nomor versi terbaru dari DashScope Java SDK.
<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>Isi nomor versi terbaru di sini, seperti 2.16.4</version>
</dependency>
// https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
implementation group: 'com.alibaba', name: 'dashscope-sdk-java', version: 'Isi nomor versi terbaru di sini, seperti 2.16.4'
  1. Tingkatkan SDK: Versi lama DashScope Java SDK mungkin tidak mencakup fitur atau kelas yang Anda butuhkan. Jika Anda sudah menambahkan pustaka dependensi DashScope Java SDK, periksa apakah itu adalah versi terbaru. Jika tidak, tingkatkan ke versi terbaru. Anda dapat memodifikasi versi DashScope Java SDK ke versi terbaru di file pom.xml atau build.gradle.
<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>Harap modifikasi nomor versi di sini ke versi terbaru</version>
</dependency>
// https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
implementation group: 'com.alibaba', name: 'dashscope-sdk-java', version: 'Harap modifikasi nomor versi di sini ke versi terbaru'
  1. Muat ulang proyek agar perubahan berlaku.
  2. Jalankan kembali contoh kode tersebut. Jika masalah tetap ada, ajukan tiket untuk bantuan lebih lanjut.