AI 流式渲染

共 29 题
#

1. AI SDK(ai/@ai-sdk/openai/Vercel AI SDK)

A ai 包是厂商绑定的,只能用于 OpenAI
B Vercel AI SDK 只能用于 Next.js
C 核心包 ai 提供统一抽象,@ai-sdk/openai 等 provider 包负责厂商适配 ✓ 正确答案
D streamText 只能一次性返回完整文本,不支持流式
#

2. OpenAI/Anthropic/Google 流式响应(text/event-stream + fetch)

A 三家厂商使用完全相同的流式数据格式
B fetch 无法读取流式响应体
C SSE 只能用于 GET 请求,LLM 流式必须用 WebSocket
D OpenAI、Anthropic、Google 均基于 SSE 流式返回,但增量数据结构各有差异,需按厂商适配 ✓ 正确答案
#

3. Assistant UI 协议、Streamdown、Marquee 渲染节流

A Assistant UI 协议规定 AI 消息必须是纯文本
B Assistant UI 协议只适用于 Anthropic 模型
C 渲染节流会丢失流式 token 数据
D Streamdown 让渲染层只重绘 Markdown 的新增增量块,配合渲染节流提升流式体验 ✓ 正确答案
#

4. Vercel AI SDK 的 useChat/useCompletion/useObject 流式 hooks

A 三个 hooks 的功能完全相同,可以互换
B useObject 只能用于非流式响应
C useChat 维护多轮消息数组,useCompletion 面向单次补全,useObject 按 schema 解析结构化输出 ✓ 正确答案
D 三个 hooks 都必须搭配 Next.js App Router 才能使用
#

5. SSE、WebSocket、fetch 流的增量解析与渲染

A EventSource 支持 POST 请求与自定义请求头
B SSE 断开后无法自动重连
C fetch 流无法配合 AbortController 取消请求
D WebSocket 提供双向全双工通信,适合需要客户端与服务端频繁交互的 AI 会话 ✓ 正确答案
#

6. Markdown 未闭合状态处理、代码块语法高亮、复制按钮

A 未闭合的代码块应直接丢弃不渲染
B navigator.clipboard 在 HTTP 环境也可以无条件使用
C 复制按钮应在代码块还未闭合时就显示
D 对进行中的代码块暂不高亮、完成后异步高亮,可兼顾流畅与效果 ✓ 正确答案
#

7. text/event-stream 与 text/plain 在流式响应的工程取舍

A text/event-stream 无法携带自定义事件类型
B text/plain 支持 Last-Event-ID 断点续传
C text/event-stream 与 text/plain 在流式解析上完全相同
D text/plain 输出简单兼容性好,但缺乏结构化事件与断点续传能力 ✓ 正确答案
#

8. Server-Sent Events(SSE)在 LLM 流输出的工程价值与现代浏览器支持

A EventSource 支持 POST 请求与自定义 header
B HTTP/1.1 下 SSE 连接数没有限制
C SSE 是全双工协议,服务端与客户端可互相推送
D SSE 内置自动重连与 Last-Event-ID 断点续传,且所有现代浏览器均支持 EventSource ✓ 正确答案
#

9. 打字机效果的渲染节流(批量更新/requestAnimationFrame)如何兼顾流畅与滚动性能?

A 逐 token 同步渲染可以最大化性能
B 渲染节流会丢失用户输入
C 自动滚动应无条件跟随最新内容
D 用 rAF 合并一帧内增量并配合"接近底部才自动滚动"策略,可兼顾流畅与滚动性能 ✓ 正确答案
#

10. ReadableStream API 在 AI 流式输出的工程实现与边界

A 可以直接把 Uint8Array 块 toString 得到完整文本
B ReadableStream 不支持取消
C reader.read() 永远同步返回数据
D 需用带 stream: true 的 TextDecoder 处理跨块 UTF-8 字符,并用 reader.cancel()/AbortController 释放连接 ✓ 正确答案
#

11. Vercel AI SDK 在 React 流式 UI(Chat、Completion)

A useChat 只能渲染纯文本,不能渲染 Markdown
B useChat 维护 messages 数组并自动把流式增量追加到最后一条 assistant 消息 ✓ 正确答案
C useCompletion 也维护多轮消息数组
D 使用 useChat 时必须自己手动解析 SSE 增量
#

12. AI 流式响应中的 Markdown 渲染(react-markdown)

A react-markdown 将 Markdown 解析为 AST 后渲染为 React 元素,默认不注入原始 HTML,安全性更好 ✓ 正确答案
B react-markdown 依赖 dangerouslySetInnerHTML 渲染 HTML
C react-markdown 无法自定义代码块渲染
D 流式场景下每次增量都不需要重新解析
#

13. AI 流式响应中的 Token 计数与成本预估的工程实践

A 所有模型的 token 编码方式完全相同
B token 计数必须由服务端完成,客户端无法参与
C 客户端可用 tiktoken 等 tokenizer 按模型编码器估算 token 数,并结合单价表预估成本 ✓ 正确答案
D 流式输出时只能在流结束后一次性统计
#

14. AI 流式响应中的 XSS 风险(HTML、URL)与安全防御

A 模型输出来自大模型,可以信任并直接注入 HTML
B javascript: 协议链接在 Markdown 中会被浏览器自动拦截,无需处理
C 只要用 react-markdown 就绝对安全,无需其他防护
D 应把模型输出视为不可信数据,渲染层转义并用 DOMPurify 白名单清洗、校验链接协议 ✓ 正确答案
#

15. AI 流式响应中的增量解析(JSON Streaming、NDJSON)

A NDJSON 要求服务端每行一个完整 JSON 对象,按行解析实现简单 ✓ 正确答案
B NDJSON 可以跨行解析任意 JSON
C JSON Streaming 解析器比 NDJSON 更简单
D 流式解析失败时不需要任何降级处理
#

16. AI 流式响应中的乐观 UI(Optimistic UI)与回滚的工程价值

A 乐观 UI 先立即展示占位并填充流式增量,失败时回滚或标记错误态并支持重试 ✓ 正确答案
B 乐观 UI 是指等待服务端确认后再展示用户消息
C 乐观 UI 与流式响应无法共存
D 失败回滚不需要考虑幂等
#

17. AI 流式响应中的多模态(图片、音频、视频)的工程应用

A 多模态输出只能以纯文本表示
B 上传多模态输入不需要任何校验
C 图片输出无需占位与懒加载
D 多模态消息按独立内容块组织渲染,输入侧需在调用前检查模态能力、MIME 类型与大小配额 ✓ 正确答案
#

18. AI 流式响应中的 SSE 长连接在 nginx 反向代理的工程配置

A nginx 默认缓冲对 SSE 没有影响
B 应关闭 proxy_buffering 并通过 X-Accel-Buffering: no 跳过缓冲,同时调大读超时并配合心跳防断连 ✓ 正确答案
C SSE 不需要考虑超时,连接会一直保持
D gzip 压缩流式响应永远不会引入延迟
#

19. AI 流式响应中的错误恢复(断网、超时)的现代实践

A 断网后必须让用户手动重新发送整条消息
B 重试不需要考虑幂等
C 超时不需要处理,等待即可
D 应结合在线状态感知、指数退避幂等重试与本地缓存已收增量,实现断点续传式恢复 ✓ 正确答案
#

20. AI 流式响应中的响应式布局(流式内容不抖动)的工程应用

A 流式内容高度变化是不可避免的,无法缓解
B 关闭所有动画即可彻底解决布局抖动
C 通过占位符/固定宽高比稳定容器尺寸,配合 overflow-anchor 与条件自动滚动减少跳动 ✓ 正确答案
D 滚动锚定会导致内容丢失
#

21. AI 流式响应中的字体切换(等宽到比例字体的工程价值)

A 等宽字体阅读体验一定优于比例字体
B 比例字体在流式阶段也能保证布局稳定
C 字体切换不会引起任何布局变化
D 等宽字体字符宽度固定,适合流式打字阶段保持布局稳定 ✓ 正确答案
#

22. AI 流式响应中的语言切换(中文、英文)与本地化的现代实践

A 中文与英文使用同一字体即可,无需考虑 fallback
B 中文换行不需要任何处理
C 流式内容必须实时翻译成用户语言
D 应配置多语言字体栈与 lang 属性,应用文案用 i18n 管理、数字日期用 Intl 格式化 ✓ 正确答案
#

23. AI 流式响应中的 Tool Calls(Function Calling)

A 模型输出工具名后应立即执行工具
B 工具参数流式到达,需等参数完整并通过校验后再执行,结果回传后模型可继续多轮调用 ✓ 正确答案
C 工具调用结果不需要展示给用户
D 工具参数无需校验,可以直接执行
#

24. AI 流式响应中的 Context Window 限制与上下文压缩的工程应用

A 应通过客户端 token 计数预检,并对旧消息做摘要压缩、保留最近原始消息,本地仍保留全文供回溯 ✓ 正确答案
B 上下文超限时模型会自动扩展窗口
C 上下文压缩会永久删除用户消息
D 上下文窗口超限不会有任何错误
#

25. AI 流式响应中的 SSE Polyfill(EventSource polyfill)

A 原生 EventSource 支持 POST 请求与自定义 header
B polyfill 无法处理自动重连
C polyfill 与原生 EventSource 在所有浏览器行为上完全相同
D polyfill 常用 fetch + ReadableStream 按 SSE 规范解析,以支持 POST、自定义 header 与取消 ✓ 正确答案
#

26. Prompt API 接受图片或音频等多模态输入时,前端应如何在调用前检查模态能力、MIME 类型、尺寸与配额,并处理 EXIF、解码内存、流式输入及不支持模态的降级

A 应在调用前完成模态能力探测、MIME/尺寸/配额校验与 EXIF 处理,不支持时降级提示 ✓ 正确答案
B 只要文件扩展名正确就可以直接发送
C 图片解码内存无需关注
D 音频输入不需要校验时长与格式
#

27. 同一端侧 LLM 分别用 WebNN MLGraphBuilder 和 WebGPU Compute Shader 实现时,算子融合、图编译、显存管理、KV Cache 与浏览器驱动差异会如何影响首 Token 延迟和 tokens/s

A WebNN 在所有浏览器上性能完全一致
B WebGPU 无需关心显存与 KV Cache
C WebNN 自动做图编译与算子融合,WebGPU 需手工实现优化,两者都受浏览器/驱动后端差异影响 ✓ 正确答案
D 算子融合只影响 tokens/s,不影响首 Token 延迟
#

28. WebLLM 与 Gemini Nano 的生产选型矩阵应包含哪些维度

A Gemini Nano 所有浏览器都内置可用
B WebLLM 不需要用户下载模型
C 选型矩阵应综合可用性、性能、下载更新、成本隐私与生态锁定等维度,并保留云端回退 ✓ 正确答案
D 端侧推理没有任何成本与维护负担
#

29. 如何为端侧生成建立覆盖高低端设备的性能基线,同时测量模型冷启动、预热后 TTFT、tokens/s、峰值内存、耗电与页面 FPS,并据此决定禁用或降级阈值

A 用最高端设备测一次即可代表所有用户
B 阈值一经设定就不需要调整
C 应按设备分层测量冷启动、TTFT、tokens/s、内存、耗电与 FPS,用 P50/P95 统计并据此制定禁用/降级阈值 ✓ 正确答案
D 页面 FPS 与端侧推理无关