Lindorm AI引擎支援使用模型推理RESTful API介面調用狀態為READY的模型,以執行推理、產生等任務。
前提條件
已建立或匯入模型,且模型狀態為READY。如何查看模型狀態,請參見查看模型詳細資料。
API介面
POST v1/ai/models/${MODEL_NAME}/infer請求參數說明
請求參數 | 類型 | 說明 |
input | 無固定類型 | 模型推理輸入,不同模型可以有不同的輸入格式,具體請參見模型推理輸入(input)。 |
params | JSON | 模型推理參數,不同模型可以有不同的推理參數,具體請參見模型推理參數(params)。 |
模型推理輸入(input)
不同task的輸入格式不同,具體如下:
FEATURE_EXTRACTION(Text Embedding) :輸入格式為字串或字串數組。
FEATURE_EXTRACTION(Multimodal Embedding):支援以下兩種輸入格式。
JSON對象數組
每個JSON對象都必須包含如下參數:
參數名
類型
說明
image
字串
模型推理輸入圖片的Base64編碼或OSS URI字串。
text
字串
模型推理輸入文本字串。
JSON對象
參數名
類型
說明
images
字串數組
模型推理輸入圖片的Base64編碼或OSS URI字串。
texts
字串數組
模型推理輸入文本字串。
純圖片或者純文字推理的情境可以使用該輸入格式發送請求。
QUESTION_ANSWERING:輸入格式為字串。
SEMANTIC_SIMILARITY:輸入格式為JSON對象,包含以下參數:
參數名
類型
說明
query
字串
需要比較相似性(Rerank)的查詢。
chunks
字串數組
需要比較相似性的文檔切片(Chunk)列表。
模型推理參數(params)
FEATURE_EXTRACTION
參數名 | 類型 | 說明 |
normalize | BOOLEAN | 是否對向量進行歸一化,預設為 |
batchSize | INT | 推理時的batch大小,降低該值可以減少推理顯存消耗,預設值為 |
QUESTION_ANSWERING
參數名 | 類型 | 說明 |
max_length | INT | 指定產生文本的最大長度。 |
num_beams | INT | 設定束搜尋(Beam Search)的分支數量。num_beams值越大,產生的文本品質越高,同時計算成本也會更高。 |
do_sample | BOOLEAN | 是否使用採樣產生文本。 |
top_p | FLOAT | 指定核採樣(Nucleus Sampling)的機率閾值,只從累積機率達到top_p的詞彙中選擇下一個詞。 |
temperature | FLOAT | 指定採樣的溫度值,較高的溫度值會使產生的文本更加隨機和多樣化,較低的溫度值會使產生的文本更加確定和集中。 |
SEMANTIC_SIMILARITY
參數名 | 類型 | 說明 |
topK | INT | Rerank時返回最相似的資料條數。取值範圍為[1, 10000],預設值為輸入的sentences數組長度。 |
batchSize | INT | 推理時的batch大小,降低該值可以減少推理顯存消耗,預設值為 |
應答參數說明
不同task的模型可以有不同的應答參數(data欄位內部的參數),具體如下:
FEATURE_EXTRACTION
目前無參數,直接是向量。
QUESTION_ANSWERING
參數名 | 類型 | 說明 |
data.output | 字串 | 與outputs參數二選一。建立模型時指定stream_mode為 |
data.outputs | 字串數組 | 與output參數二選一。建立模型時指定stream_mode為 |
SEMANTIC_SIMILARITY
參數名 | 類型 | 說明 |
data | JSON數組 | Rerank的結果數組。 |
data.chunk | 字串 | Rerank重排序後的文檔切片(Chunk)。 |
data.score | 浮點型 | Chunk對應的相似性。 |
data.index | 整型 | Chunk在原始輸入中的索引值。 |
應答編碼格式
您可以通過在HTTP請求中加入Content-Encoding要求標頭來實現應答壓縮。預設情況下,所有應答不進行資料壓縮。目前僅支援gzip壓縮。
請求使用gzip編碼壓縮:
POST <URI> HTTP/1.1
Content-Encoding: gzip
Content-Length: 88
"request contents here"應答:
HTTP/11 200 OK
Content-encoding: gzip
Date: Tue, 24 Sep 2024 09:01:12 GMT
Content-type: application/json
Content-length: 39342
"response contents here"樣本
樣本一:特徵提取
文本特徵提取
字串單條請求:
POST v1/ai/models/bge_m3_model/infer HTTP/1.1 Content-Type: application/json { "input": "我愛天安門" }應答:
HTTP/1.1 200 OK Date: Tue, 28 Nov 2023 03:18:55 GMT Content-type: application/json Content-length: 419 { "code": 0, "msg": "SUCCESS", "data": [0.027204733341932297,0.004229982383549213, ...], "success": true, "request_id":"..." }字串批量請求:
POST v1/ai/models/bge_m3_model/infer HTTP/1.1 Content-Type: application/json { "input": ["我愛天安門", "test text"] }應答:
HTTP/1.1 200 OK Date: Tue, 28 Nov 2023 03:18:55 GMT Content-type: application/json Content-length: 419 { "code": 0, "msg": "SUCCESS", "data": [[0.027204733341932297,0.004229982383549213, ...], [-0.05367295444011688,0.022600287571549416, ...]], "success": true }
樣本二:QA問答
請求:
POST v1/ai/models/qa_model/infer HTTP/1.1
Content-Type: application/json
{
"input": "寫一篇200字左右的作文"
}應答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Transfer-encoding: chunked
Content-type: application/json
{"code":0,"msg":"SUCCESS","success":true,"data":{"outputs":["","人生就像","一場旅程,充滿了","未知和挑戰。","在這旅程中,","我們會遇到各種人和","事情,有些讓我們","感到興奮和好奇",",有些則讓我們","感到沮喪和失望","。但無論我們","遇到怎樣的情況,","都要保持積極樂觀的態度",",相信自己,相信","未來,繼續前行。","\n\n人生旅程","中,我們會遇到","各種人和事情,","有些人讓我們感到興奮","和好奇,有些人","則讓我們感到沮喪","和失望。但","無論我們遇到怎樣","的情況,都要保持","積極樂觀的態度,相信自己",",相信未來,","繼續前行。","\n\n有時候,我們可能會","感到迷茫和不知所措",",這時候我們需要給自己","一些時間和空間,思考","自己想要的,以及如何?","自己的目標。同時,","我們也需要與他人交流",",聽取他們的意見","和想法,從","中獲得啟發和協助","。\n\n在人生的","旅程中,我們需要","不斷地學習和成長,","才能更好地應對未來的挑戰","。無論我們面臨","怎樣的困難和挑戰,","都要保持積極樂觀的態度",",相信自己,相信","未來,繼續前行。","\n\n人生旅程","中,我們需要不斷地","學習和成長,才能更好地","應對未來的挑戰。","無論我們面臨怎樣的","困難和挑戰,都要","保持積極樂觀的態度,"]}}%樣本三:語義相似性
請求:
POST v1/ai/models/bge_rerank_model/infer HTTP/1.1
Content-Type: application/json
{
"input": {"query": "一隻狗", "chunks": ["一個滑滑梯", "一隻黃色小狗"]}
}應答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Content-type: application/json
Content-length: 419
{
"code" : 0,
"msg" : "SUCCESS",
"data" : [ {
"chunk" : "一直黃色小狗",
"score" : "0.6785464882850647",
"index" : 1
}, {
"chunk" : "一個滑滑梯",
"score" : "0.5992767214775085",
"index" : 0
}],
"success" : true
}