持久对话运行
长时间或高价值的对话不应被进程重启或网络抖动打断。持久对话运行(chat run)把一次对话变成可恢复的服务端资源:创建时即时受理并幂等去重,事件流可断线重放,费用在运行中预估并校正。
POSThttps://rcn.reelway.ai/v1/chat/runs鉴权:凭证
创建持久对话运行;Idempotency-Key 作用域 chat.runs.create;202 受理
GEThttps://rcn.reelway.ai/v1/chat/runs鉴权:凭证
分页列出;limit>100 归一 20
GEThttps://rcn.reelway.ai/v1/chat/runs/{id}鉴权:凭证
单条;不存在 404
POSThttps://rcn.reelway.ai/v1/chat/runs/{id}/cancel鉴权:凭证
取消;非可取消态 409(1006)
POSThttps://rcn.reelway.ai/v1/chat/runs/{id}/confirm-cost鉴权:凭证
费用确认(当前恒 409,见下)
SSEhttps://rcn.reelway.ai/v1/chat/runs/{id}/events/stream鉴权:凭证
SSE 事件流;Last-Event-ID 重放;终态后关流
创建
- 请求体与对话补全同形(
messages/model/stream等)。 202返回{chatRun},含id、status与初始事件序号。Idempotency-Key作用域chat.runs.create:同键同体重放返回首次响应;同键异体422(1012)。stream参数在 runs 语义下无意义(事件走 SSE),无需设置。
事件流
- SSE 帧:
id: <seq>、event: <name>、data: <json>;Last-Event-ID断线重放;15 秒 keep-alive;终态后服务端主动关流。 - 收到
run_status快照帧时直接跳过(供消费方对账,内容与最新 GET 相同)。 - 终态事件:
run_completed/run_failed/run_cancelled。
事件类型
事件集合以运行时为准
上表仅列当前实现确认的事件;后续版本可能增加事件而不移除既有名称。消费方应对未知事件名保持宽容(记录并跳过)。
查询与取消
GET /v1/chat/runs返回{chatRuns[]},limit归一上限 20;GET /v1/chat/runs/{id}返回{chatRun}。cancel对非可取消态返回409(1006)——先读状态再决定动作。confirm-cost为 Sogni 兼容保留形状:当前引擎无「费用审批暂停」阶段,任何时刻调用都返回409(1006)。未来引入费用审批时,该端点按 Sogni 语义激活。详见计费与成本控制。
状态与生命周期
run_failed 与 run_cancelled 的运行同样保留事件历史,可随时用 Last-Event-ID 回放对账。
另见
- 对话补全 —— 无状态单次调用
- 生产集成 —— 无服务器模式下的轮询与恢复
- Reelway Intelligence 简介 —— 面向构建者的全景