服务调用参数配置说明

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_kToken。

repetition_penalty

number

1.0

用于控制生成文本多样性的重要参数。

  • >1.0:会减少重复词或短语出现的可能性。

  • <1.0:增加重复词或短语出现的可能性。

  • =1.0:不对重复性施加额外惩罚或奖励。

presence_penalty

number

0.0

用于控制生成文本中的词汇多样性。

  • >0:已经在生成文本中出现的词,被选为下一个词的概率会降低。

  • <0:增加这类词被重新使用的可能性。

  • =0:模型将按照原始概率分布选择下一个词。

frequency_penalty

number

0.0

用来控制生成文本时对已出现词语的重复使用频率进行惩罚的程度。

  • >0:对于已出现过多次的词,被选中的概率将会降低。

  • <0:对于已出现过多次的词,会增加这些词语被重复选用的可能性。

  • =0:模型将按照原始概率分布选择下一个词。

stop(stop_sequences)

[string]

用于提示模型在生成文本过程中,遇到特定文本时停止生成。例如["</s>"]

stop_tokens

[int]

用于提示模型在生成文本过程中,遇到特定Token ID时停止生成。

ignore_eos

boolean

False

在生成文本时忽略结束标记。

logprobs

integer

模型在生成文本过程中,返回每个可能输出Token的概率分布。

response_format

string

用来指定输出格式:

  • json_object:输出JSON对象。

  • text:输出文本。

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

错误信息。

content参数说明

参数

描述

id

Token ID。

token

Token文本。

logprob

对数概率值。

is_special

是否是一个特殊Token。默认值为False。

bytes

一个整数列表,代表该TokenUTF-8编码下的字节序列。

top_logprobs

最有可能出现的Token及其对应的对数概率列表。

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

对话消息列表。

[ {“role”: “user”, “content”: “hello”}, {“role”: “assistant”, “content”: “what can I do for you?”}, {“role”: “user”, “content”: “what is the capital of Canada?” } ]

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_kToken。

repetition_penalty

number

1.0

用于控制生成文本多样性的重要参数。

  • >1.0:会减少重复词或短语出现的可能性。

  • <1.0:增加重复词或短语出现的可能性。

  • =1.0:不对重复性施加额外惩罚或奖励。

presence_penalty

number

0.0

用于控制生成文本中的词汇多样性。

  • >0:已经在生成文本中出现的词,被选为下一个词的概率会降低。

  • <0:增加这类词被重新使用的可能性。

  • =0:模型将按照原始概率分布选择下一个词。

frequency_penalty

number

0.0

用来控制生成文本时对已出现词语的重复使用频率进行惩罚的程度。

  • >0:对于已出现过多次的词,被选中的概率将会降低。

  • <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

用来指定输出格式:

  • json_object:输出JSON对象。

  • text:输出文本。

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
}