跳至正文
Wener Notes

MaaS SSE

约 1 分钟阅读

OpenAI streaming

  • 第一个 chunk 通常只有 role,没有内容。
  • 后续 chunk 通常有 content,没有 role。
  • 最后的 chunk 里 usage 和 finish_reason 可能分开出现。
  • 第一个 chunk 和最后一个 chunk 通常不应该包含正常 content。
  • 有些供应商为了紧凑,会在第一个 chunk 包含内容。
  • 有些供应商会在第二个 chunk 返回 role。

stream_options

  • continuous_usage_stat
    • 连续发送 usage。
  • include_usage
    • 最后一个 chunk 包含 usage。

first chunk

  • 正常情况第一个 chunk 不应该包含内容。
  • 兼容层需要容忍供应商在第一个 chunk 直接返回内容。

last chunk

  • vLLM、OpenAI 最后一个 chunk 的 content 可能为空字符串。
json
{
  "index": 0,
  "delta": {
    "content": ""
  },
  "logprobs": null,
  "finish_reason": "stop",
  "stop_reason": null
}

abort

  • stream 中断 / 499 仍可能产生费用。
  • stream abort 时通常拿不到最终 usage。
  • Agent / gateway 实现中断时需要预估 usage,否则 context window 和成本统计会失准。

参考

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • MaaS
    笔记 · SSE

    Provider · https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models · 错误码 · https://support.huaweicloud.com/usermanual-maas-modelarts/maas-modelar...

  • MaaS API Spec
    笔记 · sse

    Session / Thread · Turn · Message · Message Part / Content Part · Chunk Part · | topic | for | · | google | Gemini API、Vertex AI、Google tools / thinking / cache |

  • MaaS Metrics
    笔记 · sse

    MaaS Metrics 用于观测模型 API 的请求量、延迟、错误、用量、成本、缓存、流式和工具调用行为。指标设计应避免高基数 label,同时保留足够维度支持排障、SLO 和账单核对。 · | 类别 | 关注点 | · | Traffic | 请求量、RPM、并发、流式连接数 |

  • MaaS Spec Messages
    笔记 · sse.md

    梳理 MaaS 需要适配的 message / item / content block / part 类型。 · 明确各协议的 role、type、基础结构和跨协议映射边界。 · 避免把 provider 的中间状态错误地压平成纯文本,尤其是 tool call、tool result、reasoning/thought、citation、multi...

  • OpenAI MaaS API
    笔记 · sse

    OpenAI API · https://platform.openai.com/docs/api-reference/chat/create · Responses / OpenResponses · https://www.openresponses.org/

参考资料

GitHub3 条
最近更新commit c6b98c0编辑