流式传输

Token360 支持对话补全的流式响应,在模型生成内容的同时实时返回 token。这为交互式应用提供了更好的用户体验。

流式响应原理

在对话补全请求中设置 stream: true 后,Token360 将以 Server-Sent Events (SSE) 的形式返回响应,而非单个 JSON 对象。每个事件包含响应的一小部分,通常是一个或几个 token。

基本用法

1curl -N https://api.token360.ai/v1/chat/completions \
2  -H "Authorization: Bearer sk-your-api-key" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "model": "glm-5.1",
6    "messages": [{"role": "user", "content": "Write a haiku about coding."}],
7    "stream": true
8  }'

SSE 响应格式

每个 SSE 事件以 data: 开头,后跟一个 JSON 对象:

data: {"id":"your-chat-completion-id","object":"chat.completion.chunk","created":1677652288,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}

data: {"id":"your-chat-completion-id","object":"chat.completion.chunk","created":1677652288,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}

data: {"id":"your-chat-completion-id","object":"chat.completion.chunk","created":1677652288,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}

data: {"id":"your-chat-completion-id","object":"chat.completion.chunk","created":1677652288,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

关键字段

  • delta.role — 固定为 "assistant"。Token360 在每个 chunk 中都包含此字段,以保持一致性。
  • delta.content — 当前 chunk 的文本 token。可能为 null 或缺失(例如在最后一个 chunk 中)。
  • finish_reason — 生成过程中为 null,最后一个 chunk 中为 "stop"(或 "length""tool_calls")。
  • usage — 在 [DONE] 之前的最后一个 chunk 中返回,包含 token 用量和费用详情。
  • provider — 处理该请求的模型供应商名称(例如 "Parasail")。
  • [DONE] — 标识流式传输结束。

用量信息

token 用量会包含在最后一个 chunk 中(取决于供应商是否支持):

JSON
1{
2  "usage": {
3    "prompt_tokens": 12,
4    "completion_tokens": 45,
5    "total_tokens": 57
6  }
7}

性能优势

建议在以下场景使用流式响应:

  • 聊天界面 — 用户可以实时看到响应内容的生成过程。
  • 长文本生成 — 避免因输出内容过长而导致超时。
  • 首 token 延迟 (TTFT) — 用户可在毫秒级时间内看到首个输出。

Token360 会监控所有流式请求的 TTFT 和总延迟,您可以在控制台的数据分析面板中查看。

流式传输中的错误处理

如果在流式传输过程中发生错误,错误信息将作为最后一个 SSE 事件返回:

data: {"error":{"message":"Rate limit exceeded","type":"rate_limit_error","code":"rate_limit"}}

data: [DONE]

请务必在流式处理逻辑中检查错误对象。

此页面对您有帮助吗?