本文主要介紹如何使用API調用阿里云百煉的流程編排應用,也就是從應用中心中創建的流程編排應用。
SDK使用
前提條件
已開通百煉服務:開通阿里云百煉大模型服務產品。
已創建API-KEY: 獲取API-KEY。
已安裝最新版SDK:安裝SDK。
已創建RAG檢索增強應用:如何創建應用調用大模型能力,并參考流程編排配置流程編排應用。
快速調用
以下示例展示了調用流程編排應用來調用自定義插件進行實時天氣查詢問答。
需要使用您的API-KEY替換示例中的YOUR_API_KEY,并將APP-ID替換示例中的YOUR_APP_ID,代碼才能正常運行。
python sdk version: dashscope>=1.10.0
java sdk version: >=2.5.0
設置API-KEY
export DASHSCOPE_API_KEY=YOUR_API_KEY
調用示例
from http import HTTPStatus
from dashscope import Application
def flow_call():
response = Application.call(app_id='YOUR_APP_ID',
prompt='杭州的天氣怎么樣',
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
else:
print('request_id=%s\n output=%s\n usage=%s\n' % (response.request_id, response.output, response.usage))
if __name__ == '__main__':
flow_call()
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.List;
public class Main{
public static void flowCall()
throws ApiException, NoApiKeyException, InputRequiredException {
ApplicationParam param = ApplicationParam.builder()
.appId("YOUR_APP_ID")
.prompt("杭州的天氣怎么樣")
.topP(0.2)
.build();
Application application = new Application();
ApplicationResult result = application.call(param);
System.out.printf("requestId: %s, text: %s, finishReason: %s\n",
result.getRequestId(), result.getOutput().getText(), result.getOutput().getFinishReason());
}
public static void main(String[] args) {
try {
flowCall();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
System.exit(0);
}
}
業務參數透傳
自定義參數透傳通常用在調用流程編排應用時,透傳業務參數。比如在以下場景中可能用到業務參數透傳:
在流程編排應用中,需要傳遞流程編排中指定的變量值。
from http import HTTPStatus
from dashscope import Application
def flow_call_with_param():
# 查詢今天的天氣
biz_params = {'date': '今天'}
response = Application.call(app_id='YOUR_APP_ID',
prompt='杭州的天氣怎么樣',
top_p=0.2,
biz_params=biz_params, # 傳遞業務參數
has_thoughts=True, # 開啟插件調用過程返回結果
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
else:
print('request_id=%s\n output=%s\n usage=%s\n' % (response.request_id, response.output, response.usage))
thoughts = response.output.thoughts
if thoughts is not None:
for thought in thoughts:
print('thought=%s' % thought)
if __name__ == '__main__':
flow_call_with_param()
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 java.util.Arrays;
public class Main {
public static void flowCallWithParam()
throws ApiException, NoApiKeyException, InputRequiredException {
//查詢今天的天氣
String bizParams = "{\"date\": \"今天\"}";
ApplicationParam param = ApplicationParam.builder()
.appId(APP_ID)
.prompt("杭州的天氣怎么樣")
// 傳遞業務參數
.bizParams(JsonUtils.parse(bizParams))
// 開啟插件調用過程返回結果
.hasThoughts(true)
.build();
Application application = new Application();
ApplicationResult result = application.call(param);
System.out.printf("requestId: %s, text: %s, finishReason: %s\n",
result.getRequestId(), result.getOutput().getText(), result.getOutput().getFinishReason());
List<ApplicationOutput.Thought> thoughts = result.getOutput().getThoughts();
if (thoughts != null && thoughts.size() > 0) {
for (ApplicationOutput.Thought thought : thoughts) {
System.out.printf("thought: %s\n", thought);
}
}
}
public static void main(String[] args) {
try {
flowCallWithParam();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
System.exit(0);
}
}
多輪會話
云端托管多輪會話
阿里云百煉應用提供云端托管多輪對話功能,通過session_id進行多輪會話,阿里云百煉云端將自動托管多輪會話,調用側無需自行維護多輪會話。
下面的例子中,第一次調用后返回session_id,在第二次調用時,可以傳入第一次返回的session_id,那么第二次調用模型服務時,將攜帶第一次調用的會話信息。
目前session id會話有效期是1個小時,最大歷史會話輪數為50。
如果同時傳入session id和history時,優先使用傳入的history,不再使用托管的多輪會話。
from http import HTTPStatus
from dashscope import Application
def call_with_session():
response = Application.call(app_id='YOUR_APP_ID',
prompt='我想去新疆',
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
return
response = Application.call(app_id='your app id',
prompt='那邊有什么旅游景點或者美食?',
top_p=0.2,
session_id=response.output.session_id
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
else:
print('request_id=%s, output=%s, usage=%s\n' % (response.request_id, response.output, response.usage))
if __name__ == '__main__':
call_with_session()
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;
public class Main {
public static void callWithSession()
throws ApiException, NoApiKeyException, InputRequiredException {
ApplicationParam param = ApplicationParam.builder()
.appId("YOUR_APP_ID")
.prompt("我想去新疆")
.build();
Application application = new Application();
ApplicationResult result = application.call(param);
param.setSessionId(result.getOutput().getSessionId());
param.setPrompt("那邊有什么旅游景點或者美食?");
result = application.call(param);
System.out.printf("requestId: %s, text: %s, finishReason: %s\n",
result.getRequestId(), result.getOutput().getText(), result.getOutput().getFinishReason());
}
public static void main(String[] args) {
try {
callWithSession();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
System.exit(0);
}
}
調用側傳入多輪會話
調用側自行維護多輪會話時,可以通過history傳入多輪會話信息。
from http import HTTPStatus
from dashscope import Application
def call_with_history():
prompt = '我想去新疆'
response = Application.call(app_id="YOUR_APP_ID",
prompt=prompt,
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
return
history = [{'user': prompt, 'bot': response.output.text}]
response = Application.call(app_id="YOUR_APP_ID",
prompt='那邊有什么旅游景點或者美食?',
history=history
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
else:
print('request_id=%s, output=%s, usage=%s\n' % (response.request_id, response.output, response.usage))
if __name__ == '__main__':
call_with_history()
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.common.History;
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;
public class Main {
public static void callWithHistory()
throws ApiException, NoApiKeyException, InputRequiredException {
String prompt = "我想去新疆";
ApplicationParam param = ApplicationParam.builder()
.appId(APP_ID)
.prompt("我想去新疆")
.build();
Application application = new Application();
ApplicationResult result = application.call(param);
param.setHistory(Arrays.asList(History.builder()
.user(prompt)
.bot(result.getOutput().getText())
.build()));
param.setPrompt("那邊有什么旅游景點或者美食?");
result = application.call(param);
System.out.printf("requestId: %s, text: %s, finishReason: %s\n",
result.getRequestId(), result.getOutput().getText(), result.getOutput().getFinishReason());
}
public static void main(String[] args) {
try {
callWithHistory();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
System.exit(0);
}
}
流式輸出
流式輸出需要添加對應參數。其中,Python SDK中需要添加stream=True,Java SDK中需要使用streamCall接口調用。
from http import HTTPStatus
from dashscope import Application
def call_with_stream():
responses = Application.call(app_id='YOUR_APP_ID',
prompt='如何做炒西紅柿雞蛋?',
stream=True
)
for response in responses:
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (
response.request_id, response.status_code, response.message))
else:
print('output=%s, usage=%s\n' % (response.output, response.usage))
if __name__ == '__main__':
call_with_stream()
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;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void streamCall() throws NoApiKeyException, InputRequiredException {
ApplicationParam param = ApplicationParam.builder()
.appId("YOUR_APP_ID")
.prompt("如何做炒西紅柿雞蛋?")
.build();
Application application = new Application();
Flowable<ApplicationResult> result = application.streamCall(param);
result.blockingForEach(data -> {
System.out.printf("requestId: %s, text: %s, finishReason: %s\n",
data.getRequestId(), data.getOutput().getText(), data.getOutput().getFinishReason());
});
}
public static void main(String[] args) {
try {
streamCall();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
System.exit(0);
}
}
業務空間
上述調用示例調用的是默認業務空間的應用,如果需要調用其他業務空間,需要傳入指定的業務空間標識。
請將WORKSPACE替換示例中的YOUR_WORKSPACE,代碼才能正常運行。請參考獲取業務空間 id獲取WORKSPACE。
from http import HTTPStatus
from dashscope import Application
def call_with_workspace():
response = Application.call(app_id='YOUR_APP_ID',
workspace='YOUR_WORKSPACE',
prompt='如何做炒西紅柿雞蛋?',
top_p=0.2,
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
else:
print('request_id=%s, text=%s, usage=%s\n' % (response.request_id, response.output.text, response.usage))
if __name__ == '__main__':
call_with_workspace()
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public class Main {
public static void callWithWorkspace() throws NoApiKeyException, InputRequiredException {
ApplicationParam param = ApplicationParam.builder()
.workspace("YOUR_WORKSPACE")
.appId("YOUR_APP_ID")
.prompt("如何做炒西紅柿雞蛋?")
.build();
Application application = new Application();
ApplicationResult result = application.call(param);
System.out.printf("requestId: %s, text: %s, finishReason: %s\n",
result.getRequestId(), result.getOutput().getText(), result.getOutput().getFinishReason());
}
public static void main(String[] args) {
try {
callWithWorkspace();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
System.exit(0);
}
}
輸入參數
參數 | 類型 | 默認值 | 說明 |
app_id | string | - | 應用標識。 |
prompt | string | - | 用戶當前輸入的期望模型執行指令,用于指導模型生成回復。 |
session_id | string | - | 對話歷史會話唯一標識,傳入session_id后,將在云端進行對話歷史記錄,調用大模型將自動攜帶存儲的對話歷史。請確保session_id不重復,并且session_id和history二選一即可。 |
history(可選) | list[dict] | [] | 用戶與模型的對話歷史,list中的每個元素是形式為{"user":"用戶輸入","bot":"模型輸出"}的一輪對話,多輪對話按時間順序排列。 |
workspace(可選) | string | - | 業務空間標識。 |
seed(可選) | int | 1234 | 生成時使用的隨機數種子,用戶控制模型生成內容的隨機性。seed支持無符號64位整數,默認值為1234。在使用seed時,模型將盡可能生成相同或相似的結果,但目前不保證每次生成的結果完全相同。 |
top_p(可選) | float | 0.2 | 生成過程中核采樣方法的概率閾值,例如,取值為0.2時,僅保留概率加起來大于等于0.2的最可能token的最小集合作為候選集。取值范圍為(0,1.0),取值越大,生成的隨機性越高;取值越低,生成的確定性越高。 |
top_k(可選) | int | None | 生成時,采樣候選集的大小。例如,取值為50時,僅將單次生成中得分最高的50個token組成隨機采樣的候選集。取值越大,生成的隨機性越高;取值越小,生成的確定性越高。默認不傳遞該參數,取值為None或當top_k大于100時,表示不啟用top_k策略,此時,僅有top_p策略生效。 |
temperature(可選) | float | 1.0 | 用于控制隨機性和多樣性的程度。具體來說,temperature值控制了生成文本時對每個候選詞的概率分布進行平滑的程度。較高的temperature值會降低概率分布的峰值,使得更多的低概率詞被選擇,生成結果更加多樣化;而較低的temperature值則會增強概率分布的峰值,使得高概率詞更容易被選擇,生成結果更加確定。 取值范圍: [0, 2),不建議取值為0,無意義。 python version >=1.10.1 java version >= 2.5.1 |
stream(可選) | bool | False | 是否使用流式輸出。當以stream模式輸出結果時,接口返回結果為generator,需要通過迭代獲取結果,默認每次輸出為當前生成的整個序列,最后一次輸出為最終全部生成結果,可以通過參數incremental_output為False改變輸出模式為非增量輸出。 |
biz_params(可選) | dict | - | 業務API使用的參數,可以直接進行透傳。當調用側在調用流程編排應用時,需要將業務參數傳遞給業務方的API時,可以使用此參數,比如userId、token等。 |
has_thoughts | bool | False | 是否輸出檢索召回處理過程信息。開啟后,將返回文檔檢索召回和模型推理的過程信息。 |
輸出參數
返回參數 | 類型 | 說明 | 備注 |
status_code | int | 200(HTTPStatus.OK)表示請求成功,否則表示請求失敗,可以通過code獲取錯誤碼,通過message字段獲取錯誤詳細信息。 說明 Python才有這個字段,Java失敗會拋出異常,異常信息為code,message內容。 | |
request_Id | string | 系統生成的標識本次調用的id。 | |
code | string | 表示請求失敗,表示錯誤碼,成功忽略。 python only | |
message | string | 失敗,表示失敗詳細信息,成功忽略。 python only | |
output | dict | 調用結果信息,對于千問模型,包含輸出text。 | |
usage | dict | 計量信息,表示本次請求的計量數據。 | |
output.text | string | 模型生成回復。 | |
output.finish_reason | string | 正在生成時為null,生成結束時如果由于停止token導致則為stop。 | |
output.session_id | string | 對話歷史會話的唯一標識. | 在多輪會話時,可以使用此標識進行多輪會話保持。 |
usage.models[].model_id | string | 本次應用調用到的模型。 | |
usage.models[].input_tokens | int | 用戶輸入文本轉換成Token后的長度。 | |
usage.models[].output_tokens | int | 模型生成回復轉換為Token后的長度。 | |
output.thoughts[].throught | string | 模型的思考結果。 | |
output.thoughts[].action_type | string | 大模型返回的執行步驟類型 api:執行API插件,response:返回最終結果。 | |
output.thoughts[].action_name | string | 執行的action名稱,如文檔檢索、API插件。 | |
output.thoughts[].action | string | 執行的步驟。 | |
output.thoughts[].action_input_stream | string | 入參的流式結果。 | |
output.thoughts[].action_input | string | 插件的輸入參數。 | |
output.thoughts[].response | string | 模型調用返回的結果。 | |
output.thoughts[].observation | string | 檢索或插件的返回結果。 |
HTTP調用接口
功能描述
應用調用同時支持 HTTP 調用來完成客戶的響應,目前提供普通 HTTP 和 HTTP SSE 兩種協議,您可根據自己的需求自行選擇。
前提條件
已開通百煉服務: 開通阿里云百煉大模型服務產品。
已創建API-KEY:獲取API-KEY。
已創建RAG檢索增強應用:如何創建應用調用大模型能力,并上傳企業知識:上傳企業知識。
提交接口調用
POST https://dashscope.aliyuncs.com/api/v1/apps/{YOUR_APP_ID}/completion
入參描述
傳參方式 | 字段 | 類型 | 必選 | 描述 | 示例值 |
Header | Content-Type | String | 是 | 請求類型:application/json | application/json |
Accept | String | 否 | */*,選擇text/event-stream則會開啟 SSE 響應,默認無設置 | text/event-stream | |
Authorization | String | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a | |
X-DashScope-SSE | String | 否 | 跟Accept: text/event-stream 二選一即可啟用SSE響應 | enable | |
X-DashScope-WorkSpace | String | 否 | 業務空間標識。 | ws_ik******RVYCKzt | |
Body | input.prompt | String | 是 | 用戶當前輸入的期望模型執行指令,支持中英文。 | 哪個公園距離我更近 |
input.history | List | 否 | 用戶與模型的對話歷史,list中的每個元素是形式為{"user":"用戶輸入","bot":"模型輸出"}的一輪對話,多輪對話按時間正序排列。 | "history": [ { "user":"今天天氣好嗎?", "bot":"今天天氣不錯,要出去玩玩嘛?" }, { "user":"那你有什么地方推薦?", "bot":"我建議你去公園,春天來了,花朵開了,很美麗。" } ] | |
input.session_id | String | 否 | 對話歷史會話唯一標識, 傳入session_id后,將在云端進行對話歷史進行記錄,調用大模型將自動攜帶存儲的對話歷史。請確保session_id不重復,并且session_id和history二選一即可。 | ||
input.biz_params | JSON | 否 | 業務API使用的參數,可以直接進行透傳。當調用側在調用流程編排應用時,需要將業務參數傳遞給業務方的API時,可以使用此參數,比如userId、token等。 | {"userId": "123"} | |
parameters.seed | Integer | 否 | 生成時使用的隨機數種子,用戶控制模型生成內容的隨機性。seed支持無符號64位整數,默認值為1234。在使用seed時,模型將盡可能生成相同或相似的結果,但目前不保證每次生成的結果完全相同。 | 65535 | |
parameters.top_p | Float | 否 | 生成時,核采樣方法的概率閾值。例如,取值為0.2時,僅保留累計概率之和大于等于0.2的概率分布中的token,作為隨機采樣的候選集。取值范圍為(0,1.0),取值越大,生成的隨機性越高;取值越低,生成的隨機性越低。默認值為0.2。注意,取值不要大于等于1 | 0.2 | |
parameters.top_k | Integer | 否 | 生成時,采樣候選集的大小。例如,取值為50時,僅將單次生成中得分最高的50個token組成隨機采樣的候選集。取值越大,生成的隨機性越高;取值越小,生成的確定性越高。注意:如果top_k參數為空或者top_k的值大于100,表示不啟用top_k策略,此時僅有top_p策略生效,默認是空。 | 50 | |
parameters.temperature | Float | 否 | 用于控制隨機性和多樣性的程度。具體來說,temperature值控制了生成文本時對每個候選詞的概率分布進行平滑的程度。較高的temperature值會降低概率分布的峰值,使得更多的低概率詞被選擇,生成結果更加多樣化;而較低的temperature值則會增強概率分布的峰值,使得高概率詞更容易被選擇,生成結果更加確定。 取值范圍:[0, 2),系統默認值為1.0。不建議將值為0,因為這沒有意義。 | 1.0 | |
parameters.has_thoughts | Bool | 否 | 是否輸出檢索召回處理過程信息。開啟后,將返回文檔檢索召回和模型推理的過程信息。 |
出參描述
字段 | 類型 | 描述 | 示例值 |
status_code | int | 200(HTTPStatus.OK)表示請求成功,否則表示請求失敗,可以通過code獲取錯誤碼,通過message字段獲取錯誤詳細信息。 說明 Python才有這個字段,Java失敗會拋出異常,異常信息為code,message內容。 | 200 |
request_Id | string | 系統生成的標識本次調用的id。 | 33dcf25a-******-8b711f15614e |
code | string | 表示請求失敗,表示錯誤碼,成功忽略。 | |
message | string | 失敗,表示失敗詳細信息,成功忽略。 | |
output.text | string | 模型生成回復。 | |
output.finish_reason | string | 正在生成時為null,生成結束時如果由于停止token導致則為stop。 | |
output.session_id | string | 對話歷史會話的唯一標識. | 在多輪會話時,可以使用此標識進行多輪會話保持。 |
usage.models[].model_id | string | 本次應用調用到的模型。 | |
usage.models[].input_tokens | int | 用戶輸入文本轉換成Token后的長度。 | |
usage.models[].output_tokens | int | 模型生成回復轉換為Token后的長度。 | |
output.thoughts[].throught | string | 模型的思考結果。 | |
output.thoughts[].action_type | string | 大模型返回的執行步驟類型 api:執行API插件,response:返回最終結果。 | |
output.thoughts[].action_name | string | 執行的action名稱,如文檔檢索、API插件。 | |
output.thoughts[].action | string | 執行的步驟。 | |
output.thoughts[].action_input_stream | string | 入參的流式結果。 | |
output.thoughts[].action_input | string | 插件的輸入參數。 | |
output.thoughts[].response | string | 模型調用返回的結果。 | |
output.thoughts[].observation | string | 檢索或插件的返回結果。 |
請求示例(SSE 關閉)
以下示例展示通過CURL命令來調用流程編排應用的腳本(SSE 關閉)。
需要使用您的API-KEY替換示例中的YOUR_API_KEY,并將APP-ID替換示例中的YOUR_APP_ID,代碼才能正常運行。
curl --location 'https://dashscope.aliyuncs.com/api/v1/apps/{YOUR_APP_ID}/completion' \
--header 'Authorization: Bearer {YOUR_API_KEY}' \
--header 'Content-Type: application/json' \
--data '{
"input": {
"prompt": "杭州的天氣怎么樣",
"biz_params": {"date": "今天"}
},
"parameters": {},
"debug": {}
}' --verbose
響應示例(SSE關閉)
{
"output": {
"finish_reason": "stop",
"session_id": "06f631b******97afdb3282b",
"text": " 杭州的天氣為小到中雨,氣溫在15~27℃之間。"
},
"usage": {
"models": [
{
"output_tokens": 68,
"model_id": "qwen-plugin",
"input_tokens": 459
},
{
"output_tokens": 51,
"model_id": "qwen-plugin",
"input_tokens": 583
}
]
},
"request_id": "98b95f2b-1453-94ce-a7c7-f7ef3e6ffcfa"
}
請求示例(SSE開啟)
以下示例展示通過CURL命令來調用流程編排應用的腳本(SSE開啟)。
需要使用您的API-KEY替換示例中的YOUR_API_KEY,并將APP-ID替換示例中的YOUR_APP_ID,代碼才能正常運行。
curl --location 'https://dashscope.aliyuncs.com/api/v1/apps/{YOUR_APP_ID}/completion' \
--header 'Authorization: Bearer {YOUR_API_KEY}' \
--header 'Content-Type: application/json' \
--header 'X-DashScope-SSE: enable' \
--data '{
"input": {
"prompt": "杭州的天氣怎么樣",
"biz_params": {"date": "今天"}
},
"parameters": {},
"debug": {}
}' --verbose
響應示例(SSE開啟)
id:1
event:result
:HTTP_STATUS/200
data:{"output":{"session_id":"0e8f1e9e******9c8c85b088877","finish_reason":"null","text":" 杭州的天氣為小到"},"usage":{"models":[{"input_tokens":459,"output_tokens":68,"model_id":"qwen-plugin"},{"input_tokens":583,"output_tokens":38,"model_id":"pre-plugin-888"}]},"request_id":"f936f2f5-52bd-95d4-a739-312649de2e97"}
......
......
id:3
event:result
:HTTP_STATUS/200
data:{"output":{"session_id":"0e8f1e9e4******e9c8c85b088877","finish_reason":"stop","text":" 杭州的天氣為小到中雨,氣溫在15~27℃之間。"},"usage":{"models":[{"input_tokens":459,"output_tokens":68,"model_id":"qwen-plugin"},{"input_tokens":583,"output_tokens":51,"model_id":"pre-plugin-888"}]},"request_id":"f936f2f5-52bd-95d4-a739-312649de2e97"}
請求示例(業務空間)
以下示例展示通過CURL命令來調用指定業務空間的流程編排應用的腳本。
需要使用您的API-KEY替換示例中的YOUR_API_KEY,并將APP-ID替換示例中的YOUR_APP_ID,然后將WORKSPACE替換示例中的YOUR_WORKSPACE,代碼才能正常運行。
curl --location 'https://dashscope.aliyuncs.com/api/v1/apps/{YOUR_APP_ID}/completion' \
--header 'Authorization: Bearer {YOUR_API_KEY}' \
--header 'Content-Type: application/json' \
--header 'X-DashScope-WorkSpace: {YOUR_WORKSPACE}' \
--data '{
"input": {
"prompt": "如何做土豆燉豬腳?"
},
"parameters": {},
"debug": {}
}' --verbose
響應示例(業務空間)
{
"output": {
"finish_reason": "stop",
"session_id": "a08c1b4e******0c4513db9eea4",
"text": "土豆燉豬腳是一道美味可口、營養豐富的家常菜,下面是一種簡單的制作方法:\n\n**材料準備:**\n1. 豬腳(豬蹄)500克\n2. 土豆2-3個\n3. 生姜3-4片\n4. 大蔥1根\n5. 八角2顆\n6. 桂皮一小塊\n7. 香葉2片\n8. 料酒適量\n9. 生抽、老抽各適量\n10. 冰糖適量\n11. 清水適量\n12. 鹽適量\n\n**步驟:**\n1. **豬腳處理**:豬腳剁成小塊,放入開水中焯水,去除血水和雜質,撈出后用清水沖洗干凈備用。\n \n2. **炒糖色**:鍋中加入少量油,放入冰糖小火慢慢熬化至紅色且有泡沫時,將焯過水的豬腳塊倒入鍋中翻煎,使豬腳表面均勻地裹上糖色。\n\n3. **燉煮**:加入切好的姜片、蔥段以及八角、桂皮、香葉等香料一同翻炒出香味。然后烹入料酒,加入生抽、老抽調色,再加入足夠的熱水沒過豬腳。\n\n4. **燉煮豬腳**:大火燒沸后撇去浮沫,轉中小火慢燉約40分鐘至豬腳軟爛。\n\n5. **加入土豆**:在豬腳燉至七八成熟時,將土豆削皮切塊,加入鍋中,繼續燉煮約20分鐘,直到土豆熟透且能輕易插入筷子。\n\n6. **調味**:最后根據個人口味加鹽調味,燉煮幾分鐘讓味道充分融合即可。\n\n7. **出鍋**:燉至湯汁濃稠,土豆和豬腳都完全熟透后,撒上蔥花或者香菜點綴,即可關火出鍋。\n\n以上就是土豆燉豬腳的基本做法,具體燉煮時間可能因豬腳的老嫩程度和個人口感喜好有所不同,可以根據實際情況調整。"
},
"usage": {
"models": [
{
"output_tokens": 456,
"model_id": "qwen-max",
"input_tokens": 64
}
]
},
"request_id": "99432adc-8b15-953f-afba-fd0895a68773"
}
異常響應示例
在訪問請求出錯的情況下,輸出的結果中會通過 code 和 message 指明錯誤原因。
{"code":"InvalidApiKey","message":"Invalid API-key provided.","request_id":"2637fcf9-32b1-9f4e-b0e9-1724d4aea00e"}
狀態碼說明
服務調用返回的狀態碼詳情,請參見狀態碼說明。