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/completions
Python
# 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 | 无 | 用于引导解码的正则表达式。 |
guided_json | 否 | string(合法的JSON字符串) | 无 | 字符串形式的JSON Scheme,用于约束引导解码生成JSON。 |
guided_choice | 否 | [string] | 无 | 用于引导解码生成给定的某个输出。 |
guided_grammar | 否 | string | 无 | 用于指导解码的EBNF语法规则。 |
guided_whitespace_pattern | 否 | string | 无 | 用于指导解码的JSON模式下制定表示空格的正则表达式。 |
返回结果参数说明
参数 | 说明 | |
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/completions
Python
# 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 | 无 | 用于引导解码的正则表达式。 |
guided_json | 否 | string(合法的JSON字符串) | 无 | 字符串形式的JSON Scheme,用于约束引导解码生成JSON。 |
guided_choice | 否 | [string] | 无 | 用于引导解码生成给定的某个输出。 |
guided_grammar | 否 | string | 无 | 用于指导解码的EBNF语法规则。 |
guided_whitespace_pattern | 否 | string | 无 | 用于指导解码的JSON模式下制定表示空格的正则表达式。 |
返回结果参数说明
参数 | 说明 | |
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
}