流式推理
TensorZero网关支持聊天和JSON函数的流式推理响应。 通过流式传输,您可以逐步接收模型生成的输出,而无需等待完整响应。 这能显著提升应用程序的感知延迟,并实现实时用户体验。
当启用流式传输时:
- 网关在模型开始生成内容后立即发送响应
- 每个响应数据块包含内容的增量部分(delta)
- 最后一个块表示响应已完成
示例
您可以通过在推理请求中将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]
消息之前) - 某些推理时优化可能不支持流式传输