全部产品
Search
文档中心

Alibaba Cloud Model Studio:API Aplikasi

更新时间:Oct 15, 2025

Topik ini menjelaskan parameter input dan output saat memanggil aplikasi Model Studio.

Panduan terkait: Pemanggilan aplikasi.

Metode pemanggilan

Anda dapat menggunakan DashScope SDK atau antarmuka HTTP untuk memanggil aplikasi Model Studio (agen, alur kerja, atau orkestrasi agen).

Sebelum memulai, pastikan Anda telah membuat Aplikasi Model Studio, memperoleh Kunci API, dan atur Kunci API sebagai variabel lingkungan. Untuk menggunakan SDK, Anda juga harus instal SDK DashScope.

Badan permintaan

Contoh permintaan

Percakapan satu putaran

Python

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)
Java

Permintaan contoh

// Versi SDK dashscope yang direkomendasikan >= 2.12.0
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
    static {
      Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    public static void appCall()
            throws ApiException, NoApiKeyException, InputRequiredException {
        ApplicationParam param = ApplicationParam.builder()
                // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan .apiKey("sk-xxx"). Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .appId("YOUR_APP_ID")
                .prompt("Siapa kamu?")
                .build();

        Application application = new Application();
        ApplicationResult result = application.call(param);

        System.out.printf("text: %s\n",
                result.getOutput().getText());
    }

    public static void main(String[] args) {
        try {
            appCall();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.err.println("message: "+e.getMessage());
            System.out.println("Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
        }
        System.exit(0);
    }
}
HTTP
Curl

Permintaan contoh

curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/YOUR_APP_ID/completion \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "input": {
        "prompt": "Siapa kamu?"
    },
    "parameters":  {},
    "debug": {}
}' 
Ganti YOUR_APP_ID dengan ID aplikasi yang sebenarnya.
PHP

Permintaan contoh

<?php

# Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan API Key Anda: $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 = getenv("DASHSCOPE_API_KEY");
$application_id = 'YOUR_APP_ID'; // Ganti dengan ID aplikasi yang sebenarnya

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Membuat data permintaan
$data = [
    "input" => [
        'prompt' => 'Siapa kamu?'
    ]
];

// Enkode data sebagai JSON
$dataString = json_encode($data);

// Periksa apakah json_encode berhasil
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON encoding gagal dengan kesalahan: " . json_last_error_msg());
}

// Inisialisasi sesi curl
$ch = curl_init($url);

// Set opsi curl
curl_setopt($ch, curlOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, curlOPT_POSTFIELDS, $dataString);
curl_setopt($ch, curlOPT_RETURNTRANSFER, true);
curl_setopt($ch, curlOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key
]);

// Eksekusi permintaan
$response = curl_exec($ch);

// Periksa apakah eksekusi curl berhasil
if ($response === false) {
    die("curl Error: " . curl_error($ch));
}

// Dapatkan kode status HTTP
$status_code = curl_getinfo($ch, curlINFO_HTTP_CODE);
// Tutup sesi curl
curl_close($ch);
// Dekode data respons
$response_data = json_decode($response, true);
// Tangani respons
if ($status_code == 200) {
    if (isset($response_data['output']['text'])) {
        echo "{$response_data['output']['text']}\n";
    } else {
        echo "Tidak ada teks dalam respons.\n";
    }}
else {
    if (isset($response_data['request_id'])) {
        echo "request_id={$response_data['request_id']}\n";}
    echo "code={$status_code}\n";
    if (isset($response_data['message'])) {
        echo "message={$response_data['message']}\n";} 
    else {
        echo "message=Kesalahan tidak dikenal\n";}
}
?>
Node.js

Dependensi:

npm install axios

Permintaan contoh

const axios = require('axios');

async function callDashScope() {
    // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey='sk-xxx'. Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
    const apiKey = process.env.DASHSCOPE_API_KEY;
    const appId = 'YOUR_APP_ID';// Ganti dengan ID aplikasi yang sebenarnya

    const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;

    const data = {
        input: {
            prompt: "Siapa kamu?"
        },
        parameters: {},
        debug: {}
    };

    try {
        const response = await axios.post(url, data, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            }
        });

        if (response.status === 200) {
            console.log(`${response.data.output.text}`);
        } else {
            console.log(`request_id=${response.headers['request_id']}`);
            console.log(`code=${response.status}`);
            console.log(`message=${response.data.message}`);
        }
    } catch (error) {
        console.error(`Error memanggil DashScope: ${error.message}`);
        if (error.response) {
            console.error(`Status respons: ${error.response.status}`);
            console.error(`Data respons: ${JSON.stringify(error.response.data, null, 2)}`);
        }
    }
}

callDashScope();
C#

Permintaan contoh

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        //Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key. 
        string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("Variabel lingkungan DASHSCOPE_API_KEY belum diset.");
        string appId = "YOUR_APP_ID"; // Ganti dengan ID aplikasi yang sebenarnya

        string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

            string jsonContent = @"{
                ""input"": {
                    ""prompt"": ""Siapa kamu?""
                },
                ""parameters"": {},
                ""debug"": {}
            }";

            HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            try
            {
                HttpResponseMessage response = await client.PostAsync(url, content);

                if (response.IsSuccessStatusCode)
                {
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("Permintaan berhasil:");
                    Console.WriteLine(responseBody);
                }
                else
                {
                    Console.WriteLine($"Permintaan gagal dengan kode status: {response.StatusCode}");
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error memanggil DashScope: {ex.Message}");
            }
        }
    }
}
Go

Permintaan contoh

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	// Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey := "sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	appId := "YOUR_APP_ID" // Ganti dengan ID aplikasi yang sebenarnya

	if apiKey == "" {
		fmt.Println("Pastikan DASHSCOPE_API_KEY telah diset.")
		return
	}

	url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

	// Buat body permintaan
	requestBody := map[string]interface{}{
		"input": map[string]string{
			"prompt": "Siapa kamu?",
		},
		"parameters": map[string]interface{}{},
		"debug":      map[string]interface{}{},
	}

	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		fmt.Printf("Gagal melakukan marshal JSON: %v\n", err)
		return
	}

	// Buat permintaan HTTP POST
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("Gagal membuat permintaan: %v\n", err)
		return
	}

	// Set header permintaan
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	// Kirim permintaan
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Gagal mengirim permintaan: %v\n", err)
		return
	}
	defer resp.Body.Close()

	// Baca respons
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Gagal membaca respons: %v\n", err)
		return
	}

	// Proses respons
	if resp.StatusCode == http.StatusOK {
		fmt.Println("Permintaan berhasil:")
		fmt.Println(string(body))
	} else {
		fmt.Printf("Permintaan gagal dengan kode status: %d\n", resp.StatusCode)
		fmt.Println(string(body))
	}
}

Percakapan multi-putaran

Lewati session_id atau messages untuk mengimplementasikan percakapan multi-putaran. Untuk informasi lebih lanjut, lihat Percakapan multi-putaran.

Saat ini, hanya Agent Applications dan Dialog Workflow Applications yang mendukung percakapan multi-putaran.
Python

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 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')
        return response

    responseNext = 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='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()
Java

Permintaan contoh

import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import java.util.Arrays;
import java.util.List;
import com.alibaba.dashscope.utils.Constants;
public class Main {
    static {
      Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    public static void callWithSession()
            throws ApiException, NoApiKeyException, InputRequiredException {
        ApplicationParam param = ApplicationParam.builder()
                // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan .apiKey("sk-xxx"). Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Ganti dengan ID aplikasi yang sebenarnya
                .appId("YOUR_APP_ID")
                .prompt("Siapa kamu?")
                .build();

        Application application = new Application();
        ApplicationResult result = application.call(param);

        param.setSessionId(result.getOutput().getSessionId());
        param.setPrompt("Apa saja kemampuanmu?");
        result = application.call(param);

        System.out.printf("%s\n, session_id: %s\n",
                result.getOutput().getText(), result.getOutput().getSessionId());
    }

    public static void main(String[] args) {
        try {
            callWithSession();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.printf("Exception: %s", e.getMessage());
            System.out.println("Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
        }
        System.exit(0);
    }
}
HTTP
Curl

Permintaan contoh (putaran 1)

curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/YOUR_APP_ID/completion \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "input": {
        "prompt": "Siapa kamu?"
    },
    "parameters":  {},
    "debug": {}
}' 

Permintaan contoh (putaran 2)

curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/YOUR_APP_ID/completion \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "input": {
        "prompt": "Apa saja kemampuanmu?",
        "session_id":"4f8ef7233dc641aba496cb201fa59f8c"
    },
    "parameters":  {},
    "debug": {}
}' 
PHP

Permintaan contoh (putaran 1)

<?php
# Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan API Key Anda: $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 = getenv("DASHSCOPE_API_KEY");
$application_id = 'YOUR_APP_ID'; // Ganti dengan ID aplikasi yang sebenarnya

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Membuat data permintaan
$data = [
    "input" => [
        'prompt' => 'Siapa kamu?'
    ]
];

// Enkode data sebagai JSON
$dataString = json_encode($data);

// Periksa apakah json_encode berhasil
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON encoding gagal dengan kesalahan: " . json_last_error_msg());
}

// Inisialisasi sesi curl
$ch = curl_init($url);

// Set opsi curl
curl_setopt($ch, curlOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, curlOPT_POSTFIELDS, $dataString);
curl_setopt($ch, curlOPT_RETURNTRANSFER, true);
curl_setopt($ch, curlOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key
]);

// Eksekusi permintaan
$response = curl_exec($ch);

// Periksa apakah eksekusi curl berhasil
if ($response === false) {
    die("curl Error: " . curl_error($ch));
}

// Dapatkan kode status HTTP
$status_code = curl_getinfo($ch, curlINFO_HTTP_CODE);
// Tutup sesi curl
curl_close($ch);
// Dekode data respons
$response_data = json_decode($response, true);
// Tangani respons
if ($status_code == 200) {
    if (isset($response_data['output']['text'])) {
        echo "{$response_data['output']['text']}\n";
    } else {
        echo "Tidak ada teks dalam respons.\n";
    };
    if (isset($response_data['output']['session_id'])) {
        echo "session_id={$response_data['output']['session_id']}\n";
    }
} else {
    if (isset($response_data['request_id'])) {
        echo "request_id={$response_data['request_id']}\n";
    }
    echo "code={$status_code}\n";
    if (isset($response_data['message'])) {
        echo "message={$response_data['message']}\n";
    } else {
        echo "message=Kesalahan tidak dikenal\n";
    }
}
?>

Permintaan contoh (putaran 2)

<?php
# Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan API Key Anda: $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 = getenv("DASHSCOPE_API_KEY");
$application_id = 'YOUR_APP_ID'; // Ganti dengan ID aplikasi yang sebenarnya

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Membuat data permintaan
$data = [
    "input" => [
        'prompt' => 'Apa saja kemampuanmu?',
        // Ganti dengan session_id yang dikembalikan dari percakapan putaran sebelumnya
        'session_id' => '2e658bcb514f4d30ab7500b4766a8d43'
    ]
];

// Enkode data sebagai JSON
$dataString = json_encode($data);

// Periksa apakah json_encode berhasil
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON encoding gagal dengan kesalahan: " . json_last_error_msg());
}

// Inisialisasi sesi curl
$ch = curl_init($url);

// Set opsi curl
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key
]);

// Eksekusi permintaan
$response = curl_exec($ch);

// Periksa apakah eksekusi curl berhasil
if ($response === false) {
    die("curl Error: " . curl_error($ch));
}

// Dapatkan kode status HTTP
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Tutup sesi curl
curl_close($ch);
// Dekode data respons
$response_data = json_decode($response, true);
// Tangani respons
if ($status_code == 200) {
    if (isset($response_data['output']['text'])) {
        echo "{$response_data['output']['text']}\n";
    } else {
        echo "Tidak ada teks dalam respons.\n";
    }
    if (isset($response_data['output']['session_id'])) {
        echo "session_id={$response_data['output']['session_id']}\n";
    }
} else {
    if (isset($response_data['request_id'])) {
        echo "request_id={$response_data['request_id']}\n";
    }
    echo "code={$status_code}\n";
    if (isset($response_data['message'])) {
        echo "message={$response_data['message']}\n";
    } else {
        echo "message=Kesalahan tidak dikenal\n";
    }
}
?>
Node.js

Dependensi:

npm install axios

Permintaan contoh (putaran 1)

const axios = require('axios');

async function callDashScope() {
    // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey='sk-xxx'. Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
    const apiKey = process.env.DASHSCOPE_API_KEY;
    const appId = 'YOUR_APP_ID';// Ganti dengan ID aplikasi yang sebenarnya

    const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;

    const data = {
        input: {
            prompt: "Siapa kamu?"
        },
        parameters: {},
        debug: {}
    };

    try {
        const response = await axios.post(url, data, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            }
        });

        if (response.status === 200) {
            console.log(`${response.data.output.text}`);
            console.log(`session_id=${response.data.output.session_id}`);
        } else {
            console.log(`request_id=${response.headers['request_id']}`);
            console.log(`code=${response.status}`);
            console.log(`message=${response.data.message}`);
        }
    } catch (error) {
        console.error(`Error memanggil DashScope: ${error.message}`);
        if (error.response) {
            console.error(`Status respons: ${error.response.status}`);
            console.error(`Data respons: ${JSON.stringify(error.response.data, null, 2)}`);
        }
    }
}
callDashScope();

Permintaan contoh (putaran 2)

const axios = require('axios');

async function callDashScope() {
    // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey='sk-xxx'. Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
    const apiKey = process.env.DASHSCOPE_API_KEY;
    const appId = 'YOUR_APP_ID';// Ganti dengan ID aplikasi yang sebenarnya

    const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;
    // Ganti session_id dengan session_id yang sebenarnya dari percakapan sebelumnya
    const data = {
        input: {
            prompt: "Apa saja kemampuanmu?",
            session_id: 'fe4ce8b093bf46159ea9927a7b22f0d3',
        },
        parameters: {},
        debug: {}
    };

    try {
        const response = await axios.post(url, data, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            }
        });

        if (response.status === 200) {
            console.log(`${response.data.output.text}`);
            console.log(`session_id=${response.data.output.session_id}`);
        } else {
            console.log(`request_id=${response.headers['request_id']}`);
            console.log(`code=${response.status}`);
            console.log(`message=${response.data.message}`);
        }
    } catch (error) {
        console.error(`Error memanggil DashScope: ${error.message}`);
        if (error.response) {
            console.error(`Status respons: ${error.response.status}`);
            console.error(`Data respons: ${JSON.stringify(error.response.data, null, 2)}`);
        }
    }
}
callDashScope();
C#

Permintaan contoh (putaran 1)

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        //Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key. 
        string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("Variabel lingkungan DASHSCOPE_API_KEY belum diset.");
        string appId = "YOUR_APP_ID"; // Ganti dengan ID aplikasi yang sebenarnya

        string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

            string jsonContent = @"{
                ""input"": {
                    ""prompt"": ""Siapa kamu?""
                },
                ""parameters"": {},
                ""debug"": {}
            }";

            HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            try
            {
                HttpResponseMessage response = await client.PostAsync(url, content);

                if (response.IsSuccessStatusCode)
                {
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("Permintaan berhasil:");
                    Console.WriteLine(responseBody);
                }
                else
                {
                    Console.WriteLine($"Permintaan gagal dengan kode status: {response.StatusCode}");
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error memanggil DashScope: {ex.Message}");
            }
        }
    }
}

Permintaan contoh (putaran 2)

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        //Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key. 
        string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("Variabel lingkungan DASHSCOPE_API_KEY belum diset.");
        string appId = "YOUR_APP_ID"; // Ganti dengan ID aplikasi yang sebenarnya

        string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

            string jsonContent = @"{
                ""input"": {
                    ""prompt"": ""Apa saja kemampuanmu?"",
                    ""session_id"": ""7b830e4cc8fe44faad0e648f9b71435f""
                },
                ""parameters"": {},
                ""debug"": {}
            }";

            HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            try
            {
                HttpResponseMessage response = await client.PostAsync(url, content);

                if (response.IsSuccessStatusCode)
                {
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("Permintaan berhasil:");
                    Console.WriteLine(responseBody);
                }
                else
                {
                    Console.WriteLine($"Permintaan gagal dengan kode status: {response.StatusCode}");
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error memanggil DashScope: {ex.Message}");
            }
        }
    }
}
Go

Permintaan contoh (putaran 1)

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	// Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey := "sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	appId := "YOUR_APP_ID" // Ganti dengan ID aplikasi yang sebenarnya

	if apiKey == "" {
		fmt.Println("Pastikan DASHSCOPE_API_KEY telah diset.")
		return
	}

	url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

	// Buat body permintaan
	requestBody := map[string]interface{}{
		"input": map[string]string{
			"prompt": "Siapa kamu?",
		},
		"parameters": map[string]interface{}{},
		"debug":      map[string]interface{}{},
	}

	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		fmt.Printf("Gagal melakukan marshal JSON: %v\n", err)
		return
	}

	// Buat permintaan HTTP POST
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("Gagal membuat permintaan: %v\n", err)
		return
	}

	// Set header permintaan
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	// Kirim permintaan
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Gagal mengirim permintaan: %v\n", err)
		return
	}
	defer resp.Body.Close()

	// Baca respons
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Gagal membaca respons: %v\n", err)
		return
	}

	// Proses respons
	if resp.StatusCode == http.StatusOK {
		fmt.Println("Permintaan berhasil:")
		fmt.Println(string(body))
	} else {
		fmt.Printf("Permintaan gagal dengan kode status: %d\n", resp.StatusCode)
		fmt.Println(string(body))
	}
}

Permintaan contoh (putaran 2)

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	// Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey := "sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	appId := "YOUR_APP_ID" // Ganti dengan ID aplikasi yang sebenarnya

	if apiKey == "" {
		fmt.Println("Pastikan DASHSCOPE_API_KEY telah diset.")
		return
	}

	url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

	// Buat body permintaan
	requestBody := map[string]interface{}{
		"input": map[string]string{
			"prompt":     "Apa saja kemampuanmu?",
			"session_id": "f7eea37f0c734c20998a021b688d6de2", // Ganti dengan session_id yang sebenarnya dari percakapan sebelumnya
		},
		"parameters": map[string]interface{}{},
		"debug":      map[string]interface{}{},
	}

	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		fmt.Printf("Gagal melakukan marshal JSON: %v\n", err)
		return
	}

	// Buat permintaan HTTP POST
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("Gagal membuat permintaan: %v\n", err)
		return
	}

	// Set header permintaan
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	// Kirim permintaan
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Gagal mengirim permintaan: %v\n", err)
		return
	}
	defer resp.Body.Close()

	// Baca respons
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Gagal membaca respons: %v\n", err)
		return
	}

	// Proses respons
	if resp.StatusCode == http.StatusOK {
		fmt.Println("Permintaan berhasil:")
		fmt.Println(string(body))
	} else {
		fmt.Printf("Permintaan gagal dengan kode status: %d\n", resp.StatusCode)
		fmt.Println(string(body))
	}
}
Ganti YOUR_APP_ID dengan ID aplikasi yang sebenarnya. Untuk putaran 2, ganti session_id dengan session_id yang sebenarnya yang dikembalikan dari putaran 1.

Pengiriman parameter

Python

Permintaan contoh

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 = {
    # Pengiriman 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 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='Konten 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 hanya teks keluaran
    # print('%s\n' % (response.usage))
Java

Permintaan contoh

import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;

import com.alibaba.dashscope.utils.Constants;

public class Main {
    static {
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    public static void appCall() throws NoApiKeyException, InputRequiredException {
        String bizParams =
                // Pengiriman 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}}}";
        ApplicationParam param = ApplicationParam.builder()
                // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan .apiKey("sk-xxx"). Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .appId("YOUR_APP_ID")
                .prompt("Konten konvensi asrama")
                .bizParams(JsonUtils.parse(bizParams))
                .build();

        Application application = new Application();
        ApplicationResult result = application.call(param);
        System.out.printf("%s\n",
                result.getOutput().getText());
    }

    public static void main(String[] args) {
        try {
            appCall();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.printf("Exception: %s", e.getMessage());
            System.out.println("Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
        }
        System.exit(0);
    }
}      
HTTP
Curl

Permintaan contoh

curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/YOUR_APP_ID/completion \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "input": {
        "prompt": "Konten konvensi asrama",
        "biz_params": 
        {
            "user_defined_params":
            {
                "{your_plugin_code}":
                    {
                    "article_index": 2
                    }
            }
        } 
    },
    "parameters":  {},
    "debug":{}
}'
Ganti YOUR_APP_ID dengan ID aplikasi yang sebenarnya.
PHP

Permintaan contoh

<?php

# Jika variabel lingkungan belum dikonfigurasi, ganti dengan Dashscope API Key: $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 = getenv("DASHSCOPE_API_KEY");
$application_id = 'YOUR_APP_ID'; // Ganti dengan ID aplikasi yang sebenarnya
$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";
// Ganti {your_plugin_code} dengan ID plugin yang sebenarnya
// Membuat data permintaan
$data = [
    "input" => [
        'prompt' => 'Konten konvensi asrama',
        'biz_params' => [
        'user_defined_params' => [
            '{your_plugin_code}' => [
                'article_index' => 2            
                ]
            ]
        ]
    ],
];
// Enkode data sebagai JSON
$dataString = json_encode($data);

// Periksa apakah json_encode berhasil
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON encoding gagal dengan kesalahan: " . json_last_error_msg());
}

// Inisialisasi sesi curl
$ch = curl_init($url);

// Set opsi curl
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key
]);

// Eksekusi permintaan
$response = curl_exec($ch);

// Periksa apakah eksekusi curl berhasil
if ($response === false) {
    die("curl Error: " . curl_error($ch));
}

// Dapatkan kode status HTTP
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Tutup sesi curl
curl_close($ch);
// Dekode data respons
$response_data = json_decode($response, true);
// Tangani respons
if ($status_code == 200) {
    if (isset($response_data['output']['text'])) {
        echo "{$response_data['output']['text']}\n";
    } else {
        echo "Tidak ada teks dalam respons.\n";
    }
}else {
    if (isset($response_data['request_id'])) {
        echo "request_id={$response_data['request_id']}\n";}
    echo "code={$status_code}\n";
    if (isset($response_data['message'])) {
        echo "message={$response_data['message']}\n";} 
    else {
        echo "message=Kesalahan tidak dikenal\n";}
}
?>
Node.js

Dependensi:

npm install axios

Permintaan contoh

const axios = require('axios');

async function callDashScope() {
    // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey='sk-xxx'. Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
    const apiKey = process.env.DASHSCOPE_API_KEY;
    const appId = 'YOUR_APP_ID';// Ganti dengan ID aplikasi yang sebenarnya
    const pluginCode = 'YOUR_PLUGIN_CODE';// Ganti dengan ID plugin yang sebenarnya
    const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;

    const data = {
        input: {
            prompt: "Konten konvensi asrama",
            biz_params: {
                user_defined_params: {
                    [pluginCode]: {
                        // article_index adalah variabel untuk plugin kustom, ganti dengan variabel plugin yang sebenarnya
                        'article_index': 3
                    }
                }
            }
        },
        parameters: {},
        debug: {}
    };

    try {
        console.log("Mengirim permintaan ke API DashScope...");

        const response = await axios.post(url, data, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            }
        });

        if (response.status === 200) {
            if (response.data.output && response.data.output.text) {
                console.log(`${response.data.output.text}`);
            }
        } else {
            console.log("Permintaan gagal:");
            if (response.data.request_id) {
                console.log(`request_id=${response.data.request_id}`);
            }
            console.log(`code=${response.status}`);
            if (response.data.message) {
                console.log(`message=${response.data.message}`);
            } else {
                console.log('message=Kesalahan tidak dikenal');
            }
        }
    } catch (error) {
        console.error(`Error memanggil DashScope: ${error.message}`);
        if (error.response) {
            console.error(`Status respons: ${error.response.status}`);
            console.error(`Data respons: ${JSON.stringify(error.response.data, null, 2)}`);
        }
    }
}
callDashScope();
C#

Permintaan contoh

using System.Text;

class Program
{
    static async Task Main(string[] args)
    {
        // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
        string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY")?? throw new InvalidOperationException("Variabel lingkungan DASHSCOPE_API_KEY belum diset.");;
        string appId = "YOUR_APP_ID";// Ganti dengan ID aplikasi yang sebenarnya

        if (string.IsNullOrEmpty(apiKey))
        {
            Console.WriteLine("Pastikan Anda telah menyetel DASHSCOPE_API_KEY.");
            return;
        }

        string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
            string pluginCode = "{your_plugin_code}"; // Ganti {your_plugin_code} dengan ID plugin yang sebenarnya
            string jsonContent = $@"{{
                ""input"": {{
                    ""prompt"": ""Konten konvensi asrama"",
                    ""biz_params"": {{
                        ""user_defined_params"": {{
                            ""{pluginCode}"": {{
                                ""article_index"": 2
                            }}
                        }}
                    }}
                }},
                ""parameters"": {{}},
                ""debug"": {{}}
            }}";

            HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            try
            {
                HttpResponseMessage response = await client.PostAsync(url, content);

                if (response.IsSuccessStatusCode)
                {
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("Permintaan berhasil:");
                    Console.WriteLine(responseBody);
                }
                else
                {
                    Console.WriteLine($"Permintaan gagal dengan kode status: {response.StatusCode}");
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error memanggil DashScope: {ex.Message}");
            }
        }
    }
}
Go

Permintaan contoh

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	// Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey := "sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	appId := "YOUR_APP_ID"           // Ganti dengan ID aplikasi yang sebenarnya
	pluginCode := "YOUR_PLUGIN_CODE" // Ganti dengan ID plugin yang sebenarnya

	if apiKey == "" {
		fmt.Println("Pastikan Anda telah menyetel DASHSCOPE_API_KEY.")
		return
	}

	url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

	// Buat body permintaan
	requestBody := map[string]interface{}{
		"input": map[string]interface{}{
			"prompt": "Konten konvensi asrama",
			"biz_params": map[string]interface{}{
				"user_defined_params": map[string]interface{}{
					pluginCode: map[string]interface{}{
						"article_index": 2,
					},
				},
			},
		},
		"parameters": map[string]interface{}{},
		"debug":      map[string]interface{}{},
	}

	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		fmt.Printf("Gagal melakukan marshal JSON: %v\n", err)
		return
	}

	// Buat permintaan HTTP POST
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("Gagal membuat permintaan: %v\n", err)
		return
	}

	// Set header permintaan
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	// Kirim permintaan
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Gagal mengirim permintaan: %v\n", err)
		return
	}
	defer resp.Body.Close()

	// Baca respons
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Gagal membaca respons: %v\n", err)
		return
	}

	// Proses respons
	if resp.StatusCode == http.StatusOK {
		fmt.Println("Permintaan berhasil:")
		fmt.Println(string(body))
	} else {
		fmt.Printf("Permintaan gagal dengan kode status: %d\n", resp.StatusCode)
		fmt.Println(string(body))
	}
}

Keluaran streaming

Python

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 belum 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 hanya teks keluaran
Java

Permintaan contoh

// Versi SDK dashscope yang direkomendasikan >= 2.15.0
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;// Keluaran streaming
// Implementasi aplikasi agen untuk hasil keluaran streaming

import com.alibaba.dashscope.utils.Constants;

public class Main {
    static {
      Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    public static void streamCall() throws NoApiKeyException, InputRequiredException {
        ApplicationParam param = ApplicationParam.builder()
                // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: .apiKey("sk-xxx"). Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Ganti dengan ID aplikasi yang sebenarnya
                .appId("YOUR_APP_ID")
                .prompt("Siapa kamu?")
                // Keluaran inkremental
                .incrementalOutput(true)
                .build();
        Application application = new Application();
        // .streamCall(): Keluaran konten streaming
        Flowable<ApplicationResult> result = application.streamCall(param);
        result.blockingForEach(data -> {
            System.out.printf("%s\n",
                    data.getOutput().getText());
        });
    }
    public static void main(String[] args) {
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.printf("Exception: %s", e.getMessage());
            System.out.println("Lihat dokumentasi: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
        }
        System.exit(0);
    }
}
HTTP
Curl

Permintaan contoh

curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/YOUR_APP_ID/completion \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--header 'X-DashScope-SSE: enable' \
--data '{
    "input": {
        "prompt": "Siapa kamu?"

    },
    "parameters":  {
        "incremental_output":true
    },
    "debug": {}
}'
Ganti YOUR_APP_ID dengan ID aplikasi yang sebenarnya.
PHP

Permintaan contoh

<?php

// Jika variabel lingkungan belum 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 = getenv("DASHSCOPE_API_KEY");
$application_id = 'YOUR_APP_ID'; // Ganti dengan ID aplikasi yang sebenarnya

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Membuat data permintaan
$data = [
    "input" => [
        'prompt' => 'Siapa kamu?'],
    "parameters" => [
        'incremental_output' => true]];// Keluaran inkremental
// Enkode data sebagai JSON
$dataString = json_encode($data);

// Periksa apakah json_encode berhasil
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON encoding gagal dengan kesalahan: " . json_last_error_msg());
}

// Inisialisasi sesi curl
$ch = curl_init($url);

// Set opsi curl
curl_setopt($ch, curlOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, curlOPT_POSTFIELDS, $dataString);
curl_setopt($ch, curlOPT_RETURNTRANSFER, false); // Jangan kembalikan data yang ditransfer
curl_setopt($ch, curlOPT_WRITEFUNCTION, function ($ch, $string) {
    echo $string; // Proses data streaming
    return strlen($string);
});
curl_setopt($ch, curlOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key,
    'X-DashScope-SSE: enable' // Keluaran streaming
]);

// Eksekusi permintaan
$response = curl_exec($ch);

// Periksa apakah eksekusi curl berhasil
if ($response === false) {
    die("curl Error: " . curl_error($ch));
}

// Dapatkan kode status HTTP
$status_code = curl_getinfo($ch, curlINFO_HTTP_CODE);
// Tutup sesi curl
curl_close($ch);

if ($status_code != 200) {
    echo "HTTP Status Code: $status_code\n";
    echo "Permintaan gagal.\n";
}
?>
Node.js

Dependensi:

npm install axios

Permintaan contoh

1. Keluaran respons lengkap

const axios = require('axios');

async function callDashScope() {
    // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: apiKey='sk-xxx'. Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
    const apiKey = process.env.DASHSCOPE_API_KEY;
    const appId = 'YOUR_APP_ID';// Ganti dengan ID aplikasi yang sebenarnya

    const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;

    const data = {
        input: {
            prompt: "Siapa kamu?"
        },
        parameters: {
            'incremental_output' : 'true' // Keluaran inkremental
        },
        debug: {}
    };

    try {
        console.log("Mengirim permintaan ke API DashScope...");

        const response = await axios.post(url, data, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json',
                'X-DashScope-SSE': 'enable' // Keluaran streaming
            },
            responseType: 'stream' // Untuk menangani respons streaming
        });

        if (response.status === 200) {
            // Proses respons streaming
            response.data.on('data', (chunk) => {
                console.log(`Menerima chunk: ${chunk.toString()}`);
            });
        } else {
            console.log("Permintaan gagal:");
            if (response.data.request_id) {
                console.log(`request_id=${response.data.request_id}`);
            }
            console.log(`code=${response.status}`);
            if (response.data.message) {
                console.log(`message=${response.data.message}`);
            } else {
                console.log('message=Kesalahan tidak dikenal');
            }
        }
    } catch (error) {
        console.error(`Error memanggil DashScope: ${error.message}`);
        if (error.response) {
            console.error(`Status respons: ${error.response.status}`);
            console.error(`Data respons: ${JSON.stringify(error.response.data, null, 2)}`);
        }
    }
}

callDashScope();

Perluas panel untuk melihat kode contoh:

2. Keluaran hanya bidang teks

const axios = require('axios');
const { Transform } = require('stream');

async function callDashScope() {
    // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: apiKey='sk-xxx'. Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
    const apiKey = process.env.DASHSCOPE_API_KEY;
    const appId = 'YOUR_APP_ID'; // Ganti dengan ID aplikasi yang sebenarnya

    const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;

    const data = {
        input: { prompt: "Siapa kamu?" },
        parameters: { incremental_output: true }, // Keluaran inkremental
        debug: {}
    };

    try {
        console.log("Mengirim permintaan ke API DashScope...");

        const response = await axios.post(url, data, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json',
                'X-DashScope-SSE': 'enable' // Keluaran streaming
            },
            responseType: 'stream' // Untuk menangani respons streaming
        });

        if (response.status === 200) {
            // // Proses respons streaming SSE protocol parsing transformer
            const sseTransformer = new Transform({
                transform(chunk, encoding, callback) {
                    this.buffer += chunk.toString();
                    
                    // Pisah berdasarkan event SSE (dua line feed)
                    const events = this.buffer.split(/\n\n/);
                    this.buffer = events.pop() || ''; // Simpan bagian yang tidak lengkap
                    
                    events.forEach(eventData => {
                        const lines = eventData.split('\n');
                        let textContent = '';
                        
                        // Parsing konten event
                        lines.forEach(line => {
                            if (line.startsWith('data:')) {
                                try {
                                    const jsonData = JSON.parse(line.slice(5).trim());
                                    if (jsonData.output?.text) {
                                        textContent = jsonData.output.text;
                                    }
                                } catch(e) {
                                    console.error('JSON parsing error:', e.message);
                                }
                            }
                        });

                        if (textContent) {
                            // Tambahkan line feed dan dorong
                            this.push(textContent + '\n');
                        }
                    });
                    
                    callback();
                },
                flush(callback) {
                    if (this.buffer) {
                        this.push(this.buffer + '\n');
                    }
                    callback();
                }
            });
            sseTransformer.buffer = '';

            // Pipeline processing
            response.data
                .pipe(sseTransformer)
                .on('data', (textWithNewline) => {
                    process.stdout.write(textWithNewline); // Output otomatis dengan line feed
                })
                .on('end', () => console.log(""))
                .on('error', err => console.error("Pipeline error:", err));

        } else {
            console.log("Permintaan gagal, kode status:", response.status);
            response.data.on('data', chunk => console.log(chunk.toString()));
        }
    } catch (error) {
        console.error(`Pemanggilan API gagal: ${error.message}`);
        if (error.response) {
            console.error(`Kode status: ${error.response.status}`);
            error.response.data.on('data', chunk => console.log(chunk.toString()));
        }
    }
}

callDashScope();
C#

Permintaan contoh

using System.Net;
using System.Text;

class Program
{
    static async Task Main(string[] args)
    {
        // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: apiKey="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
        string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("Variabel lingkungan DASHSCOPE_API_KEY belum diset.");
        string appId = "YOUR_APP_ID"; // Ganti dengan ID aplikasi yang sebenarnya
        string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
            client.DefaultRequestHeaders.Add("X-DashScope-SSE", "enable");

            string jsonContent = @"{
                ""input"": {
                    ""prompt"": ""Siapa kamu""
                },
                ""parameters"": {""incremental_output"": true},
                ""debug"": {}
            }";

            HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
            try
            {
                var request = new HttpRequestMessage(HttpMethod.Post, url);
                request.Content = content;

                HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
                

                if (response.IsSuccessStatusCode)
                {
                    Console.WriteLine("Permintaan berhasil:");
                    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
                    using (var stream = await response.Content.ReadAsStreamAsync())
                    using (var reader = new StreamReader(stream))
                    {
                        string? line; // Deklarasikan sebagai string nullable
                        while ((line = await reader.ReadLineAsync()) != null)
                        {
                            if (line.StartsWith("data:"))
                            {
                                string data = line.Substring(5).Trim();
                                Console.WriteLine(data);
                                Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
                            }
                        }
                    }
                }
                else
                {
                    Console.WriteLine($"Permintaan gagal dengan kode status: {response.StatusCode}");
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error memanggil DashScope: {ex.Message}");
            }
        }
    }
}
Go

Permintaan contoh

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
	"strings"
	"time"
)

func main() {
	// Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: apiKey := "sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	appId := "YOUR_APP_ID" // Ganti dengan ID aplikasi yang sebenarnya

	if apiKey == "" {
		fmt.Println("Pastikan DASHSCOPE_API_KEY telah diset.")
		return
	}

	url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

	// Buat body permintaan, di mana incremental_output menunjukkan apakah akan mengaktifkan respons streaming
	requestBody := map[string]interface{}{
		"input": map[string]string{
			"prompt": "Siapa kamu?",
		},
		"parameters": map[string]interface{}{
			"incremental_output": true,
		},
		"debug": map[string]interface{}{},
	}

	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		fmt.Printf("Gagal melakukan marshal JSON: %v\n", err)
		return
	}

	// Buat permintaan HTTP POST
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("Gagal membuat permintaan: %v\n", err)
		return
	}

	// Set header permintaan, di mana X-DashScope-SSE diset ke enable menunjukkan pengaktifan respons streaming
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("X-DashScope-SSE", "enable")

	// Kirim permintaan
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Gagal mengirim permintaan: %v\n", err)
		return
	}
	defer resp.Body.Close()

	if resp.StatusCode != http.StatusOK {
		fmt.Printf("Permintaan gagal dengan kode status: %d\n", resp.StatusCode)
		body, _ := io.ReadAll(resp.Body)
		fmt.Println(string(body))
		return
	}

	// Proses respons streaming
	reader := io.Reader(resp.Body)
	buf := make([]byte, 1024)
	for {
		n, err := reader.Read(buf)
		if n > 0 {
			data := string(buf[:n])
			lines := strings.Split(data, "\n")
			for _, line := range lines {
				line = strings.TrimSpace(line)
				if len(line) >= 5 && line[:5] == "data:" {
					timestamp := time.Now().Format("2006-01-02 15:04:05.000")
					fmt.Printf("%s: %s\n", timestamp, line[5:])
				} else if len(line) > 0 {
					fmt.Println(line)
				}
			}
		}
		if err != nil {
			if err == io.EOF {
				break
			}
			fmt.Printf("Error membaca respons: %v\n", err)
			break
		}
	}
}

Ambil basis pengetahuan

Python

Permintaan contoh

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 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 YOUR_APP_ID dengan ID aplikasi
    prompt='Rekomendasikan ponsel di bawah 3000 yuan',
    rag_options={
        "pipeline_ids": ["YOUR_PIPELINE_ID1,YOUR_PIPELINE_ID2"],  # Ganti dengan ID basis pengetahuan yang sebenarnya, 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 hanya teks keluaran
    # print('%s\n' % (response.usage))
Java

Permintaan contoh

// Versi SDK dashscope yang direkomendasikan >= 2.16.8;
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import java.util.Collections;
import java.util.List;

import com.alibaba.dashscope.utils.Constants;

public class Main {
    static {
        Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
    }
    public static void streamCall() throws NoApiKeyException, InputRequiredException {
        ApplicationParam param = ApplicationParam.builder()
                // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan .apiKey("sk-xxx"). Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .appId("YOUR_APP_ID") // Ganti dengan ID aplikasi yang sebenarnya
                .prompt("Rekomendasikan ponsel sekitar 3000 yuan")
                .ragOptions(RagOptions.builder()
                        // Ganti dengan ID basis pengetahuan yang sebenarnya, pisahkan beberapa dengan koma
                        .pipelineIds(List.of("PIPELINES_ID1", "PIPELINES_ID2"))
                        .build())
                .build();

        Application application = new Application();
        ApplicationResult result = application.call(param);
        System.out.printf("%s\n",
                result.getOutput().getText());// Proses hanya teks keluaran
    }

    public static void main(String[] args) {
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.printf("Exception: %s", e.getMessage());
            System.out.println("Lihat: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
        }
        System.exit(0);
    }
}
HTTP
Curl

Permintaan contoh

curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/{YOUR_APP_ID}/completion \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "input": {
        "prompt": "Rekomendasikan ponsel di bawah 3000 yuan"
    },
    "parameters":  {
                    "rag_options" : {
                    "pipeline_ids":["YOUR_PIPELINE_ID1"]}
    },
    "debug": {}
}'
Ganti YOUR_APP_ID dengan ID aplikasi yang sebenarnya, dan YOUR_PIPELINE_ID1 dengan ID basis pengetahuan yang ditentukan.
PHP

Permintaan contoh

<?php
# Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan API Key Anda: $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 = getenv("DASHSCOPE_API_KEY");
$application_id = 'YOUR_APP_ID'; // Ganti dengan ID aplikasi yang sebenarnya

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Membuat data permintaan
$data = [
    "input" => [
        'prompt' => 'Rekomendasikan smartphone di bawah 3000 yuan.'
    ],
    "parameters" => [
        'rag_options' => [
            'pipeline_ids' => ['YOUR_PIPELINE_ID1','YOUR_PIPELINE_ID2'] // Ganti dengan ID basis pengetahuan yang ditentukan; gunakan koma untuk memisahkan beberapa ID
        ]
    ]
];

// Enkode data sebagai JSON
$dataString = json_encode($data);

// Periksa apakah json_encode berhasil
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON encoding gagal dengan kesalahan: " . json_last_error_msg());
}

// Inisialisasi sesi curl
$ch = curl_init($url);

// Set opsi curl
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key
]);

// Eksekusi permintaan
$response = curl_exec($ch);

// Periksa apakah eksekusi curl berhasil
if ($response === false) {
    die("curl Error: " . curl_error($ch));
}

// Dapatkan kode status HTTP
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Tutup sesi curl
curl_close($ch);

// Dekode data respons
$response_data = json_decode($response, true);

// Tangani respons
if ($status_code == 200) {
    if (isset($response_data['output']['text'])) {
        echo "{$response_data['output']['text']}\n";
    } else {
        echo "Tidak ada teks dalam respons.\n";
    }
} else {
    if (isset($response_data['request_id'])) {
        echo "request_id={$response_data['request_id']}\n";
    }
    echo "code={$status_code}\n";
    if (isset($response_data['message'])) {
        echo "message={$response_data['message']}\n";
    } else {
        echo "message=Kesalahan tidak dikenal\n";
    }
}
?>
Node.js

Dependensi:

npm install axios

Permintaan contoh

const axios = require('axios');
async function callDashScope() {
    // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey='sk-xxx'. Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
    const apiKey = process.env.DASHSCOPE_API_KEY;
    const appId = 'YOUR_APP_ID';//Ganti dengan ID aplikasi yang sebenarnya

    const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;

    const data = {
        input: {
            prompt: "Rekomendasikan ponsel di bawah 3000 yuan"
        },
        parameters: {
            rag_options:{
                pipeline_ids:['YOUR_PIPELINE_ID1','YOUR_PIPELINE_ID2']  // Ganti dengan ID basis pengetahuan yang ditentukan, pisahkan beberapa dengan koma
            }
        },
        debug: {}
    };

    try {
        const response = await axios.post(url, data, {
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            }
        });

        if (response.status === 200) {
            console.log(`${response.data.output.text}`);
        } else {
            console.log(`request_id=${response.headers['request_id']}`);
            console.log(`code=${response.status}`);
            console.log(`message=${response.data.message}`);
        }
    } catch (error) {
        console.error(`Error memanggil DashScope: ${error.message}`);
        if (error.response) {
            console.error(`Status respons: ${error.response.status}`);
            console.error(`Data respons: ${JSON.stringify(error.response.data, null, 2)}`);
        }
    }
}

callDashScope();
C#

Permintaan contoh

using System.Text;

class Program
{
    static async Task Main(string[] args)
    {
        // Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey="sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
        string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY")?? throw new InvalidOperationException("Variabel lingkungan DASHSCOPE_API_KEY belum diset.");;
        string appId = "YOUR_APP_ID";// Ganti dengan ID aplikasi yang sebenarnya
        // YOUR_PIPELINE_ID1 ganti dengan ID basis pengetahuan yang ditentukan
        if (string.IsNullOrEmpty(apiKey))
        {
            Console.WriteLine("Pastikan DASHSCOPE_API_KEY telah diset.");
            return;
        }

        string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";
        
        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
            string jsonContent = $@"{{
                ""input"": {{
                    ""prompt"": ""Rekomendasikan ponsel di bawah 3000 yuan""
                }},
                ""parameters"": {{
                    ""rag_options"" : {{
                        ""pipeline_ids"":[""YOUR_PIPELINE_ID1""]
                    }}
                }},
                ""debug"": {{}}
            }}";

            HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            try
            {
                HttpResponseMessage response = await client.PostAsync(url, content);

                if (response.IsSuccessStatusCode)
                {
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
                else
                {
                    Console.WriteLine($"Permintaan gagal dengan kode status: {response.StatusCode}");
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error memanggil DashScope: {ex.Message}");
            }
        }
    }
}
Go

Permintaan contoh

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	// Jika variabel lingkungan belum dikonfigurasi, Anda dapat mengganti baris berikut dengan apiKey := "sk-xxx". Namun, tidak disarankan untuk menuliskan API Key secara langsung ke dalam kode di lingkungan produksi untuk mengurangi risiko kebocoran API Key.
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	appId := "YOUR_APP_ID" // Ganti dengan ID aplikasi yang sebenarnya

	if apiKey == "" {
		fmt.Println("Pastikan DASHSCOPE_API_KEY telah diset.")
		return
	}

	url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

	// Buat body permintaan
	requestBody := map[string]interface{}{
		"input": map[string]string{
			"prompt": "Rekomendasikan ponsel di bawah 3000 yuan",
		},
		"parameters": map[string]interface{}{
			"rag_options": map[string]interface{}{
				"pipeline_ids": []string{"YOUR_PIPELINE_ID1"}, // Ganti dengan ID basis pengetahuan yang ditentukan
			},
		},
		"debug": map[string]interface{}{},
	}

	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		fmt.Printf("Gagal melakukan marshal JSON: %v\n", err)
		return
	}

	// Buat permintaan HTTP POST
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("Gagal membuat permintaan: %v\n", err)
		return
	}

	// Set header permintaan
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	// Kirim permintaan
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Gagal mengirim permintaan: %v\n", err)
		return
	}
	defer resp.Body.Close()

	// Baca respons
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Gagal membaca respons: %v\n", err)
		return
	}

	// Proses respons
	if resp.StatusCode == http.StatusOK {
		fmt.Println("Permintaan berhasil:")
		fmt.Println(string(body))
	} else {
		fmt.Printf("Permintaan gagal dengan kode status: %d\n", resp.StatusCode)
		fmt.Println(string(body))
	}
}

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

app_id string (Wajib)

ID aplikasi.

Anda bisa mendapatkan ID aplikasi dari kartu aplikasi pada halaman Aplikasi Saya.

Dalam SDK Java, ini adalah appId. Untuk HTTP, masukkan ID aplikasi sebenarnya di URL, menggantikan YOUR_APP_ID.

prompt string (Wajib)

Masukan prompt yang menentukan instruksi untuk aplikasi untuk dieksekusi. Ini membimbing aplikasi untuk menghasilkan respons.

Saat ini, unggahan file tidak didukung.

Jika Anda mengelola riwayat percakapan dengan melewati messages, prompt tidak diperlukan.

Untuk HTTP, masukkan prompt di objek input.

session_id string (Opsional)

ID riwayat percakapan.

Ketika session_id diberikan, permintaan akan otomatis membawa riwayat percakapan yang tersimpan di cloud. Untuk instruksi, lihat Percakapan multi-putaran.

Jika session_id diberikan, prompt diperlukan.
Jika baik session_id maupun messages diberikan, messages lebih diprioritaskan.
Saat ini, hanya aplikasi agen dan aplikasi alur kerja dialog yang mendukung percakapan multi-putaran.
Dalam SDK Java, ini adalah setSessionId. Untuk HTTP, masukkan session_id di objek input.

messages array (Opsional)

Daftar pesan yang terdiri dari riwayat percakapan.

Digunakan untuk mengelola konteks untuk percakapan multi-putaran sendiri. Untuk instruksi, lihat Percakapan multi-putaran.

Aturan utama:

  • Jika messages diberikan, prompt tidak diperlukan.

  • Jika baik messages maupun prompt diberikan:

    • prompt akan dikonversi menjadi pesan {"role": "user", "content": "Your prompt"}, dan secara otomatis ditambahkan ke akhir messages.

    • Contoh:

      // Masukan asli
      {
        "messages": [{"role": "user", "content": "Halo"}], 
        "prompt": "Rekomendasikan film"
      }
      // Pesan efektif sebenarnya
      [
        {"role": "user", "content": "Halo"}, 
        {"role": "user", "content": "Rekomendasikan film"}
      ]
  • Jika baik session_id maupun messages diberikan, messages lebih diprioritaskan, dan session_id akan diabaikan.

Saat ini, hanya aplikasi agen dan aplikasi alur kerja dialog yang mendukung percakapan multi-putaran.
Untuk HTTP, masukkan messages di objek input.
Untuk menggunakan parameter ini, versi Python Dashscope SDK harus minimal 1.20.14, dan versi Java Dashscope SDK harus minimal 2.17.0.

Tipe Pesan

Pesan Sistem object (Opsional)

Tujuan atau peran model. Jika Anda menyetel pesan sistem, tempatkan di awal daftar pesan. Selain itu, daftar pesan hanya boleh memiliki satu pesan sistem.

Properti

content string (Wajib)

Isi pesan.

role string (Wajib)

Tetap sebagai system.

Pesan Pengguna object (Wajib)

Pesan yang dikirim oleh pengguna ke model. Daftar pesan bisa memiliki beberapa pesan pengguna, tetapi pesan terakhir harus berupa pesan pengguna.

Properti

content string (Wajib)

Isi pesan.

Properti

text string

Teks masukan.

role string (Wajib)

Peran pesan pengguna, tetap sebagai user.

Pesan Asisten object (Opsional)

Pesan yang dikirim oleh model sebagai tanggapan terhadap pesan pengguna. Jika Anda menyetel pesan asisten, letakkan setelah Pesan Pengguna untuk membentuk pasangan pertanyaan dan jawaban.

Properti

content string (Wajib)

Isi pesan asisten.

role string (Wajib)

Peran pesan asisten, tetap sebagai assistant.

workspace string (Opsional)

ID ruang kerja.

Saat memanggil aplikasi di ruang kerja non-default, workspace diperlukan. Saat memanggil aplikasi di ruang kerja default, tidak diperlukan.

Di sub-ruang kerja, buka Aplikasi Saya dan klik Call pada kartu aplikasi yang diinginkan. Dari sampel API yang ditampilkan, Anda bisa mendapatkan ID workspace. Untuk informasi lebih lanjut, lihat Dapatkan ID Ruang Kerja.

Untuk HTTP, tentukan X-DashScope-WorkSpace di Header.

stream boolean (Opsional)

Menentukan apakah akan menggunakan keluaran streaming.

Nilai valid:

  • false (default): Model memberikan respons lengkap sekaligus.

  • true: Model mengembalikan keluaran dalam chunk saat konten dihasilkan.

Dalam SDK Java, ini adalah streamCall. Untuk HTTP, atur X-DashScope-SSE menjadi enable

incremental_output boolean (Opsional)

Menentukan apakah akan mengaktifkan keluaran bertahap dalam mode streaming.

Nilai valid:

  • false (bawaan): Setiap keluaran mencakup seluruh urutan yang dihasilkan hingga saat ini. Keluaran akhir adalah tanggapan lengkap.

    I
    I like
    I like apple
    I like apple.
  • true: Setiap keluaran tidak menyertakan konten sebelumnya. Anda perlu mendapatkan setiap bagian secara real-time untuk mendapatkan tanggapan penuh.

    I
    like
    apple
    .
    Dalam Java SDK, ini adalah incrementalOutput. Untuk HTTP, masukkan incremental_output ke dalam objek parameters.

flow_stream_mode objek (Opsional)

Mode keluaran streaming untuk workflow applications. Untuk petunjuk, lihat keluaran streaming.

Nilai yang valid:

  • full_thoughts (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 Konversi Teks, node LLM, dan node Akhir (Sakelar ini aktif secara default untuk node Akhir).
Parameter ini tidak tersedia di Java SDK. Untuk HTTP, letakkan flow_stream_mode di objek parameters.

biz_params objek (Opsional)

Digunakan untuk melewati parameter ketika aplikasi menggunakan node kustom atau Plugin kustom. Untuk instruksi, lihat Pengoperasian parameter kustom.

Pada Java SDK, ini adalah bizParams. Untuk HTTP, letakkan biz_params di dalam objek input.

Properti

user_defined_params objek (Opsional)

Menentukan informasi parameter Plugin kustom.

Properti

plugin_id string (Opsional)

ID Plugin, yang dapat diperoleh dari kartu Plugin. Ganti your_plugin_code dengan ID Plugin sebenarnya.

${plugin_params} string (Opsional)

Banyak pasangan nilai-kunci pada objek paling dalam. Setiap pasangan nilai-kunci mewakili nama parameter yang ditentukan pengguna dan nilainya. Contohnya:

"article_index": 2

user_defined_tokens objek (Opsional)

Informasi otentikasi tingkat pengguna untuk Plugin kustom.

Properti

plugin_id string (Opsional)

ID Plugin, yang dapat diperoleh dari kartu Plugin. Diteruskan melalui bidang your_plugin_code.

user_token string (Opsional)

Informasi otentikasi pengguna yang diperlukan oleh Plugin, seperti nilai sebenarnya dari DASHSCOPE_API_KEY.

has_thoughts boolean (Opsional)

Menentukan apakah akan mengeluarkan proses pemanggilan plugin dan pengambilan pengetahuan.

Nilai yang valid:

  • True: Keluarkan di bidang thoughts.

  • False (default): Jangan keluarkan.

image_list Array (Opsional)

Daftar tautan gambar. Digunakan untuk mengirimkan tautan gambar.

Dalam aplikasi agen berbasis model Qwen-VL, gunakan parameter ini untuk mengajukan pertanyaan tentang konten gambar.

"image_list" : ["https://example.com/images/example.jpg"]
#Ini adalah URL fiktif, harap ganti dengan URL gambar yang ada
Dapat berisi beberapa URL, dipisahkan dengan koma (,).
Dalam Java SDK, ini adalah images. Untuk HTTP, letakkan image_list di dalam objek input.

rag_options Array (Opsional)

Parameter terkait Retrieval-Augmented Generation (RAG). Ini mencakup tetapi tidak terbatas pada pengambilan basis pengetahuan atau dokumen yang ditentukan. Untuk instruksi dan aturan, lihat Ambil basis pengetahuan.

Dalam SDK Java, ini adalah ragOptions. Untuk HTTP, masukkan rag_options di objek parameters.
Saat ini, hanya Agent Applications (termasuk RAG Applications) yang mendukung parameter pengambilan ini.

Properti

pipeline_ids Array (Wajib)

ID basis pengetahuan. Saat ditentukan, semua dokumen dalam basis pengetahuan yang ditentukan akan diambil.

Anda dapat memperoleh ID basis pengetahuan di halaman Basis Pengetahuan, atau gunakan Data.Id yang dikembalikan oleh CreateIndex (hanya mendukung basis pengetahuan tidak terstruktur).

Untuk menggunakan fitur ini, lakukan langkah-langkah berikut:

  1. Di konsol, aktifkan Knowledge Base Retrieval Augmentation untuk Agent Application, dan Publish.

    Langkah ini dapat dilewati untuk RAG Applications.
  2. Pilih salah satu metode berikut untuk mengambil basis pengetahuan yang ditentukan:

    1. Di aplikasi, klik Configure Knowledge Base, asosiasikan basis pengetahuan yang ditentukan, dan Publish ulang aplikasi.

    2. Langsung Publish aplikasi, dan lewatkan ID basis pengetahuan yang ditentukan melalui pipeline_ids saat memanggil.

    3. Asosiasikan basis pengetahuan yang ditentukan di konsol dan lewatkan ID basis pengetahuan yang ditentukan saat memanggil secara bersamaan.

  3. Lakukan pemanggilan API.

Anda dapat menentukan hingga lima ID basis pengetahuan, dipisahkan dengan koma (,). Contoh: ["ID Basis Pengetahuan1", "ID Basis Pengetahuan2"]. Jika Anda memberikan lebih dari lima ID, hanya lima ID pertama yang akan efektif.
Dalam SDK Java, ini adalah pipelineIds.

file_ids Array (Opsional)

ID dokumen tak terstruktur. Saat ditentukan, dokumen tak terstruktur yang sesuai akan diambil.

Anda bisa mendapatkan ID dokumen di halaman Data Aplikasi, atau gunakan ID yang dikembalikan oleh AddFile saat mengimpor dokumen.

Anda juga harus melewatkan ID basis pengetahuan tempat dokumen-dokumen tersebut berada.
Anda dapat menentukan hingga 100 ID dokumen, dipisahkan dengan koma (,). Contoh: ["ID Dokumen1","ID Dokumen2"].
Dalam SDK Java, ini adalah fileIds.

metadata_filter Object (Opsional)

Metadata dokumen tak terstruktur. Saat ditentukan, dokumen yang berisi metadata tersebut akan diambil.

Di halaman Basis Pengetahuan, lihat basis pengetahuan tak terstruktur. Kemudian, Anda dapat memeriksa Meta Information dari dokumen-dokumen tersebut.

Anda dapat menentukan metadata saat membuat basis pengetahuan tak terstruktur.

Panggil ListChunks untuk mendapatkan informasi semua chunk dalam dokumen.

Anda juga harus melewati ID basis pengetahuan tempat dokumen-dokumen tersebut berada.
Dalam SDK Java, ini adalah metadataFilter.

tags Array (Opsional)

Tag yang terkait dengan dokumen tak terstruktur. Saat ditentukan, dokumen tak terstruktur yang berisi tag tersebut akan diambil.

Anda dapat melihat tag di halaman Data Aplikasi. Anda juga dapat memanggil DescribeFile.

Bisa berupa beberapa tag, dipisahkan dengan koma (,). Contoh: ["Tag 1","Tag 2"].

Objek Tanggapan

Contoh tanggapan

status_code integer

Kode status yang dikembalikan.

Kode status 200 menunjukkan bahwa permintaan berhasil. Kode status lainnya menunjukkan bahwa permintaan gagal. code menampilkan kode kesalahan dan message menampilkan informasi kesalahan detail.

SDK Java tidak mengembalikan parameter ini. Sebagai gantinya, pengecualian dilemparkan, berisi kode kesalahan dan pesan.

Percakapan satu putaran

{
    "output": {
        "finish_reason": "stop",
        "session_id": "6105c965c31b40958a43dc93c28c7a59",
        "text": "Saya adalah Qwen, asisten AI yang dikembangkan oleh Alibaba Cloud. Saya dirancang untuk menjawab berbagai pertanyaan, menyediakan informasi, dan terlibat dalam percakapan dengan pengguna. Apakah ada yang bisa saya bantu?"
    },
    "usage": {
        "models": [
            {
                "output_tokens": 36,
                "model_id": "qwen-plus",
                "input_tokens": 74
            }
        ]
    },
    "request_id": "f97ee37d-0f9c-9b93-b6bf-bd263a232bf9"
}

Basis pengetahuan yang ditentukan

Jika Anda perlu menampilkan dokumen sumber yang direferensikan oleh model, buka konsol Model Studio. Klik Retrieve Configuration dari aplikasi. Nyalakan Show Source dan Publish aplikasi lagi.

{
    "text": "Berdasarkan anggaran Anda, saya merekomendasikan Bailian Zephyr Z9. Ponsel ini ringan dan portabel, dengan layar 6,4 inci 1080 x 2340 piksel, penyimpanan 128GB dan RAM 6GB, sempurna untuk penggunaan sehari-hari<ref>[1]</ref>. Selain itu, ponsel ini memiliki baterai 4000mAh dan lensa zoom digital 30x yang dapat menangkap detail jarak jauh, dengan rentang harga 2499-2799 yuan, sepenuhnya dalam persyaratan anggaran Anda<ref>[1]</ref>.",
    "finish_reason": "stop",
    "session_id": "6c1d47fa5eca46b2ad0668c04ccfbf13",
    "thoughts": null,
    "doc_references": [
        {
            "index_id": "1",
            "title": "Pengenalan Produk Ponsel Bailian",
            "doc_id": "file_7c0e9abee4f142f386e488c9baa9cf38_10317360",
            "doc_name": "Pengenalan Produk Ponsel Bailian",
            "doc_url": null,
            "text": "[Nama Dokumen]:Pengenalan Produk Ponsel Bailian\n[Judul]:Pengenalan Produk Ponsel Bailian\n[Konten]:Harga Referensi: 5999-6499. Bailian Ace Ultra - Pilihan Gamer: Dilengkapi dengan layar 6,67 inci 1080 x 2400 piksel, dibangun dengan RAM 10GB dan penyimpanan 256GB, memastikan pengalaman gaming yang lancar. Bailian Ace Ultra - Pilihan Gamer: Dilengkapi dengan layar 6,67 inci 1080 x 2400 piksel, dibangun dengan RAM 10GB dan penyimpanan 256GB, memastikan pengalaman gaming yang lancar. Baterai 5500mAh dengan sistem pendingin cair menjaga perangkat tetap dingin selama sesi gaming yang panjang. Speaker dinamis ganda meningkatkan pengalaman gaming dengan audio imersif. Harga Referensi: 3999-4299. Bailian Zephyr Z9 - Seni Portabilitas Ringan: Desain ringan 6,4 inci 1080 x 2340 piksel, dipasangkan dengan penyimpanan 128GB dan RAM 6GB, sempurna untuk penggunaan sehari-hari. Baterai 4000mAh memastikan penggunaan tanpa khawatir sepanjang hari, lensa zoom digital 30x menangkap detail jarak jauh, ringan namun kuat. Harga Referensi: 2499-2799. Bailian Flex Fold+ - Era Baru Layar Lipat: Menggabungkan inovasi dan kemewahan, layar utama 7,6 inci 1800 x 2400 piksel dan layar eksternal 4,7 inci 1080 x 2400 piksel, desain lipat bebas multi-sudut memenuhi kebutuhan skenario yang berbeda. Penyimpanan 512GB, RAM 12GB, ditambah baterai 4700mAh dan UTG ultra-thin flexible glass, membuka babak baru dalam era layar lipat. Selain itu, ponsel ini mendukung Dual SIM Dual Standby dan panggilan satelit, membantu Anda tetap terhubung di seluruh dunia. Harga eceran referensi: 9999-10999.\n",
            "biz_id": null,
            "images": [

            ],
            "page_number": [
                0]
        }]
}

Tanggapan kesalahan

Jika terjadi kesalahan selama permintaan, kode kesalahan dan pesan kesalahan dikembalikan dalam parameter code dan message.

Berikut adalah contoh tanggapan kesalahan ketika API-KEY yang salah diberikan.

request_id=1d14958f-0498-91a3-9e15-be477971967b, 
code=401, 
message=API-key tidak valid disediakan.

request_id string

ID permintaan.

Dalam SDK Java, ini adalah requestId.

code string

Kode kesalahan. Kosong saat pemanggilan berhasil.

Untuk detail, lihat Pesan Kesalahan.

Hanya SDK Python yang mengembalikan parameter ini.

message string

Pesan kesalahan yang dikembalikan dalam kasus kegagalan.

Hanya SDK Python yang mengembalikan parameter ini.

output object

Hasil pemanggilan.

Properti output

text string

Respons yang dihasilkan oleh model.

finish_reason string

Alasan selesai.

Ini adalah null selama pembuatan, dan stop ketika pembuatan berakhir karena token stop.

session_id string

ID sesi percakapan.

Lewatkan ini dalam permintaan berikutnya untuk mempertahankan riwayat percakapan.

thoughts array

Saat has_thoughts diatur ke True dalam permintaan, Anda dapat melihat proses pemanggilan plugin dan pengambilan pengetahuan di thoughts.

Properti thoughts

thought string

Proses pemikiran model.

action_type string

Jenis tindakan yang dilakukan oleh model. Misalnya, API menunjukkan eksekusi plugin API dan agentRag menunjukkan eksekusi pengambilan pengetahuan.

action_name string

Jenis tindakan yang dilakukan oleh model. Misalnya, pengambilan pengetahuan, dan plugin API.

action string

Tindakan yang dilakukan oleh model.

action_input_stream string

Hasil streaming parameter permintaan.

action_input string

Parameter permintaan plugin.

observation string

Proses pengambilan atau eksekusi plugin.

doc_references array

Dokumen yang direferensikan model selama pengambilan RAG.

Untuk menggunakan parameter ini, Anda harus terlebih dahulu pergi ke aplikasi Model Studio di konsol. Klik Retrieve Configuration dari aplikasi. Aktifkan Show Source dan Publish ulang aplikasi tersebut.

Properti doc_references

index_id string

Indeks dokumen yang direferensikan model, seperti [1].

title string

Judul chunk teks yang direferensikan model.

doc_id string

ID dokumen yang direferensikan model.

doc_name string

Nama dokumen yang direferensikan model.

text string

Isi teks spesifik yang direferensikan model.

images array

Daftar URL gambar yang direferensikan model.

page_number array

Nomor halaman dari chunk teks yang direferensikan model.

Parameter ini hanya mendukung basis pengetahuan yang dibuat setelah 25 Oktober 2024.
Versi Python Dashscope SDK harus minimal 1.20.14, dan versi Java Dashscope SDK harus minimal 2.16.10.

Penggunaan objek

Konsumsi token untuk permintaan ini.

Properti penggunaan

model larik

Model yang digunakan untuk permintaan ini.

Properti model

model_id string

ID model.

input_tokens integer

Jumlah token dalam input pengguna.

output_tokens integer

Jumlah token dalam tanggapan yang dihasilkan.

Kode kesalahan

Jika pemanggilan aplikasi gagal dan mengembalikan pesan kesalahan, lihat Pesan kesalahan untuk pemecahan masalah.