Appearance
一句话总结:流式输出(SSE)解决"等太久"——逐块推送让首字节更快、体验更顺;结构化输出解决"不可靠"——JSON Mode 只保证语法合法,Structured Outputs 用 strict schema 强制字段类型与完整性,约束解码则从生成源头保证合法。
流式输出(SSE)
- 原理:Server-Sent Events + Chunked Transfer Encoding,逐块推送
chat.completion.chunk - 每块含
delta:content 增量文本、reasoning_content 思维链增量 - 收益:更低首字节时间(TTFB)、资源利用率高、前端打字机效果
- 流式函数调用:tool_call 也走 delta 增量(index/name/arguments 片段)——客户端需按 index 拼接完整参数再执行
结构化输出:三种方案(面试对比)
| 方案 | 机制 | 保证 | 适用 |
|---|---|---|---|
| JSON Mode | response_format={'type':'json_object'},prompt 须出现 json 字样 | 仅语法合法 JSON | 只要合法 JSON |
| Structured Outputs | response_format={'type':'json_schema',...} + strict: true | 每个 required 键存在、类型正确 | 强类型契约(前后端对接) |
| 约束解码 | 解码时按 schema/grammar 采样(vLLM) | 从根上保证合法 | 本地/自部署 |
- Structured Outputs 的 schema 约束:根类型必须 object、所有 object 层
additionalProperties: false、所有 properties 列进 required - 用途:数据提取、分类、为工具/API 生成结构化输入(Agent 工作流)
为什么重要(工程视角)
- 前端直接渲染结构化数据,不用正则解析
- 让 LLM 输出成为"API 契约"——这是 LLM 从聊天玩具变成可集成组件的关键
- 流式 + 结构化组合:流式拿速度,结构化拿契约
面试要点
- 能说 SSE 原理与收益(TTFB、逐块 delta)
- 能对比 JSON Mode vs Structured Outputs(语法合法 vs 类型强制)
- 能说出结构化输出的三个 schema 约束
- 能举 Agent 场景(为工具生成结构化输入、数据提取)
相关概念
- [AI基础概念-LLM API与Function Calling协议](/学习笔记/AI技术/AI基础概念/AI基础概念-LLM API与Function Calling协议) — 请求/响应基础
- [AI-Agent-工具调用](/学习笔记/AI技术/AI Agent/AI-Agent-工具调用) — 结构化输出服务工具参数
- [AI-Agent-可观测性与评估工程](/学习笔记/AI技术/AI Agent/AI-Agent-可观测性与评估工程) — 流式场景的监控
- AI基础概念-大模型推理与解码 — 采样与生成的底层