跳至主要內容

workflowSnapshotToStream()

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

如要使用呈現即時 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 傳回。當中包含 runId、workflowName、status 及 steps。

傳回值
傳回值 的直接連結

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

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

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