跳到主要内容

workflowSnapshotToStream()

将 WorkflowState 对象(由 workflow.getWorkflowRunById() 返回)转换为由 AI SDK UIMessage data part 组成的 ReadableStream。该 stream 包含与实时 workflowRoute() 相同的 WorkflowDataPart 和 WorkflowStepDataPart chunk。

如果要使用渲染实时 Workflow stream 的同一组 UI 组件来显示已完成或已暂停的 Workflow run,请使用此函数。

使用示例
使用示例的直接链接

将过去的 Workflow run 作为 stream 重放的 Next.js App Router endpoint:

app/api/workflow-replay/route.ts
import { workflowSnapshotToStream } from '@mastra/ai-sdk'
import { createUIMessageStreamResponse } from 'ai'
import { mastra } from '@/src/mastra'

export async function GET(req: Request) {
const { searchParams } = new URL(req.url)
const runId = searchParams.get('runId')!

const workflowRun = await mastra.getWorkflow('myWorkflow').getWorkflowRunById(runId)

if (!workflowRun) {
return new Response('Not found', { status: 404 })
}

const stream = workflowSnapshotToStream(workflowRun)
return createUIMessageStreamResponse({ stream })
}

参数
参数的直接链接

workflowRun:

WorkflowState
Workflow run 状态对象,由 getWorkflowRunById() 或 Workflow runs API 返回。包含 runId、workflowName、status 和 steps。

返回值
返回值的直接链接

ReadableStream:由 AI SDK UIMessage data part 组成的 stream,包含:

  • 一个 start 标记
  • 一个包含 Workflow 状态和所有 step 摘要的 WorkflowDataPart
  • 每个 step 对应一个包含完整输出的 WorkflowStepDataPart
  • 一个 finish 标记

将此 stream 传递给 AI SDK 的 createUIMessageStreamResponse() 或 createUIMessageStream()。