跳至内容

流式推理

TensorZero网关支持聊天和JSON函数的流式推理响应。 通过流式传输,您可以逐步接收模型生成的输出,而无需等待完整响应。 这能显著提升应用程序的感知延迟,并实现实时用户体验。

当启用流式传输时:

  1. 网关在模型开始生成内容后立即发送响应
  2. 每个响应数据块包含内容的增量部分(delta)
  3. 最后一个块表示响应已完成

示例

您可以通过在推理请求中将stream参数设置为true来启用流式传输。 响应将以服务器发送事件(SSE)流的形式返回,最后跟随一个[DONE]消息。 当使用客户端库时,客户端会在底层处理SSE流并返回一个分块对象流。

更多详情请参阅API参考文档

聊天功能

在聊天功能中,通常每个数据块会包含文本内容的增量变化:

{
"inference_id": "00000000-0000-0000-0000-000000000000",
"episode_id": "11111111-1111-1111-1111-111111111111",
"variant_name": "prompt_v1",
"content": [
{
"type": "text",
"id": "0",
"text": "Hi Gabriel," // a text content delta
}
],
// token usage information is only available in the final chunk with content (before the [DONE] message)
"usage": {
"input_tokens": 100,
"output_tokens": 100
}
}

对于工具调用,每个数据块包含工具调用参数的变化量:

{
"inference_id": "00000000-0000-0000-0000-000000000000",
"episode_id": "11111111-1111-1111-1111-111111111111",
"variant_name": "prompt_v1",
"content": [
{
"type": "tool_call",
"id": "123456789",
"name": "get_temperature",
"arguments": "{\"location\":" // a tool arguments delta
}
],
// token usage information is only available in the final chunk with content (before the [DONE] message)
"usage": {
"input_tokens": 100,
"output_tokens": 100
}
}

JSON 函数

对于JSON函数,每个数据块包含正在生成的JSON字符串的一部分。 请注意,这些数据块本身可能不是有效的JSON——你需要将它们拼接起来才能获得完整的JSON响应。 在流式传输时,网关不会返回已解析或验证过的JSON对象。

{
"inference_id": "00000000-0000-0000-0000-000000000000",
"episode_id": "11111111-1111-1111-1111-111111111111",
"variant_name": "prompt_v1",
"raw": "{\"email\":", // a JSON content delta
// token usage information is only available in the final chunk with content (before the [DONE] message)
"usage": {
"input_tokens": 100,
"output_tokens": 100
}
}

技术说明

  • 令牌使用信息仅在包含内容的最终数据块中可用(在[DONE]消息之前)
  • 某些推理时优化可能不支持流式传输