使用 Server-Sent Events (SSE) 实现实时 AI 交互,以获得即时反馈和渐进式内容生成。
概述
TinyMCE AI 服务使用 Server-Sent Events (SSE) 提供实时流式响应。这使用户能够在 AI 生成内容的同时看到内容创建过程,提供即时反馈并实现交互式体验。
SSE 事件类型
Conversations、Reviews 和 Actions 在 SSE 流中使用不同的事件名称和 JSON 载荷。这些载荷记录在每个流式操作的 交互式 API 文档 中,而不是在功能概述页面(该页面仅总结使用了 SSE)。
请使用所调用操作的 API 参考文档—例如:
Conversation Messages 及相关的 Conversation 标签,用于聊天流、来源和推理。
Reviews API,用于审查流式响应。
Actions API,用于操作流式响应。
共享的线路格式和客户端解析在 SSE 线路格式以及本页面的基础实现部分有介绍。
SSE 线路格式
响应体是 Server-Sent Events 格式的文本流。事件以空行分隔。每个事件可以包含一个 event: 行(事件名称)和一个或多个 data: 行(载荷;长载荷可以拆分为多个 data: 行)。例如:
event: <event-name-1> data: <data> event: <event-name-2> data: <data2>
正确解析此格式(包括块边界、多行 data: 字段和注释)在手动编写的循环中很容易出错。对于生产代码,请使用维护良好的 SSE 解析器,例如 eventsource-parser 包。
基础实现
从 fetch 获得流式 Response 后,将字节流通过 SSE 解析器传递。以下示例使用 eventsource-parser 将原始块转换为解析后的事件。对于每个事件,event.event 是来自 event: 行的事件名称,event.data 是来自 data: 行的 JSON 载荷:
import { createParser } from 'eventsource-parser';
const response = await fetch('/v1/your-endpoint', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
// Request payload
})
});
const parser = createParser({
onEvent: (event) => {
// event.event is the SSE event name
// event.data is the reassembled data string for this event
const payload = JSON.parse(event.data);
switch (event.event) {
case 'error':
console.error('Error:', payload.message);
break;
default:
// Handle all other events — event names vary by API; see
// https://tinymceai.api.tiny.cloud/docs for each operation's schema.
// Examples: Conversations (text-delta, source, reasoning, modification-delta),
// Reviews (review-delta, review-metadata), Actions (modification-delta, action-metadata)
console.log('Event:', event.event, payload);
}
}
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
parser.feed(decoder.decode(value, { stream: true }));
}错误处理
始终优雅地处理错误:
if (event.event === 'error') {
const payload = JSON.parse(event.data);
console.error('Streaming error:', payload.message);
}进度跟踪
使用元数据事件来显示进度。审查流式响应的事件名称和字段定义在返回 SSE 响应的 Reviews API 操作中,而不是在 Review 插件概述中。
API 参考
交互式 API 文档 描述了每个功能领域的流式端点、事件形状和错误。
后续步骤
Chat、Review 和 Quick Actions,用于产品行为和编辑器集成。
AI Models,用于模型配置和限制。