跳到主要内容

workflowSnapshotToStream()

WorkflowState 对象(由 workflow.getWorkflowRunById() 返回)转换为由 AI SDK UIMessage data part 组成的 ReadableStream。该 stream 包含与实时 workflowRoute() 相同的 WorkflowDataPartWorkflowStepDataPart 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 返回。包含 runIdworkflowNamestatussteps

返回值
返回值的直接链接

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

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

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