跳至主要內容

workflowSnapshotToStream()

WorkflowState 物件(由 workflow.getWorkflowRunById() 傳回)轉換成 AI SDK UIMessage 資料部分的 ReadableStream。此串流包含與即時 workflowRoute() 所產生相同的 WorkflowDataPartWorkflowStepDataPart 區塊。

如要使用呈現即時 Workflow 串流的相同 UI 元件,顯示已完成或已暫停的 Workflow 執行,便可使用此函數。

使用範例
使用範例 的直接連結

以下 Next.js App Router 端點會以串流方式重播過往的 Workflow 執行:

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 執行狀態物件,由 getWorkflowRunById() 或 Workflow 執行 API 傳回。當中包含 runIdworkflowNamestatussteps

傳回值
傳回值 的直接連結

ReadableStream:AI SDK UIMessage 資料部分的串流,當中包含:

  • 一個 start 標記
  • 一個包含 Workflow 狀態及所有步驟摘要的 WorkflowDataPart
  • 每個步驟各有一個包含完整輸出的 WorkflowStepDataPart
  • 一個 finish 標記

將此串流傳給 createUIMessageStreamResponse(),或 AI SDK 的 createUIMessageStream()