持久对话运行
当一次对话任务需要「服务端替你记住状态」时,把它建成 chat run:创建即受理、幂等去重、事件流断线重放、费用自动校正。端点细节见 API 参考 → 持久对话运行。
何时用 runs 而不是 completions
创建并消费
创建
POST /v1/chat/runs + Idempotency-Key;202 返回 chatRun.id。请求体与 completions 同形。
订阅或轮询事件
长连接组件订阅 GET …/{id}/events/stream(SSE);无连接环境轮询 GET /v1/chat/runs/{id} 或以 after 参数分页事件。断线重放:Last-Event-ID 头携带最后收到的 seq。
取终态
终态事件(run_completed / run_failed / run_cancelled)后服务端关流;产物与状态经 GET 获取。
计费与状态
- 受理即按预估扣费,完成时校正;失败与取消不计费(已扣部分自动校正)。
- 状态机
created → running → completed | failed | cancelled;cancel对终态运行返回409(1006)。 confirm-cost端点为 Sogni 兼容保留(当前恒409,引擎无费用审批暂停)。
与创意工作流的关系
对话任务用 runs;多步媒体生产(生成→编辑→合成)用创意工作流:DAG 结构、dependsOn 依赖、reseed 换种子重播。两者共享幂等键机制与 SSE 事件协议。