BladeLLM服務端提供了相容OpenAI /v1/completions和/v1/chat/completions的介面,支援用戶端通過向/v1/completions或/v1/chat/completions路徑發送HTTP POST請求調用服務。本文將介紹調用服務支援配置的參數說明以及返回結果的參數說明。
completions介面
調用樣本
命令列
# Call EAS service
# <Your EAS Token>替換為服務訪問地址;<service_url>替換為服務Token。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: <Your EAS Token>" \
-d '{"prompt":"hello world", "stream":"true"}' \
<service_url>/v1/completionsPython
# Python script
import json
import requests
from typing import Dict, List
# <service_url>:替換為服務訪問地址。
url = "<service_url>/v1/completions"
prompt = "hello world"
req = {
"prompt": prompt,
"stream": True,
"temperature": 0.0,
"top_p": 0.5,
"top_k": 10,
"max_tokens": 300,
}
response = requests.post(
url,
json=req,
# <Your EAS Token>:替換為服務Token。
headers={"Content-Type": "application/json", "Authorization": "<Your EAS Token>"},
stream=True,
)
for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False):
msg = chunk.decode("utf-8")
if msg.startswith('data'):
info = msg[6:]
if info == '[DONE]':
break
else:
resp = json.loads(info)
print(resp['choices'][0]['text'], end='', flush=True)請求參數配置說明
參數 | 是否必填 | 類型 | 預設值 | 描述 |
model | 否 | string | 無 | 模型名稱,用於指定LoRA名稱。 |
prompt | 是 | string | 無 | 輸入提示詞。 |
max_tokens | 否 | integer | 16 | 請求產生的最大token個數。 |
echo | 否 | boolean | False | 是否將提示詞與產生結果一起返回。 |
seed | 否 | integer | 無 | 隨機種子。 |
stream | 否 | boolean | False | 是否以流式方式擷取返回結果。 |
temperature | 否 | number | 1.0 | 通過該參數來控制產生文本的隨機性和多樣性。取值範圍[0,1.0]。 |
top_p | 否 | number | 1.0 | 從模型預測的所有可能的Token中,選擇機率總和達到top_p的那些最可能的Token。取值範圍[0,1.0]。 |
top_k | 否 | integer | -1 | 保留機率最高的top_k個Token。 |
repetition_penalty | 否 | number | 1.0 | 用於控制產生文本多樣性的重要參數。
|
presence_penalty | 否 | number | 0.0 | 用於控制產生文本中的詞彙多樣性。
|
frequency_penalty | 否 | number | 0.0 | 用來控制產生文本時對已出現詞語的重複使用頻率進行懲罰的程度。
|
stop(stop_sequences) | 否 | [string] | 無 | 用於提示模型在產生文本過程中,遇到特定文本時停止產生。例如["</s>"] |
stop_tokens | 否 | [int] | 無 | 用於提示模型在產生文本過程中,遇到特定Token ID時停止產生。 |
ignore_eos | 否 | boolean | False | 在產生文本時忽略結束標記。 |
logprobs | 否 | integer | 無 | 模型在產生文本過程中,返回每個可能輸出Token的機率分布。 |
response_format | 否 | string | 無 | 用來指定輸出格式:
|
guided_regex | 否 | string | 無 | 用於引導解碼的Regex。 |
guided_json | 否 | string(合法的JSON字串) | 無 | 字串形式的JSON Scheme,用於約束引導解碼產生JSON。 |
guided_choice | 否 | [string] | 無 | 用於引導解碼產生給定的某個輸出。 |
guided_grammar | 否 | string | 無 | 用於指導解碼的EBNF文法規則。 |
guided_whitespace_pattern | 否 | string | 無 | 用於指導解碼的JSON模式下制定表示空格的Regex。 |
返回結果參數說明
參數 | 說明 | |
id | 用於標識請求完成的唯一識別碼。 | |
model | 模型名稱。 | |
choices | finish_reason | 模型停止產生Token的原因。 |
index | 索引。類型為Integer。 | |
logprobs | 用來表示預測結果的信賴度。詳細的參數說明,請參見content參數說明。 | |
text | 產生的文本。 | |
object | 物件類型,STRING類型,預設為text_completion。 | |
usage | prompt_tokens | 輸入提示(prompt)中包含的Token數量。 |
completion_tokens | 產生內容或補全內容的Token數量。 | |
total_tokens | 包括輸入和輸出在內的總的Token數。 | |
error_info | code | 錯誤碼。 |
message | 錯誤資訊。 | |
Chat Completions
調用樣本
命令列
# Call EAS service
# <Your EAS Token>替換為服務訪問地址;<service_url>替換為服務Token。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: <Your EAS Token>" \
-d '{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}' \
<service_url>/v1/chat/completionsPython
# Python script
import json
import requests
from typing import Dict, List
# <service_url>:替換為服務訪問地址。
url = "<service_url>/v1/chat/completions"
messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Hello!'}]
req = {
"messages": messages,
"stream": True,
"temperature": 0.0,
"top_p": 0.5,
"top_k": 10,
"max_tokens": 300,
}
response = requests.post(
url,
json=req,
# <Your EAS Token>:替換為服務Token。
headers={"Content-Type": "application/json", "Authorization": "<Your EAS Token>"},
stream=True,
)
for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False):
msg = chunk.decode("utf-8")
if msg.startswith('data'):
info = msg[6:]
if info == '[DONE]':
break
else:
resp = json.loads(info)
print(resp['choices'][0]['delta']['content'], end='', flush=True)請求參數配置說明
參數 | 是否必填 | 類型 | 預設值 | 描述 |
model | 否 | string | 無 | 模型名稱,用於指定LoRA名稱。 |
message | 否 | array | 無 | 對話訊息列表。 |
resume_response | 否 | string | 無 | 在恢複聊天時,需要提供初始訊息,並通過傳遞中斷時的回複來繼續對話。 |
max_tokens | 否 | integer | 16 | 請求產生的最大token個數。 |
echo | 否 | boolean | False | 是否將提示詞prompt與產生結果一起返回。 |
seed | 否 | integer | 無 | 隨機種子。 |
stream | 否 | boolean | False | 是否以流式方式擷取返回結果。 |
temperature | 否 | number | 1.0 | 通過該參數來控制產生文本的隨機性和多樣性。取值範圍[0,1.0]。 |
top_p | 否 | number | 1.0 | 從模型預測的所有可能的Token中,選擇機率總和達到top_p的那些最可能的Token。取值範圍[0,1.0]。 |
top_k | 否 | integer | -1 | 保留機率最高的top_k個Token。 |
repetition_penalty | 否 | number | 1.0 | 用於控制產生文本多樣性的重要參數。
|
presence_penalty | 否 | number | 0.0 | 用於控制產生文本中的詞彙多樣性。
|
frequency_penalty | 否 | number | 0.0 | 用來控制產生文本時對已出現詞語的重複使用頻率進行懲罰的程度。
|
stop(stop_sequences) | 否 | string | 無 | 用於提示模型在產生文本過程中,遇到特定文本時停止產生。 |
stop_tokens | 否 | [int] | 無 | 用於提示模型在產生文本過程中,遇到特定Token ID時停止產生。 |
ignore_eos | 否 | boolean | False | 在產生文本時忽略結束標記。 |
logprobs | 否 | integer | 無 | 模型在產生文本過程中,返回每個可能輸出Token的機率分布。 |
top_logprobs | 否 | integer | 無 | 在每個Token位置上,最有可能出現的Token數量。 |
response_format | 否 | string | 無 | 用來指定輸出格式:
|
guided_regex | 否 | string | 無 | 用於引導解碼的Regex。 |
guided_json | 否 | string(合法的JSON字串) | 無 | 字串形式的JSON Scheme,用於約束引導解碼產生JSON。 |
guided_choice | 否 | [string] | 無 | 用於引導解碼產生給定的某個輸出。 |
guided_grammar | 否 | string | 無 | 用於指導解碼的EBNF文法規則。 |
guided_whitespace_pattern | 否 | string | 無 | 用於指導解碼的JSON模式下制定表示空格的Regex。 |
返回結果參數說明
參數 | 說明 | |
id | 用於標識請求完成的唯一識別碼。 | |
choices | finish_reason | 模型停止產生Token的原因。 |
index | 索引。類型為integer。 | |
logprobs | 用來表示預測結果的信賴度。詳細的參數說明,請參見content參數說明。 | |
message | 非流式請求返回結果。表示模型產生的對話訊息。 | |
delta | 流式請求返回結果。表示通過即時模型產生的對話訊息。 | |
object | 物件類型,STRING類型,預設為text_completion。 | |
usage | prompt_tokens | 輸入提示(prompt)中包含的Token數量。 |
completion_tokens | 產生內容或補全內容的Token數量。 | |
total_tokens | 包括輸入和輸出在內的總的Token數。 | |
error_info | code | 錯誤碼。 |
message | 錯誤資訊。 | |
返回結果樣本如下:
流式請求返回結果
{
"id": "78544a80-6224-4b0f-a0c4-4bad94005eb1",
"choices": [{
"finish_reason": "",
"index": 0,
"logprobs": null,
"delta": {
"role": "assistant",
"content": ""
}
}],
"object": "chat.completion.chunk",
"usage": {
"prompt_tokens": 21,
"completion_tokens": 1,
"total_tokens": 22
},
"error_info": null
}非流式請求返回結果
{
"id": "1444c346-3d35-4505-ae73-7ff727d00e8a",
"choices": [{
"finish_reason": "",
"index": 0,
"logprobs": null,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?\n"
}
}],
"object": "chat.completion",
"usage": {
"prompt_tokens": 21,
"completion_tokens": 16,
"total_tokens": 37
},
"error_info": null
}