Generate Extension#
[!NOTE] The Generate Extension is provisional and likely to change in future versions.
本文档介绍了 Triton 的 generate 扩展。generate 扩展为与大型语言模型 (LLM) 交互提供了一个简单的面向文本的端点模式。generate 端点特定于 HTTP/REST 前端。
HTTP/REST#
在本文档中显示的所有 JSON 模式中,$number
、$string
、$boolean
、$object
和 $array
指的是基本的 JSON 类型。#optional 表示可选的 JSON 字段。
Triton 在以下 URL 公开了 generate 端点。客户端可以使用 HTTP POST 请求到不同的 URL 以获得不同的响应行为,端点将在成功时返回 generate 结果,或在失败时返回错误。
POST v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/generate
POST v2/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]/generate_stream
generate vs. generate_stream#
两个 URL 都期望相同的请求 JSON 对象,并生成相同的 JSON 响应对象。但是,用于返回每个对象的格式存在一些差异
/generate
准确返回 1 个响应 JSON 对象,其Content-Type
为application/json
/generate_stream
可能会根据推理结果返回多个响应,其Content-Type
为text/event-stream; charset=utf-8
。这些响应将作为服务器发送事件 (SSE) 发送,其中每个响应都将是 HTTP 响应正文中的 “data” 数据块。如果发生推理错误,响应将具有错误 JSON 对象。请注意,HTTP 响应代码在 SSE 的第一个响应中设置,因此,如果第一个响应成功,但在请求的后续响应中发生错误,则可能会导致在状态代码显示成功 (200) 的同时收到错误对象。因此,用户必须始终检查通过
/generate_stream
生成响应时是否收到错误对象。如果请求在推理开始之前失败,则将返回
Content-Type
为application/json
的 JSON 错误,类似于来自其他端点的错误,状态代码设置为错误。
Generate Request JSON Object#
generate 请求对象(标识为 $generate_request)在 POST 请求的 HTTP 正文中是必需的。模型名称和(可选的)版本必须在 URL 中可用。如果未提供版本,服务器可能会根据其自身策略选择版本或返回错误。
$generate_request =
{
"id" : $string, #optional
"text_input" : $string,
"parameters" : $parameters #optional
}
“id”:此请求的标识符。可选,但如果指定,则此标识符必须在响应中返回。
“text_input”:模型应从中生成输出的文本输入。
“parameters”:一个可选对象,包含此 generate 请求的零个或多个参数,表示为键/值对。有关更多信息,请参阅参数。
[!NOTE] 请求对象中的任何其他属性都将根据模型规范作为参数或张量传递。
Parameters#
$parameters
JSON 描述了零个或多个 “name”/”value” 对,其中 “name” 是参数的名称,而 “value” 是 $string
、$number
或 $boolean
。
$parameters =
{
$parameter, ...
}
$parameter = $string : $string | $number | $boolean
参数是模型特定的。用户应查看模型规范以设置参数。
Example Request#
以下是发送带有附加模型参数 stream
和 temperature
的 generate 请求的示例。
$ curl -X POST localhost:8000/v2/models/mymodel/generate -d '{"id": "42", "text_input": "client input", "parameters": {"stream": false, "temperature": 0}}'
POST /v2/models/mymodel/generate HTTP/1.1
Host: localhost:8000
Content-Type: application/json
Content-Length: <xx>
{
"id" : "42",
"text_input" : "client input",
"parameters" :
{
"stream": false,
"temperature": 0
}
}
Generate Response JSON Object#
成功的 generate 请求由 200 HTTP 状态代码指示。generate 响应对象(标识为 $generate_response
)在 HTTP 正文中返回。
$generate_response =
{
"id" : $string
"model_name" : $string,
"model_version" : $string,
"text_output" : $string
}
“id”:请求中给出的 “id” 标识符(如果有)。
“model_name”:用于推理的模型的名称。
“model_version”:用于推理的特定模型版本。
“text_output”:推理的输出。
Example Response#
200
{
"id" : "42"
"model_name" : "mymodel",
"model_version" : "1",
"text_output" : "model output"
}
Generate Response JSON Error Object#
失败的 generate 请求必须由 HTTP 错误状态(通常为 400)指示。HTTP 正文必须包含 $generate_error_response
对象。
$generate_error_response =
{
"error": <error message string>
}
“error”:错误的描述性消息。
Example Error#
400
{
"error" : "error message"
}