全部產品
Search
文件中心

Alibaba Cloud Model Studio:應用的自訂參數傳遞

更新時間:Jul 16, 2025

本文介紹如何在百鍊應用(智能體、工作流程和智能體編排)的調用過程中使用自訂參數傳遞的功能。主要適用的情境為應用的自訂外掛程式參數傳遞應用的自訂節點參數傳遞

您需要已擷取API Key配置API Key到環境變數。如果通過SDK調用,還需要安裝DashScope SDK

應用的自訂外掛程式參數傳遞

本文以寢室公約內容查詢工具作為樣本,向您展示API如何調用應用的自訂外掛程式參數傳遞功能

說明

自訂外掛程式的參數通過關聯的智能體應用傳遞,或通過工作流程應用中的外掛程式節點傳遞。

下方樣本展示在智能體應用中如何傳遞自訂外掛程式參數。

如何使用

步驟一:建立自訂外掛程式工具

如果已建立外掛程式工具或已匯入了外掛程式,請跳過此步驟。
  1. 建立自訂外掛程式:訪問百鍊控制台的外掛程式頁面,單擊新增自訂外掛程式,填寫外掛程式資訊,如需要鑒權請開啟是否鑒權開關,填寫鑒權配置資訊。

    樣本外掛程式描述:寢室公約查詢工具,可以根據輸入的數字索引查詢特定條目。
    樣本外掛程式 URL:https://domitorgreement-plugin-example-icohrkdjxy.cn-beijing.fcapp.run

    image

    請注意:外掛程式描述是對外掛程式用途的簡要說明,能協助大模型判斷當前任務是否需要調用當前外掛程式,請使用自然語言進行描述。

  2. 建立工具:填寫工具資訊,配置輸入參數和輸出參數。請注意:

    1. 工具描述能協助大模型更好的理解工具功能和使用情境。請使用自然語言進行描述,盡量給出使用樣本。

    2. 參數名稱儘可能帶有含義,可以協助大模型理解當前需要識別的參數資訊是什麼。

    3. 參數描述是對該入參的功能描述,要簡練且準確,協助大模型進一步理解取參的方式。

    4. 輸入參數的傳參方式務必選擇業務透傳

    此處樣本將寢室公約內容索引article_index設定為業務透傳參數。

    image

  3. 單擊測試載入器,運行通過後,發布外掛程式。

步驟二:智能體應用關聯指定外掛程式

外掛程式工具只能與位於相同業務空間裡的智能體應用關聯。
  1. 可在發行的外掛程式卡片上單擊添加到智能體,選擇需要關聯的智能體應用;

    image

  2. 也可在應用內單擊+外掛程式,關聯指定的自訂外掛程式;

    image

  3. 然後直接發布應用。

步驟三:API調用

  • 無需鑒權時:通過API調用自訂外掛程式,使用biz_paramsuser_defined_params傳遞自訂外掛程式資訊,your_plugin_code替換為實際的外掛程式ID,並傳遞外掛程式中配置的輸入參數索引值對。

    外掛程式ID可在外掛程式卡片上擷取。

    本樣本中傳入寢室公約索引article_index參數值為2,查詢第二條寢室公約內容,並返回正確結果

    Python

    請求樣本

    import os
    from http import HTTPStatus
    # 建議dashscope SDK 的版本 >= 1.14.0
    import dashscope
    from dashscope import Application
    
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    biz_params = {
        # 智能體應用的自訂外掛程式輸入參數傳遞,自訂的外掛程式ID替換your_plugin_code
        "user_defined_params": {
            "your_plugin_code": {
                "article_index": 2}}}
    response = Application.call(
            # 若沒有配置環境變數,可用百鍊API Key將下行替換為:api_key="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
            api_key=os.getenv("DASHSCOPE_API_KEY"),
            app_id='YOUR_APP_ID',
            prompt='寢室公約內容',
            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'請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code')
    else:
        print('%s\n' % (response.output.text))  # 處理只輸出文本text
        # print('%s\n' % (response.usage))

    響應樣本

    寢室公約的第二條規定如下:
    
    "寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。"
    
    這表明在寢室內,成員之間應該培養一種積極正面的生活和學習氛圍,彼此協助和支援,同時也要學會理解和尊重他人。如果您需要瞭解公約的其他條款,請告訴我!

    Java

    請求樣本

    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 =
                    // 智能體應用的自訂外掛程式輸入參數傳遞,自訂的外掛程式ID替換{your_plugin_code}
                    "{\"user_defined_params\":{\"{your_plugin_code}\":{\"article_index\":2}}}";
            ApplicationParam param = ApplicationParam.builder()
                    // 若沒有配置環境變數,可用百鍊API Key將下行替換為:.apiKey("sk-xxx")。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    .appId("YOUR_APP_ID")
                    .prompt("寢室公約內容")
                    .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("請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code");
            }
            System.exit(0);
        }
    }      

    響應樣本

    寢室公約的第二條規定如下:
    
    第二條 寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。
    
    這強調了在共同生活環境中,室友之間應該保持積極正面的關係,通過相互協助和支援來營造一個和諧的生活和學習氛圍。如果有更多具體的條款需要瞭解,請告知我。

    HTTP

    curl

    請求樣本

    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": "寢室公約內容",
            "biz_params": 
            {
                "user_defined_params":
                {
                    "{your_plugin_code}":
                        {
                        "article_index": 2
                        }
                }
            } 
        },
        "parameters":  {},
        "debug":{}
    }'
    YOUR_APP_ID替換為實際的應用 ID。

    響應樣本

    {"output":
    {"finish_reason":"stop",
    "session_id":"e151267ffded4fbdb13d91439011d31e",
    "text":"寢室公約的第二條內容是:“寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。”這意呀著在寢室生活中,大家要彼此支援,共同創造一個和諧、積極向上的生活環境。"},
    "usage":{"models":[{"output_tokens":94,"model_id":"qwen-max","input_tokens":453}]},
    "request_id":"a39fd2b5-7e2c-983e-84a1-1039f726f18a"}%

    PHP

    請求樣本

    <?php
    
    # 若沒有配置環境變數,可用百鍊API Key將下行替換為:$api_key="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
    $api_key = getenv("DASHSCOPE_API_KEY");
    $application_id = 'YOUR_APP_ID'; // 替換為實際的應用 ID
    $url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";
    //{your_plugin_code}替換為實際的外掛程式ID
    // 構造請求資料
    $data = [
        "input" => [
            'prompt' => '寢室公約內容',
            'biz_params' => [
            'user_defined_params' => [
                '{your_plugin_code}' => [
                    'article_index' => 2            
                    ]
                ]
            ]
        ],
    ];
    // 將資料編碼為 JSON
    $dataString = json_encode($data);
    
    // 檢查 json_encode 是否成功
    if (json_last_error() !== JSON_ERROR_NONE) {
        die("JSON encoding failed with error: " . json_last_error_msg());
    }
    
    // 初始化 cURL 對話
    $ch = curl_init($url);
    
    // 設定 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
    ]);
    
    // 執行請求
    $response = curl_exec($ch);
    
    // 檢查 cURL 執行是否成功
    if ($response === false) {
        die("cURL Error: " . curl_error($ch));
    }
    
    // 擷取 HTTP 狀態代碼
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    // 關閉 cURL 對話
    curl_close($ch);
    // 解碼響應資料
    $response_data = json_decode($response, true);
    // 處理響應
    if ($status_code == 200) {
        if (isset($response_data['output']['text'])) {
            echo "{$response_data['output']['text']}\n";
        } else {
            echo "No text in response.\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=Unknown error\n";}
    }
    ?>

    響應樣本

    寢室公約的第二條規定:寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。這是為了保證大家能在一個和諧友愛的環境中生活和學習。如果有更多具體的條款需要瞭解,或者有其他問題,隨時可以問我!

    Node.js

    需安裝相關依賴:

    npm install axios

    請求樣本

    const axios = require('axios');
    
    async function callDashScope() {
        // 若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey='sk-xxx'。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
        const apiKey = process.env.DASHSCOPE_API_KEY;
        const appId = 'YOUR_APP_ID';// 替換為實際的應用 ID
        const pluginCode = 'YOUR_PLUGIN_CODE';// 替換為實際的外掛程式ID
        const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;
    
        const data = {
            input: {
                prompt: "寢室公約內容",
                biz_params: {
                    user_defined_params: {
                        [pluginCode]: {
                            // article_index為自訂外掛程式的變數,替換為實際的外掛程式變數
                            'article_index': 3
                        }
                    }
                }
            },
            parameters: {},
            debug: {}
        };
    
        try {
            console.log("Sending request to DashScope API...");
    
            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("Request failed:");
                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=Unknown error');
                }
            }
        } catch (error) {
            console.error(`Error calling DashScope: ${error.message}`);
            if (error.response) {
                console.error(`Response status: ${error.response.status}`);
                console.error(`Response data: ${JSON.stringify(error.response.data, null, 2)}`);
            }
        }
    }
    callDashScope();

    響應樣本

    寢室公約的第三條規定如下:
    
    注意安全用電,杜絕火災隱患。寢室內嚴禁使用明火、違規電器、各種灶具以及其他違規物品,不得存放易爆、易燃物品,私接電源。
    
    如果您需要瞭解更多的規定,請告訴我。

    C#

    請求樣本

    using System.Text;
    
    class Program
    {
        static async Task Main(string[] args)
        {
            // 若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
            string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY")?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");;
            string appId = "YOUR_APP_ID";// 替換為實際的應用ID
    
            if (string.IsNullOrEmpty(apiKey))
            {
                Console.WriteLine("請確保設定了 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}"; // {your_plugin_code}替換為實際的外掛程式 ID
                string jsonContent = $@"{{
                    ""input"": {{
                        ""prompt"": ""寢室公約內容"",
                        ""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("Request successful:");
                        Console.WriteLine(responseBody);
                    }
                    else
                    {
                        Console.WriteLine($"Request failed with status code: {response.StatusCode}");
                        string responseBody = await response.Content.ReadAsStringAsync();
                        Console.WriteLine(responseBody);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error calling DashScope: {ex.Message}");
                }
            }
        }
    }

    響應樣本

    {
        "output": {
            "finish_reason": "stop",
            "session_id": "237ca6187c814f3b9e7461090a5f8b74",
            "text": "寢室公約的第二條規定如下:
    
    "寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。"
    
    這表示在寢室內,成員之間需要建立起一種積極正面的關係,通過協助、關心和支援彼此來營造一個和諧的生活和學習環境。同時也要學會理解和接受室友之間的差異,以真誠的態度去交流溝通。如果還有其他條款或具體內容想要瞭解,請告訴我!"
        },
        "usage": {
            "models": [
                {
                    "output_tokens": 133,
                    "model_id": "qwen-max",
                    "input_tokens": 829
                }
            ]
        },
        "request_id": "64e8c359-d071-9d2e-bb94-187e86cc3a79"
    }

    Go

    請求樣本

    package main
    
    import (
    	"bytes"
    	"encoding/json"
    	"fmt"
    	"io"
    	"net/http"
    	"os"
    )
    
    func main() {
    	// 若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey := "sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
    	apiKey := os.Getenv("DASHSCOPE_API_KEY")
    	appId := "YOUR_APP_ID"           // 替換為實際的應用 ID
    	pluginCode := "YOUR_PLUGIN_CODE" // 替換為實際的外掛程式 ID
    
    	if apiKey == "" {
    		fmt.Println("請確保設定了DASHSCOPE_API_KEY。")
    		return
    	}
    
    	url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)
    
    	// 建立請求體
    	requestBody := map[string]interface{}{
    		"input": map[string]interface{}{
    			"prompt": "寢室公約內容",
    			"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("Failed to marshal JSON: %v\n", err)
    		return
    	}
    
    	// 建立 HTTP POST 請求
    	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    	if err != nil {
    		fmt.Printf("Failed to create request: %v\n", err)
    		return
    	}
    
    	// 佈建要求頭
    	req.Header.Set("Authorization", "Bearer "+apiKey)
    	req.Header.Set("Content-Type", "application/json")
    
    	// 發送請求
    	client := &http.Client{}
    	resp, err := client.Do(req)
    	if err != nil {
    		fmt.Printf("Failed to send request: %v\n", err)
    		return
    	}
    	defer resp.Body.Close()
    
    	// 讀取響應
    	body, err := io.ReadAll(resp.Body)
    	if err != nil {
    		fmt.Printf("Failed to read response: %v\n", err)
    		return
    	}
    
    	// 處理響應
    	if resp.StatusCode == http.StatusOK {
    		fmt.Println("Request successful:")
    		fmt.Println(string(body))
    	} else {
    		fmt.Printf("Request failed with status code: %d\n", resp.StatusCode)
    		fmt.Println(string(body))
    	}
    }

    響應樣本

    {
        "output": {
            "finish_reason": "stop",
            "session_id": "860d2a4c1f3649ac880298537993cb51",
            "text": "寢室公約的第二條規定如下:
    
    寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。
    
    這強調了在宿捨生活中,室友之間應該保持良好的互助關係,同時也要互相尊重對方。您想要瞭解其他條款的內容嗎?"
        },
        "usage": {
            "models": [
                {
                    "output_tokens": 84,
                    "model_id": "qwen-max",
                    "input_tokens": 876
                }
            ]
        },
        "request_id": "0a250055-90a4-992d-9276-e268ad35d1ab"
    }
  • 需要鑒權時:通過API調用自訂外掛程式,外掛程式中開啟了鑒權開關,配置了使用者級鑒權

    外掛程式ID在外掛程式卡片上擷取。
    • 使用biz_paramsuser_defined_params傳遞自訂外掛程式資訊,your_plugin_code替換為實際的外掛程式ID,並傳入外掛程式中配置的輸入參數索引值對。

    • 使用 biz_paramsuser_defined_tokens傳遞相關資訊,your_plugin_code替換為實際的外掛程式ID,user_token的參數值填入鑒權資訊,如實際DASHSCOPE_API_KEY的值。

    • 鑒權通過後根據傳遞的索引參數查詢特定條目並正確返回結果。

    本樣本中傳入寢室公約索引article_index參數值為2,user_token的值YOUR_TOKEN替換為實際DASHSCOPE_API_KEY的值。鑒權通過後,查詢第二條寢室公約內容,並返回正確結果

    Python

    請求樣本

    from http import HTTPStatus
    import os
    # 建議dashscope SDK 的版本 >= 1.14.0
    import dashscope
    from dashscope import Application
    
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
    biz_params = {
        # 智能體應用的自訂外掛程式鑒權傳遞,自訂的外掛程式ID替換your_plugin_code,鑒權資訊替換YOUR_TOKEN,如API key
        "user_defined_params": {
            "your_plugin_code": {
                "article_index": 2}},
        "user_defined_tokens": {
            "your_plugin_code": {
                "user_token": "YOUR_TOKEN"}}}
    response = Application.call(
                # 若沒有配置環境變數,可用百鍊API Key將下行替換為:api_key="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
                api_key=os.getenv("DASHSCOPE_API_KEY"), 
                app_id='YOUR_APP_ID',
                prompt='寢室公約內容',
                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'請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code')
    else:
        print('%s\n' % (response.output.text))  # 處理只輸出文本text
        # print('%s\n' % (response.usage))

    響應樣本

    寢室公約的第二條規定如下:
    
    寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。
    
    如果您需要瞭解更多的規定內容,請告訴我。

    Java

    請求樣本

    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 =
                    // {your_plugin_code}替換為實際的外掛程式ID,YOUR_TOKEN替換為實際的Token,如API key
                    "{\"user_defined_params\":{\"{your_plugin_code}\":{\"article_index\":2}}," +
                            "\"user_defined_tokens\":{\"{your_plugin_code}\":{\"user_token\":\"YOUR_TOKEN\"}}}";
            ApplicationParam param = ApplicationParam.builder()
                    // 若沒有配置環境變數,可用百鍊API Key將下行替換為:.apiKey("sk-xxx")。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    .appId("YOUR_APP_ID")
                    .prompt("寢室公約內容")
                    .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("請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code");
            }
            System.exit(0);
        }
    }

    響應樣本

    寢室公約的第二條規定如下:
    
    寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。
    
    如果您需要查詢更多的規定內容,請告訴我。
    應用ID替換YOUR_APP_ID,自訂的外掛程式ID替換your_plugin_code,鑒權Token替換YOUR_TOKEN。

    HTTP

    curl

    請求樣本

    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": "寢室公約內容",
            "biz_params": 
            {
                "user_defined_params":
                {
                    "{your_plugin_code}":
                        {
                        "article_index": 2
                        }
                },
                "user_defined_tokens":
                {
                    "{your_plugin_code}":
                        {
                        "user_token": "YOUR_TOKEN"
                        }
                }
            } 
        },
        "parameters":  {},
        "debug":{}
    }'
    
    
    YOUR_APP_ID替換為實際的應用 ID,自訂的外掛程式ID替換your_plugin_code,鑒權Token替換YOUR_TOKEN。

    響應樣本

    {"output":{"finish_reason":"stop",
    "session_id":"d3b5c3e269dc40479255a7a02df5c630",
    "text":"寢室公約的第二條內容為:“寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。”這強調了寢室生活中成員之間和諧相處與共同進步的重要性。"},
    "usage":{"models":[{"output_tokens":80,"model_id":"qwen-max","input_tokens":432}]},
    "request_id":"1f77154c-edc3-9003-b622-816fa2f849cf"}%

    PHP

    請求樣本

    <?php
    
    # 若沒有配置環境變數,可用百鍊API Key將下行替換為:$api_key="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
    $api_key = getenv("DASHSCOPE_API_KEY");
    $application_id = 'YOUR_APP_ID'; // 替換為實際的應用 ID
    $url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";
    
    // 構造請求資料
    $data = [
        "input" => [
            'prompt' => '寢室公約內容',
            'biz_params' => [
            'user_defined_params' => [
                '{your_plugin_code}' => [//{your_plugin_code}替換為實際的外掛程式ID
                    'article_index' => 2            
                    ]
                ],
            'user_defined_tokens' => [
                '{your_plugin_code}' => [//{your_plugin_code}替換為實際的外掛程式ID
                    'user_token' => 'YOUR_TOKEN'//替換為實際的Token,如API key
                ]
            ]
            ]
        ],
    ];
    // 將資料編碼為 JSON
    $dataString = json_encode($data);
    
    // 檢查 json_encode 是否成功
    if (json_last_error() !== JSON_ERROR_NONE) {
        die("JSON encoding failed with error: " . json_last_error_msg());
    }
    
    // 初始化 cURL 對話
    $ch = curl_init($url);
    
    // 設定 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
    ]);
    
    // 執行請求
    $response = curl_exec($ch);
    
    // 檢查 cURL 執行是否成功
    if ($response === false) {
        die("cURL Error: " . curl_error($ch));
    }
    
    // 擷取 HTTP 狀態代碼
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    // 關閉 cURL 對話
    curl_close($ch);
    // 解碼響應資料
    $response_data = json_decode($response, true);
    // 處理響應
    if ($status_code == 200) {
        if (isset($response_data['output']['text'])) {
            echo "{$response_data['output']['text']}\n";
        } else {
            echo "No text in response.\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=Unknown error\n";}
    }
    ?>

    響應樣本

    寢室公約的第二條規定如下:
    
    > 寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。
    
    如果需要瞭解更多的公約內容或其他資訊,請隨時告訴我!

    Node.js

    需安裝相關依賴:

    npm install axios

    請求樣本

    const axios = require('axios');
    async function callDashScope() {
        // 若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey='sk-xxx'。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
        const apiKey = process.env.DASHSCOPE_API_KEY;
        const appId = 'YOUR_APP_ID';// 替換為實際的應用 ID
        const pluginCode = 'YOUR_PLUGIN_CODE';// 替換為實際的外掛程式ID
        const url = `https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion`;
    
        const data = {
            input: {
                prompt: "寢室公約內容",
                biz_params: {
                    user_defined_params: {
                        [pluginCode]: {
                            // article_index為自訂外掛程式的變數,替換為實際的外掛程式變數
                            'article_index': 6
                        }
                    },
                    user_defined_tokens: {
                        [pluginCode]: {
                            // YOUR_TOKEN替換為實際的鑒權資訊,如API key
                            user_token: 'YOUR_TOKEN'
                        }
                    }
                }
            },
            parameters: {},
            debug: {}
        };
    
        try {
            console.log("Sending request to DashScope API...");
    
            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("Request failed:");
                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=Unknown error');
                }
            }
        } catch (error) {
            console.error(`Error calling DashScope: ${error.message}`);
            if (error.response) {
                console.error(`Response status: ${error.response.status}`);
                console.error(`Response data: ${JSON.stringify(error.response.data, null, 2)}`);
            }
        }
    }
    callDashScope();

    響應樣本

    寢室公約的第六條規定:養成良好的作息習慣,每一位寢室成員都享有休息的權利和承擔保證他人休息權利和義務。如果你需要瞭解更多的規定內容,請進一步說明。

    C#

    請求樣本

    using System.Text;
    
    class Program
    {
        static async Task Main(string[] args)
        {
            // 若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
            string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY")?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");;
            string appId = "YOUR_APP_ID";// 替換為實際的應用ID
    
            if (string.IsNullOrEmpty(apiKey))
            {
                Console.WriteLine("請確保設定了 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"; // your_plugin_code替換為實際的外掛程式 ID
                // YOUR_TOKEN替換為實際的Token,如API key
                string jsonContent = $@"{{
                    ""input"": {{
                        ""prompt"": ""寢室公約內容"",
                        ""biz_params"": {{
                            ""user_defined_params"": {{
                                ""{pluginCode}"": {{
                                    ""article_index"": 2
                                }}
                            }},
                            ""user_defined_tokens"": {{
                                ""{pluginCode}"": {{
                                    ""user_token"": ""YOUR_TOKEN"" 
                                }}
                            }}
                        }}
                    }},
                    ""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("Request successful:");
                        Console.WriteLine(responseBody);
                    }
                    else
                    {
                        Console.WriteLine($"Request failed with status code: {response.StatusCode}");
                        string responseBody = await response.Content.ReadAsStringAsync();
                        Console.WriteLine(responseBody);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error calling DashScope: {ex.Message}");
                }
            }
        }
    }

    響應樣本

    {
        "output": {
            "finish_reason": "stop",
            "session_id": "1a1913a9922a401f8eba36df8ea1a062",
            "text": "寢室公約的第二條規定如下:
    
    寢室成員應當互幫互助、互相關心、互相學習、共同提高;寬容謙讓、相互尊重、以誠相待。
    
    如需瞭解更詳細的公約內容,請進一步指明。"
        },
        "usage": {
            "models": [
                {
                    "output_tokens": 66,
                    "model_id": "qwen-max",
                    "input_tokens": 802
                }
            ]
        },
        "request_id": "04bac806-c5e6-9fab-a846-a66641862be9"
    }

    Go

    請求樣本

    package main
    
    import (
    	"bytes"
    	"encoding/json"
    	"fmt"
    	"io"
    	"net/http"
    	"os"
    )
    
    func main() {
    	// 若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey := "sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
    	apiKey := os.Getenv("DASHSCOPE_API_KEY")
    	appId := "YOUR_APP_ID"           // 替換為實際的應用 ID
    	pluginCode := "YOUR_PLUGIN_CODE" // 替換為實際的外掛程式 ID
    
    	if apiKey == "" {
    		fmt.Println("請確保設定了DASHSCOPE_API_KEY。")
    		return
    	}
    
    	url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)
    
    	// 建立請求體
    	requestBody := map[string]interface{}{
    		"input": map[string]interface{}{
    			"prompt": "寢室公約內容",
    			"biz_params": map[string]interface{}{
    				"user_defined_params": map[string]interface{}{
    					pluginCode: map[string]interface{}{
    						"article_index": 10,
    					},
    				},
    				"user_defined_tokens": map[string]interface{}{
    					pluginCode: map[string]interface{}{
    						"user_token": "YOUR_USER_TOKEN", // 替換實際的鑒權 token,如API key
    					},
    				},
    			},
    		},
    		"parameters": map[string]interface{}{},
    		"debug":      map[string]interface{}{},
    	}
    
    	jsonData, err := json.Marshal(requestBody)
    	if err != nil {
    		fmt.Printf("Failed to marshal JSON: %v\n", err)
    		return
    	}
    
    	// 建立 HTTP POST 請求
    	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    	if err != nil {
    		fmt.Printf("Failed to create request: %v\n", err)
    		return
    	}
    
    	// 佈建要求頭
    	req.Header.Set("Authorization", "Bearer "+apiKey)
    	req.Header.Set("Content-Type", "application/json")
    
    	// 發送請求
    	client := &http.Client{}
    	resp, err := client.Do(req)
    	if err != nil {
    		fmt.Printf("Failed to send request: %v\n", err)
    		return
    	}
    	defer resp.Body.Close()
    
    	// 讀取響應
    	body, err := io.ReadAll(resp.Body)
    	if err != nil {
    		fmt.Printf("Failed to read response: %v\n", err)
    		return
    	}
    
    	// 處理響應
    	if resp.StatusCode == http.StatusOK {
    		fmt.Println("Request successful:")
    		fmt.Println(string(body))
    	} else {
    		fmt.Printf("Request failed with status code: %d\n", resp.StatusCode)
    		fmt.Println(string(body))
    	}
    }

    響應樣本

    {
        "output": {
            "finish_reason": "stop",
            "session_id": "b8e051ba7e954ff8919208e7b84430fa",
            "text": "寢室公約的第十條規定,寢室成員應共同努力,營造和維護內務整潔乾淨、美觀、高文化品味的寢室環境。如果需要瞭解完整的寢室公約內容,可能還需要查看其他條款或直接諮詢宿舍管理部門。對於更多具體內容,您還有想要瞭解的部分嗎?"
        },
        "usage": {
            "models": [
                {
                    "output_tokens": 70,
                    "model_id": "qwen-max",
                    "input_tokens": 855
                }
            ]
        },
        "request_id": "0921ee34-2754-9616-a826-cea33a0e0a14"
    }

應用的自訂節點參數傳遞

本文以根據城市名查詢城市行政地區劃分作為樣本,向您展示API如何調用應用的自訂節點參數傳遞功能

說明

應用的自訂節點參數通過工作流程應用的開始節點傳遞,或通過智能體編排應用的應用節點傳遞。

下方樣本展示在工作流程應用中,傳遞開始節點的自訂參數。

如何使用

步驟一:自訂節點參數

訪問百鍊控制台的應用管理頁面,選擇工作流程應用並自訂開始節點的參數。

參考下面在工作流程應用中傳遞城市名參數的例子,在應用的開始節點設定String類型變數city,同時在Prompt中插入變數city和變數query,並發布應用。

image

步驟二:API調用

調用時通過biz_params欄位傳遞city,通過prompt欄位傳遞query。

Python

請求樣本

import os
from http import HTTPStatus
import dashscope
from dashscope import Application
# 工作流程和智能體編排應用自訂參數傳遞

dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
biz_params = {"city": "杭州"}
response = Application.call(
    # 若沒有配置環境變數,可用百鍊API Key將下行替換為:api_key="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    app_id='YOUR_APP_ID',  # 替換為實際的應用 ID
    prompt='查詢這個城市的行政地區劃分',
    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'請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code')
else:
    print(f'{response.output.text}')  # 處理只輸出文本text

響應樣本

杭州市,作為浙江省的省會城市,其行政地區劃分包括10個市轄區:上城區、拱墅區、西湖區、濱江區、蕭山區、餘杭區、臨平區、錢塘區、富陽區、臨安區。每個區都有其獨特的特色和發展重點。

- 上城區:位於杭州市中心地帶,是杭州的政治、經濟、文化中心之一。
- 拱墅區:以運河文化為特色,擁有眾多歷史文化遺產。
- 西湖區:著名的西湖風景區就位於此區,是旅遊觀光的重要目的地。
- 濱江區:高新技術產業聚集地,阿里巴巴等知名企業坐落於此。
- 蕭山區:東南部的一個行政區,經濟發展迅速,特別是製造業方面。
- 餘杭區:近年來發展快速,尤其是互連網經濟領域,阿里巴巴總部也設在這裡(註:阿里巴巴總部實際位於濱江區)。
- 臨平區:新成立的行政區,旨在促進該地區經濟社會全面發展。
- 錢塘區:同樣是一個較新的行政區劃調整結果,強調創新發展和生態保護相結合。
- 富陽區:位於杭州西南方向,以其豐富的自然景觀和悠久的歷史文化著稱。
- 臨安區:地處杭州西部,以生態優美聞名,並且有著深厚的文化底蘊。

請注意,隨著時間推移,具體的城市規劃可能會有所變化,請參考最新的官方資訊。

Java

請求樣本

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 io.reactivex.Flowable;
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 =
                "{\"city\":\"杭州\"}";
        ApplicationParam param = ApplicationParam.builder()
                // 若沒有配置環境變數,可用百鍊API Key將下行替換為:.apiKey("sk-xxx")。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .appId("YOUR_APP_ID")
                .prompt("查詢這個城市的行政地區劃分")
                .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("請參考文檔:https://www.alibabacloud.com/help/zh/model-studio/developer-reference/error-code");
        }
        System.exit(0);
    }
}

響應樣本

杭州市是浙江省的省會城市,其行政地區劃分主要包括10個市轄區:上城區、拱墅區、西湖區、濱江區、蕭山區、餘杭區、臨平區、錢塘區、富陽區、臨安區。每個區都有自己的特色和發展重點。

- 上城區:位於杭州市中心,擁有許多歷史文化遺產。
- 拱墅區:以大運河文化而聞名,同時也是一個重要的商業和居住區。
- 西湖區:以其美麗的自然風光著稱,包括著名的西湖風景區。
- 濱江區:高新技術產業集聚地,杭州國家高新技術產業開發區就設在這裡。
- 蕭山區:經濟發展迅速,尤其在製造業方面表現突出。
- 餘杭區:近年來隨著阿里巴巴等高科技企業的發展而快速崛起。
- 臨平區:2021年由原餘杭區部分地區調整而來,注重生態建設和科技創新。
- 錢塘區:同樣是在2021年成立的新區,定位為杭州東部交通樞紐及產業發展新高地。
- 富陽區:歷史悠久的文化名城,也是造紙業的重要基地之一。
- 臨安區:位於杭州西部,森林覆蓋率高,生態環境良好。

這些地區共同構成了杭州市獨特的地理格局和社會經濟結構。如果你對某個特定地區感興趣或需要更詳細的資訊,請告訴我!

HTTP

curl

請求樣本

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": "查詢這個城市的行政地區劃分",
        "biz_params": {
        "city": "杭州"}
    },
    "parameters":  {}
}'
YOUR_APP_ID替換為實際的應用 ID。

響應樣本

{"output":{"finish_reason":"stop","session_id":"c211219896004b50a1f6f66f2ec5413e",
"text":"杭州市下轄10個區、1個縣,代管2個縣級市,分別為:
上城區、拱墅區、西湖區、濱江區、蕭山區、餘杭區、臨平區、錢塘區、富陽區、臨安區、桐廬縣、淳安縣、建德市、諸暨市。
注意,諸暨市由浙江省直轄、杭州市與紹興市共同管理。"},"usage":{},
"request_id":"02c3c9e1-7912-9505-91aa-248d04fb1f5d"}

PHP

請求樣本

<?php

# 若沒有配置環境變數,可用百鍊API Key將下行替換為:$api_key="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
$api_key = getenv("DASHSCOPE_API_KEY");
$application_id = 'YOUR_APP_ID'; // 替換為實際的應用 ID
$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// 構造請求資料
$data = [
    "input" => [
        'prompt' => '查詢這個城市的行政地區劃分',
        'biz_params' => [
            'city' => '杭州'
        ]
    ],
];
// 將資料編碼為 JSON
$dataString = json_encode($data);

// 檢查 json_encode 是否成功
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON encoding failed with error: " . json_last_error_msg());
}

// 初始化 cURL 對話
$ch = curl_init($url);

// 設定 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
]);

// 執行請求
$response = curl_exec($ch);

// 檢查 cURL 執行是否成功
if ($response === false) {
    die("cURL Error: " . curl_error($ch));
}

// 擷取 HTTP 狀態代碼
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// 關閉 cURL 對話
curl_close($ch);
// 解碼響應資料
$response_data = json_decode($response, true);
// 處理響應
if ($status_code == 200) {
    if (isset($response_data['output']['text'])) {
        echo "{$response_data['output']['text']}\n";
    } else {
        echo "No text in response.\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=Unknown error\n";
    }
}

響應樣本

杭州市是浙江省的省會城市,其行政地區劃分主要包括10個市轄區:上城區、拱墅區、西湖區、濱江區、蕭山區、餘杭區、臨平區、錢塘區、富陽區、臨安區。

每個區都有自己的特色和發展重點,比如:
- **上城區**和**拱墅區**位於杭州市中心,商業繁華,歷史悠久。
- **西湖區**以美麗的西湖而聞名,同時也是一個重要的科教文化區。
- **濱江區**則以其高新技術產業發展著稱。
- **蕭山區**、**餘杭區**等則是近年來隨著城市發展迅速崛起的新城區或經濟開發區。
- **臨安區**、**富陽區**等地則更多保留了自然風光與鄉村風貌。

請注意,中國的行政區劃可能會根據國家政策調整有所變化,請通過官方渠道擷取最新資訊。

Node.js

需安裝相關依賴:

npm install axios

請求樣本

const axios = require('axios');

async function callDashScope() {
    // 若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey='sk-xxx'。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
    const apiKey = process.env.DASHSCOPE_API_KEY;
    const appId = 'YOUR_APP_ID'; // 替換為實際的應用 ID

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

    const data = {
        input: {
            prompt: "查詢這個城市的行政地區劃分",
            biz_params: {
                'city': '杭州',
            },
        },
        parameters: {},
        debug: {},
    };

    try {
        console.log("Sending request to DashScope API...");

        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("Request failed:");
            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=Unknown error');
            }
        }
    } catch (error) {
        console.error(`Error calling DashScope: ${error.message}`);
        if (error.response) {
            console.error(`Response status: ${error.response.status}`);
            console.error(`Response data: ${JSON.stringify(error.response.data, null, 2)}`);
        }
    }
}

callDashScope();

響應樣本

杭州市是浙江省的省會,其行政地區劃分包括10個市轄區。具體如下:

1. 上城區(Shàngchéng Qū):位於杭州市中心偏南,是杭州歷史最悠久、文化底蘊最深厚的地區之一。
2. 拱墅區(Gǒngshù Qū):原為下城區和拱墅區合并而成的新區,位於杭州市北部。
3. 西湖區(Xīhú Qū):以世界文化遺產西湖而聞名,擁有豐富的自然與人文景觀。
4. 濱江區(Bīnjiāng Qū):地處錢塘江南岸,是一個高新技術產業集聚地。
5. 蕭山區(Xiāoshān Qū):位於杭州市東部,是中國重要的製造業基地之一。
6. 餘杭區(Yúháng Qū):曾經是中國四大名鎮之一的臨平所在地,現已成為杭州重要的經濟發展區。
7. 富陽區(Fùyáng Qū):位於杭州市西南部,因富春江穿流其間而得名。
8. 臨安區(Lín'ān Qū):位於杭州市西部山區,以其美麗的自然風光著稱。
9. 錢塘區(Qiántáng Qū):成立於2021年,由原大江東產業集聚區及部分蕭山區組成,旨在促進杭州東部地區的發展。
10. 臨平區(Lín Píng Qū):從餘杭區分設出來的一個新行政區劃,主要涵蓋原餘杭區內的臨平街道等地。

以上資訊反映了截至我最後更新時的情況,請注意行政區劃可能會有所調整,請以官方發布的最新訊息為準。

C#

請求樣本

using System.Text;

class Program
{
    static async Task Main(string[] args)
    {
        //若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey="sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。 
        string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");
        string appId = "YOUR_APP_ID"; // 替換為實際的應用ID
        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"": ""查詢這個城市的行政地區劃分"",
                    ""biz_params"":{
                        ""city"":""杭州""
                    }
                },
                ""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("Request successful:");
                    Console.WriteLine(responseBody);
                }
                else
                {
                    Console.WriteLine($"Request failed with status code: {response.StatusCode}");
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error calling DashScope: {ex.Message}");
            }
        }
    }
}

響應樣本

{
    "output": {
        "finish_reason": "stop",
        "session_id": "7a9ff57eec7d475fa5d487de5f5178d2",
        "text": "杭州市是浙江省的省會,它下轄有10個市轄區:上城區、拱墅區、西湖區、濱江區、蕭山區、餘杭區、臨平區、錢塘區、富陽區和臨安區。每個區都有其獨特的地理位置和發展特色。例如,西湖區以美麗的自然風光著稱,尤其是著名的杭州西湖就位於此;而濱江區則更多地以其高新技術產業發展聞名。此外,隨著城市的發展,行政區劃也可能會有所調整,請關注官方發布的最新資訊。"
    },
    "usage": {

    },
    "request_id": "d2c2fcc9-f821-98c9-9430-8704a2a41225"
}

Go

請求樣本

package main

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

func main() {
	// 若沒有配置環境變數,可用百鍊API Key將下行替換為:apiKey := "sk-xxx"。但不建議在生產環境中直接將API Key寫入程式碼到代碼中,以減少API Key泄露風險。
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	appId := "YOUR_APP_ID" // 替換為實際的應用 ID

	if apiKey == "" {
		fmt.Println("請確保設定了DASHSCOPE_API_KEY。")
		return
	}

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

	// 建立請求體
	requestBody := map[string]interface{}{
		"input": map[string]interface{}{
			"prompt": "查詢這個城市的行政地區劃分",
			"biz_params": map[string]interface{}{
				"city": "杭州",
			},
		},
		"parameters": map[string]interface{}{},
		"debug":      map[string]interface{}{},
	}

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

	// 建立 HTTP POST 請求
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("Failed to create request: %v\n", err)
		return
	}

	// 佈建要求頭
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	// 發送請求
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Failed to send request: %v\n", err)
		return
	}
	defer resp.Body.Close()

	// 讀取響應
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Failed to read response: %v\n", err)
		return
	}

	// 處理響應
	if resp.StatusCode == http.StatusOK {
		fmt.Println("Request successful:")
		fmt.Println(string(body))
	} else {
		fmt.Printf("Request failed with status code: %d\n", resp.StatusCode)
		fmt.Println(string(body))
	}
}

響應樣本

{
    "output": {
        "finish_reason": "stop",
        "session_id": "2dc3e1a9dcd248c6bb9ca92bffc3e745",
        "text": "杭州市,簡稱“杭”,是浙江省的省會城市。根據最新的行政區劃調整,杭州市現轄10個市轄區、2個縣級市和1個縣,具體如下:

- 市轄區(10個):上城區、拱墅區、西湖區、濱江區、蕭山區、餘杭區、臨平區、錢塘區、富陽區、臨安區。
- 縣級市(2個):建德市、桐廬縣(注意這裡的桐廬實際上被列為縣級市處理,但準確地說它是一個縣)。
- 縣(1個):淳安縣。

請注意,隨著時間的變化,行政地區可能會有所調整,請以官方最新發行的訊息為準。上述資訊基於較新的資料整理而來,對於最新的變動情況,建議訪問政府官方網站擷取最準確的資訊。"
    },
    "usage": {

    },
    "request_id": "d3c8f368-b645-9446-bfe4-20ca51821a02"
}

相關文檔

自訂外掛程式:自訂外掛程式的建立步驟。

應用調用:應用的調用方式及更多用法。

應用調用API:完整的參數列表和調用樣本。