批量推理服務通過離線方式進行大規模數據處理,非常適合需要處理大量數據且無需實時獲取結果的場景,如:
數據評測、日志分析等。此外,批量推理的計費也低于實時推理,可有效節省資源消耗成本。
本文檔中極速體驗部分提供了接入代碼示例及教程。調用方無需準備任何數據,也無需了解本文檔其他部分內容,僅通過三個步驟即可實現一鍵運行,快速體驗到批量推理的效果。
本文檔主要針對需要集成HTTP API的技術開發工程師,詳細描述DeepSeek批量模型的技術內容。
如果您有與我們商務合作的需求,可以通過以下方式聯系我們:
商務郵箱: AIcloud_Business@corp.youdao.com
如果您對文檔內容有任何疑問,可以通過以下幾種方式聯系我們:
客服QQ:1906538062
智云翻譯技術交流QQ 1群: 652880659
智云翻譯技術交流QQ 2群: 669384425
智云翻譯技術交流QQ 3群: 807539209
智云翻譯技術交流QQ 4群: 936752411
聯系郵箱: zhiyun@corp.youdao.com
溫馨提示:
應用ID
和 應用密鑰
,請按照新手指南 獲取。以下為一次批量推理任務的標準處理流程:
輸入文件是一個jsonl格式的文件(即每行都是一個json格式的數據),有如下特點:
輸入文件中每行是一個獨立請求,其結構如下:
名稱 | 類型 | 是否必須 | 默認值 | 備注 | 其他信息 |
---|---|---|---|---|---|
custom_id | string | 必須 | 該請求的標記,用以與完成后的結果對應 | custom_id需在其所在的輸入文件中全局唯一,不可重復。 | |
body | string | 必須 | 調底層模型的入參,支持的參數可參考模型調用接口文檔 | 不支持設置model參數,系統會根據創建任務接口的參數自動設置。所有請求需使用同一模型。不支持設置stream, stream_options參數。 |
輸入文件示例
{"custom_id":"1","body":{"messages":[{"role":"user","content":"默寫靜夜思"}],"temperature":1}}
{"custom_id":"2","body":{"messages":[{"role":"user","content":"世界上面積最大的國家是哪個"}],"temperature":1}}
批量推理的請求允許部分成功。比如輸入文件有100個請求,可能80個成功,20個失敗。
任務結束后,輸出文件分為結果文件及錯誤文件:處理成功的請求會保存在結果文件中,處理失敗的請求則會保存在錯誤文件中,請求通過custom_id與輸入文件一一對應。
結果文件行結構
名稱 | 類型 | 默認值 | 備注 | 其他信息 |
---|---|---|---|---|
custom_id | string | 該請求的標記,用以與輸入的請求對應 | ||
id | string | 該請求調底層模型的處理id | ||
error | string | 錯誤原因 | ||
response | string | 請求響應結果 | ||
response.body | object | 調底層模型的返回結果 | 結果完全兼容OpenAI SDK,可參考火山引擎的文本對話API文檔的非流式返回結構:對話(Chat) API-響應 | |
response.requestId | string | 該次調模型請求的請求ID | ||
response.statusCode | int | 請求的響應狀態碼 |
結果文件示例(為方便閱讀,已通過json formatter調整縮進等格式):
{
"custom_id":"1",
"id":"INFER_db931ae0-0b11-4e7a-bbdb-3a92d6890f0f",
"response":{
"body":{
"choices":[
{
"finish_reason":"stop",
"index":0,
"message":{
"content":"\n\n《靜夜思》\n床前明月光,疑是地上霜。\n舉頭望明月,低頭思故鄉。\n\n注:此版本是明代刊行的通行版本(收錄于《唐詩三百首》等經典選本),與宋代文獻記載的早期版本(「床前看月光,疑是地上霜。舉頭望山月,低頭思故鄉」)存在細微差異。兩種版本均廣為流傳,體現了古詩詞在傳播過程中的文字流變現象。",
"reasoning_content":"好的,用戶讓我默寫李白的《靜夜思》。首先,我需要確認這首詩的內容是否正確。這首詩是五言絕句,共有四句。第一句“床前明月光”沒問題,但要注意有些版本是“床前看月光”或者“床前明月光”。第二句“疑是地上霜”通常不會有問題。第三句和第四句,有些版本是“舉頭望明月,低頭思故鄉”,而有些可能是“舉頭望山月”。這里需要判斷用戶希望得到哪種版本。李白的詩在流傳過程中可能有不同的版本,所以得考慮最常見的那個。現在的教材大多用“舉頭望明月”這個版本,可能更符合現代人的記憶。為了確保正確,可以回憶一下權威出版物或者教材里的版本,比如人教版語文課本用的是哪個。如果用戶是學生,可能需要準確的課本內容。另外,用戶可能沒有其他復雜的需求,只是單純想默寫,所以直接給出正確的詩句即可,不需要額外解釋,但最好注明可能存在版本差異,以免引起誤解。最后檢查每個字的正確性,比如“疑是地上霜”的“疑”字不要寫成“凝”,“舉頭”不要寫成“抬頭”。確保無誤后就可以回復了。\n",
"role":"assistant"
}
}
],
"created":1753147220,
"id":"chatcmpl-3afe7fcadcad4af7a30b52a3ee1ec2d0",
"model":"deepseek_r1",
"object":"chat.completion",
"usage":{
"completion_tokens":352,
"completion_tokens_details":{
"reasoning_tokens":253
},
"prompt_tokens":5,
"prompt_tokens_details":{
"cached_tokens":0
},
"total_tokens":357
}
},
"request_id":"INFER_db931ae0-0b11-4e7a-bbdb-3a92d6890f0f",
"status_code":0
}
}
{
"custom_id":"2",
"id":"INFER_dd4a6320-8408-4cc7-91f4-17f117e297f6",
"response":{
"body":{
"choices":[
{
"finish_reason":"stop",
"index":0,
"message":{
"content":"\n\n世界上面積最大的國家是 **俄羅斯聯邦**(簡稱俄羅斯)。 \n其國土總面積約為 **1712.5萬平方公里**(CIA《世界概況》數據),橫跨歐亞大陸,覆蓋了全球約八分之一的陸地面積,遠超第二大國加拿大(約998萬平方公里)。俄羅斯的領土包括廣闊的平原、山脈、森林、河流(如伏爾加河和勒拿河)以及豐富的自然資源。\n\n**補充說明**: \n- 領土爭議或計算標準(如是否包含水域)可能導致數據細微差異,但俄羅斯的領先地位無爭議。 \n- 若單算陸地面積,中國(約960萬平方公里)和俄羅斯的排名不變。",
"reasoning_content":"嗯,用戶問世界上面積最大的國家是哪個。這個問題看起來簡單,但其實需要確認幾個點。首先,我需要確定是用哪個標準來衡量面積,是總面積還是陸地面積?一般來說,提到國家面積時通常指的是總面積,包括陸地和水域,比如湖泊、河流等。俄羅斯作為最大的國家,領土橫跨歐亞兩大洲,面積超過1700萬平方公里,應該是正確答案。不過,我是不是應該考慮一些特殊情況,比如爭議地區?比如南極洲雖然有一些國家宣稱擁有主權,但根據《南極條約》,這些主張被凍結了,所以不算。另外,俄羅斯的面積數據是否有變動?需要確認最新的數據來源是否支持。另外,加拿大的面積也很大,但通常是排第二,之后是中國、美國等。用戶可能想確認這個排序是否準確。用戶沒有提到其他因素,比如人口或者經濟,所以專注于地理面積。此外,是否可能有某些資料有不同的數據,比如是否將某些區域算入國家面積,比如領海或專屬經濟區?不過一般國家面積統計以陸地面積為主。我需要確認標準的數據來源,例如CIA世界概況或者其他權威機構的數據。考慮到這些因素,答案應該是俄羅斯。不過,要確保不會有拼寫錯誤或者國家名稱的錯誤,比如蘇聯已經解體,現在是俄羅斯。還有可能,用戶可能混淆了面積最大的國家和人口最多的國家,但問題明確問的是面積。所以綜合來看,俄羅斯是正確的回答,但需要簡潔明確地指出。\n",
"role":"assistant"
}
}
],
"created":1753147220,
"id":"chatcmpl-7cf25a6debb14fa482b809a7b33a6534",
"model":"deepseek_r1",
"object":"chat.completion",
"usage":{
"completion_tokens":440,
"completion_tokens_details":{
"reasoning_tokens":297
},
"prompt_tokens":6,
"prompt_tokens_details":{
"cached_tokens":0
},
"total_tokens":446
}
},
"request_id":"INFER_dd4a6320-8408-4cc7-91f4-17f117e297f6",
"status_code":0
}
}
結構同結果文件
錯誤文件示例:
{
"custom_id":"50",
"error":"Auth fail:invalid apiKey",
"id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580",
"response":{
"request_id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580",
"status_code":90103
}
}
請求方式:POST
接口地址:https://openapi.youdao.com/llmgateway/batchInfer/createTask
請求參數
參數名稱 | 參數值 | 是否必須 | 示例 | 備注 |
---|---|---|---|---|
Content-Type | application/json | 是 | application/json | |
Authorization | Bearer ${api_key} | 是 | 在智云控制臺申請 | token鑒權 |
名稱 | 類型 | 是否必須 | 默認值 | 備注 | 其他信息 |
---|---|---|---|---|---|
CompletionWindow | string | 必須 | 任務過期時間。超過過期時間后,未執行的請求會被取消。已執行的請求結果會被保存。 | 取值范圍:24h ~ 144h | |
ModelRefernce | object | 必須 | 任務使用的模型: | { "FoundationModel":{ "Name":"deepseek-r1", "ModelVersion":"250120" } } | |
InputFileLocation | String | 必須 | 輸入文件url |
{
"CompletionWindow":"36h",
"ModelReference":{
"FoundationModel":{
"Name":"deepseek-r1",
"ModelVersion":"250120"
}
},
"InputFileLocation":"[www.demo.com](http://www.demo.com)"
}
正常返回
示例
{
"code":0,
"msg":"SUCCESS",
"data":{
"Id":"BATCH_xxx"
},
"request_id":"f1972786-7e27-4df7-ad23-3456d354a207"
}
請求方式:POST
接口地址:https://openapi.youdao.com/llmgateway/batchInfer/getTask
請求參數
參數名稱 | 參數值 | 是否必須 | 示例 | 備注 |
---|---|---|---|---|
Content-Type | application/json | 是 | application/json | |
Authorization | Bearer ${api_key} | 是 | 在智云控制臺申請 | token鑒權 |
名稱 | 類型 | 是否必須 | 默認值 | 備注 | 其他信息 |
---|---|---|---|---|---|
Id | string | 必須 | 要查詢的任務ID |
{ "Id" : "BATCH_3bee2339-2b18-4ccc-affe-0d6b4835766e" }
正常返回
示例
{
"code": 0,
"msg": "SUCCESS",
"data": {
"Id": "BATCH_d2762f2d-9fce-4a01-b6a8-187a5722d555",
"CompletionWindow": "24h",
"ModelReference": {
"FoundationModel": {
"Name": "deepseek-v3",
"ModelVersion": "250324"
}
},
"InputFileLocation": "www.demo-input.com",
"OutputFileLocation": "www.demo-output.com",
"ErrorFileLocation": "www.demo-error.com",
"Status": {
"Phase": "Completed",
"Code": null,
"Message": null
},
"RequestCounts": {
"Total": 2,
"Completed": 2,
"Failed": 0
}
},
"request_id": "f57c5523-bf4f-40a9-9cda-43a05337e333"
}
狀態碼 | 名稱 | 描述 |
---|---|---|
Initializing | 初始化階段 | 驗證任務輸入文件是否符合要求 |
Queued | 排隊階段 | 因資源調度原因,正在排隊等待處理 |
Running | 運行階段 | 任務正在被執行 |
Completed | 已完成階段 | 所有請求已處理完畢,任務完成 |
Terminating | 終止中階段 | 由于任務到期或手動終止,任務當前處于終止中狀態。 |
Terminated | 已中止階段 | 任務已中止 |
Failed | 失敗階段 | 由于輸入文件不符合要求等原因,任務已失敗 |
請求方式:POST
接口地址:https://openapi.youdao.com/llmgateway/batchInfer/terminateTask
請求參數
參數名稱 | 參數值 | 是否必須 | 示例 | 備注 |
---|---|---|---|---|
Content-Type | application/json | 是 | application/json | |
Authorization | Bearer ${api_key} | 是 | 在智云控制臺申請 | token鑒權 |
名稱 | 類型 | 是否必須 | 默認值 | 備注 | 其他信息 |
---|---|---|---|---|---|
Id | string | 必須 | 要中止的任務ID | 部分狀態下不可中止(Terminating, Completed, Failed, Terminated) |
{ "Id" : "BATCH_3bee2339-2b18-4ccc-affe-0d6b4835766e" }
返回結果
正常返回 示例
{
"code":0,
"msg":"SUCCESS",
"data":{
"Id":"BATCH_38207071-4825-43b3-8214-fd51daf8f5a4"
},
"request_id":"898f7c1a-dda4-4310-b4fe-4cdfe1421d6d"
請求方式:POST
接口路徑:https://openapi.youdao.com/llmgateway/api/v1/chat/completions
請求參數
參數名稱 | 參數值 | 是否必須 | 示例 | 備注 |
---|---|---|---|---|
Content-Type | application/json | 是 | application/json | |
Authorization | Bearer ${api_key} | 是 | 在智云控制臺申請 | token鑒權 |
名稱 | 類型 | 是否必須 | 默認值 | 備注 | 其他信息 | |
---|---|---|---|---|---|---|
PageNumber | int | 否 | 1 | 分頁查詢時的起始頁碼 | ||
PageSize | int | 否 | 10 | 分頁查詢時每頁顯示的記錄數,取值:最小值為1, 最大值為100 | ||
SortBy | string | 否 | CreateTime | 指定排序指標,取值: CreateTime為創建時間,UpdateTime為更新時間 | ||
SortOrder | string | 否 | Desc | 指定排序順序。 取值: Asc為升序排列,Desc為降序排列 |
{
"PageSize" : "1",
"PageNumber" : "2",
"SortBy": "CreateTime",
"SortOrder": "Asc"
}
返回結果
正常返回 示例
{
"code": 0,
"msg": "SUCCESS",
"data": {
"PageNumber": 1,
"PageSize": 2,
"Items": [
{
"Id": "BATCH_3c6ebcbf-8172-4f4f-b30c-b5ca011a06ab",
"CompletionWindow": "32h",
"ModelReference": {
"FoundationModel": {
"Name": "deepseek-r1",
"ModelVersion": "250120"
}
},
"InputFileLocation": "www.demo-input.com",
"OutputFileLocation": "www.demo-output.com",
"ErrorFileLocation": "www.demo-error.com",
"Status": {
"Phase": "Completed",
"Code": null,
"Message": null
},
"RequestCounts": {
"Total": 3,
"Completed": 3,
"Failed": 0
}
},
{
"Id": "BATCH_c6b6fee9-0672-476c-a73b-c490abd20f89",
"CompletionWindow": "32h",
"ModelReference": {
"FoundationModel": {
"Name": "deepseek-r1",
"ModelVersion": "250120"
}
},
"InputFileLocation": "www.demo-input.com",
"OutputFileLocation": "www.demo-output.com",
"ErrorFileLocation": "www.demo-error.com",
"Status": {
"Phase": "Completed",
"Code": null,
"Message": null
},
"RequestCounts": {
"Total": 3,
"Completed": 3,
"Failed": 0
}
}
]
},
"request_id": "aa077336-50e0-4b78-b620-03839dec88d1"
}
我們提供了python版本的接入代碼,其中封裝了整個從上傳文件到輪詢、下載文件的全流程。調用方可通過僅僅3個步驟,在短短幾分鐘內快速體驗到批量推理的效果。
pip3 install nos-python3-sdk
處理流程中涉及輸入文件上傳,因此需安裝nos sdk,詳情參見NOS官方文檔
申請APIKey的方法參見下方描述信息
項目中已準備好樣例輸入文件,調用方點擊運行main方法即可,點擊后程序會自動完成上傳文件、創建任務、輪詢任務、下載結果文件的整套流程。
效果
極速體驗模式是讓接入方可以快速體驗到批量推理的流程及效果。如果要實際使用,接入方可能需要對Demo代碼進行一些調整,如修改輸入文件、修改輪詢次數等等。
這些項已作為配置項置于main方法頂層,接入方準備好自己的輸入文件,修改相關配置后即可再次運行并獲得結果。
# ---------------------------- 配置區 ---------------------------
CONFIG = {
"base_url": "https://openapi.youdao.com/llmgateway/batchInfer", # 批量推理服務URL
"auth_token": "此處替換為您的APIKey", # 鑒權token,即APIKey,申請方式參見ReadMe文檔
"input_file_path": "input_file/sample_input_file.jsonl", # 輸入文件路徑
"completion_window": "36h", # 任務完成窗口,具體參見接口文檔
"model_name": "deepseek-r1", # 模型名稱,具體參見接口文檔
"model_version": "250120", # 模型版本,具體參見接口文檔
"max_retries": 100, # 查詢任務狀態時的最大輪詢次數
"retry_intervals": 30 # 查詢任務狀態時的最大輪詢間隔
}
1.點擊應用總覽-API Key
批量推理任務僅支持自研模型:
模型 | 版本 | 最大上下文長度 | 最大輸入長度(token) | 最大輸出長度 | 最大思考內容長度 | 刊例價(元/1M token) | 模型名稱(Name) | 模型版本(ModelVersion) |
---|---|---|---|---|---|---|---|---|
DeepSeek-R1 | 批量推理 | 64k | 48k | 16k | 16k | 輸入:2元 輸出:8元 | deepseek-r1 | 250120 |
DeepSeek-V3 | 批量推理 | 64k | 48k | 16k | - | 輸入:1元 輸出:4元 | deepseek-v3 | 250324 |
錯誤碼 | 含義 |
---|---|
100101 - 缺少參數錯誤 | 原因:請求體格式錯誤 | 解決方法:檢查是否參數漏填。| 返回結構示例如下:{"code":100101,"msg":"USER_LACK_MODEL","request_id":"519387c7-c318-4786-b49a-11cbda135527" } |
100102 - 參數填寫錯誤 | 原因:參數或批量推理輸入文件填寫錯誤 | 解決方法:檢查參數填寫是否正確。| 返回結構示例如下:{"code":100102,"msg":"USER_WRONG_MODEL","request_id":"f0396806-4ff3-42dc-87d3-e2bb0d6842f0" } |
100103 - 參數取值錯誤 | 原因:參數或批量推理輸入文件取值范圍錯誤 | 解決方法: 檢查參數取值范圍是否有誤 | 返回結構示例如下:{"code":100103,"msg":"USER_COMPLETION_WINDOW_INVALID","request_id":"b862715c-728d-4df9-a9cb-e07d0f7005fe" } |
100260 - 任務流轉失敗 | 原因:此錯誤可能出現在批量推理任務的錯誤文件中,含義是批量推理任務流轉失敗 | 解決方法:請聯系我們解決 | 返回結構示例如下:{"custom_id":"50","error":"CUR_BATCH_TASK_WRONG_STATUS","id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","response":{"request_id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","status_code":100260} } |
100261 任務輸入文件錯誤 | 原因:此錯誤可能出現在批量推理任務的錯誤文件中,含義是處理批量推理任務輸入文件失敗 | 解決方法:請檢查您的輸入文件是否符合要求 | 返回結構示例如下:{"custom_id":"50","error":"CUR_DOWNLOAD_INPUT_DATA_ERROR","id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","response":{"request_id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","status_code":100261} } |
100262 ~ 100265 - 任務處理錯誤 | 原因:此類錯誤可能出現在批量推理任務的錯誤文件中, 含義是批量推理任務處理過程異常 | 解決方法:請聯系我們解決 | 返回結構示例如下:{"custom_id":"50","error":"CUR_BATCH_TASK_TERMINATE_STAGE_FAILED","id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","response":{"request_id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","status_code":100264} } |
100266 - 任務超時錯誤 | 原因:此錯誤可能出現在批量推理任務的錯誤文件中, 含義是可能因資源不足,或機器重啟,導致請求/任務出現超時異常 | 解決方法:可嘗試加大過期窗口重試失敗請求,若問題一直存在,請聯系我們解決 | 返回結構示例如下:{"custom_id":"50","error":"CUR_BATCH_TASK_EXECUTE_OVERTIME","id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","response":{"request_id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","status_code":100266}} |
100267 - 定時任務異常 | 原因:此錯誤可能出現在批量推理任務的錯誤文件中, 含義是批量推理定時任務處理失敗 | 解決方法:請聯系我們解決 | 返回結構示例如下:{"custom_id":"50","error":"CUR_BATCH_TASK_EXPIRE_JOB_ERROR","id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","response":{"request_id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","status_code":100267} } |
90103 - 認證失敗 | 原因:此錯誤可能出現在批量推理任務的錯誤文件中,APIKey錯誤、無權限、賬戶余額不足,認證失敗。 | 解決方法:請檢查您的APIKey 是否正確,是否在智云控制臺開通了deepseek權限,賬戶余額是否充足 | 返回結構示例如下:{"custom_id":"50","error":"Auth fail:invalid apiKey","id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","response":{"request_id":"INFER_60b7f0f7-8580-450e-b109-466aa0161580","status_code":90103}} |
請下載后使用 Python Demo