流式接收会话事件
GET/v1/sessions/:session_id/events
以服务器推送事件跟踪会话。每一帧都带着所属任务的 task_id。一个任务会发送:task.started;回复文字生成过程中,带着回复文字的 text.delta 帧;每个正在进行的步骤一条 task.progress(带一个 category——search、image、video、music、memory、analysis、other——和一段简短的 text);它生成的图片、视频、音频或文件改变 status(running、completed、failed、canceled;完成的带一个链接会过期的 attachment,失败的带一个 error)时,发送 media.updated;在 a2ui 会话里,每当任务的界面数据变化,发送带完整界面数据的 ui.updated;带最多 3 条用户接下来可能发送的消息的 suggestions;最后由一个 task.completed、task.stopped 或 task.failed 帧结束任务,该帧的 text 是完整回复。生成的媒体在任务结束后仍可能被报告。每一帧都有自己的 id。要跟踪你开启的任务,请把其请求返回的 last_event_id 作为 Last-Event-ID 发送:事件流会从这个任务的第一帧开始发送(0 则从会话开头发送)。不带 Last-Event-ID 时,事件流从现在开始——之前的回复从消息列表读取。一条连接最长持续 10 分钟;把 Last-Event-ID 设为最后一帧的 id 重连,就能紧接着它继续。没有内容可发时,每 15 秒会有一条 : ping 注释:如果 45 秒内什么都没收到,就当作连接已断开并重连。每个用户同时最多保持 16 条事件流,每个会话最多 4 条——再打开一条会结束最早的一条:优先结束该会话上最早的,否则结束该用户最早的。只有当该用户持有的每一条事件流都是在最近 10 秒内打开的,新的事件流才会被拒绝。
请求
响应
- 200
- 401
- 404
- 422
- 429
- 500
- 503
服务器推送事件。在 a2ui 会话里,已完成或已停止的任务的结束帧还会带上界面数据(ui)。
鉴权失败:凭证缺失、格式错误、已过期或已作废。
invalid_token— 访问令牌无效。project_disabled— 此项目未启用。token_expired— 访问令牌已过期。user_disabled— 此用户未启用。
请求的资源不存在,或对调用方不可见。
session_not_found— 找不到会话
请求中的某个值未通过校验;details 数组会列出每个出错的字段。
validation_failed— 请求内容未通过校验。
要么是请求太多(Retry-After 响应头会说明何时重试),要么是计费账户的积分已用完(不带 Retry-After——加上积分才能继续);用 code 字段区分这两种情况。
rate_limited— 该用户同时打开的事件流太多。请几秒后重试。
服务端发生了意外错误。
internal— 发生了意外错误。
服务暂时不可用;请稍等片刻后重试。
service_unavailable— 实时更新目前已满负荷,请稍后重试。