文本/流式推理接口

接口功能

提供文本/流式推理处理功能。

接口格式

操作类型:POST

URL:https://{ip}:{port}/

请求参数

参数

是否必选

说明

取值要求

inputs

必选

推理请求文本。

非空,0<字符数<=16000,支持中英文。tokenizer之后的token数量<=maxSeqLen-maxIterTimes(配置文件读取)。

decoder_input_details

可选

是否返回推理请求文本的token id。如果“stream”=“true”,该参数不能为“true”

bool类型,默认值false。

details

可选

是否返回推理详细输出结果。根据TGI 0.9.4接口行为,“decoder_input_details”“details”字段任意一个为“true”,即返回所有的details信息。

bool类型,默认值false。

do_sample

可选

是否做sampling。

bool类型,默认值false。

max_new_tokens

可选

允许的最大新标记数目。控制从模型生成的文本中添加到最终输出中的最大词汇数量。该字段受到GIMIS配置文件maxIterTimes参数影响,推理token输出长度<=maxIterTimes。

int类型,取值范围(0, maxIterTimes]。默认值20。

repetition_penalty

可选

重复惩罚用于减少在文本生成过程中出现重复片段的概率。它对之前已经生成的文本进行惩罚,使得模型更倾向于选择新的、不重复的内容。

float类型,大于0,默认值1.0。

  • 1.0表示不进行重复度惩罚。
  • 大于1.0表示对重复进行惩罚。

return_full_text

可选

是否将推理请求文本(inputs参数)添加到推理结果前面。

bool类型,默认值false。

  • true:添加。
  • false:不添加。

seed

可选

用于指定推理过程的随机种子,相同的seed值可以确保推理结果的可重现性,不同的seed值会提升推理结果的随机性。

uint_64,取值范围(0, 18446744073709551615],不传递该参数,系统会产生一个随机seed值。

temperature

可选

控制生成的随机性,较高的值会产生更多样化的输出。

float类型,大于0,默认值1.0。

  • 1.0表示不进行计算。
  • 大于1.0表示输出随机性提高。

top_k

可选

控制模型生成过程中考虑的词汇范围,只从概率最高的k个候选词中选择。使用限制请参见使用限制

int类型,取值范围(0, vocabSize)&&(0, 2147483647],默认值0。

vocabSize是从modelWeightPath路径下的config.json文件中读取的vocab_size值,若不存在则vocabSize取默认值0。

top_p

可选

控制模型生成过程中考虑的词汇范围,使用累计概率选择候选词,直到累计概率超过给定的阈值。该参数也可以控制生成结果的多样性,它基于累积概率选择候选词,直到累计概率超过给定的阈值为止。

float类型,取值范围(0, 1),默认值1.0。

truncate

可选

输入文本做tokenizer之后,将token数量截断到该长度。读取截断后的n个token。

int类型,取值范围(0, maxSeqLen-maxIterTimes],默认值0(表示不做truncate)。

stream

可选

指定返回结果是文本推理还是流式推理。

bool类型,默认值false。

使用样例

请求样例:

POST https://<ip>:<port>/

请求消息体:

{
  "inputs": "My name is Olivier and I",
  "parameters": {
    "decoder_input_details": true,
    "details": true,
    "do_sample": true,
    "max_new_tokens": 20,
    "repetition_penalty": 1.03,
    "return_full_text": false,
    "seed": null,
    "temperature": 0.5,
    "top_k": 10,
    "top_p": 0.95,
    "truncate": null
   },
  "stream": false
}

文本推理(“stream”=“false”)响应样例:

{
 "details": {
  "finish_reason": "length",
  "generated_tokens": 1,
  "prefill": [{
   "id": 0,
   "logprob":null,
   "text": "test"
  }],
  "seed": 42,
  "tokens": [{
   "id": 0,
   "logprob": null,
   "special": null,
   "text": "test"
  }]
 },
 "generated_text": "am a Frenchman living in the UK. I have been working as an IT consultant for "
}

流式推理(“stream”=“true”)响应样例(使用sse格式返回):

data: {"token":{"id":626,"text":"am","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":263,"text":" a","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":5176,"text":" French","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":1171,"text":"man","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":8471,"text":" living","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":297,"text":" in","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":278,"text":" the","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":10261,"text":" UK","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":29889,"text":".","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":306,"text":" I","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":505,"text":" have","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":1063,"text":" been","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":1985,"text":" working","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":408,"text":" as","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":385,"text":" an","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":13315,"text":" IT","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":8799,"text":" consult","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":424,"text":"ant","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":363,"text":" for","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":29871,"text":" ","logprob":null,"special":null},"generated_text":"am a Frenchman living in the UK. I have been working as an IT consultant for ","details":null}

输出说明

表1 文本推理结果说明

返回值

类型

说明

generated_text

string

推理返回结果。

details

object

推理details结果,请求参数“decoder_input_details”“details”任意一个字段为“True”,即返回details结果。

finish_reason

string

结束原因。

generated_tokens

int

推理结果token数量。

seed

int

返回推理请求的seed值,如果请求参数没有指定seed参数,则返回系统随机生成的seed值。

prefill

List[token]

请求参数“decoder_input_details”=“True”,返回推理请求文本detokenizer之后的token,默认为空列表。

id

int

token id。

text

string

token对应文本。

logprob

float

概率对数,可以为空(第一个token概率值不能被计算获得)。当前不支持,默认返回null。

tokens

List[token]

返回推理结果的所有tokens。

id

int

token id。

text

string

token对应文本。

logprob

概率对数

概率对数。当前不支持,默认返回null。

special

bool

表明该token是否是special,如果是“special”=“True”,该token在做连接的时候可以被忽略。当前不支持,默认返回null。

表2 流式推理结果说明

返回值

类型

说明

generated_text

string

推理文本返回结果,只在最后一次推理结果才返回。

details

object

推理details结果,只在最后一次推理结果返回,并且请求参数“details”=“True”才返回details结果。

finish_reason

string

结束原因。

generated_tokens

int

推理结果token数量。

seed

int

返回推理请求的seed值,如果请求参数没有指定seed参数,则返回系统随机生成的seed值。

token

object

每一次推理的token。

id

int

token id。

text

string

token对应文本。

logprob

概率对数

当前不支持,默认返回null。

special

bool

表明该token是否是special,如果是“special”=“True”,该token在做连接的时候可以被忽略。当前不支持,默认返回null。