跳至主要內容

workflowSnapshotToStream()

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

當你想使用呈現即時 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 標記
  • 一個 WorkflowDataPart,包含 Workflow 狀態及所有步驟摘要
  • 每個步驟各有一個 WorkflowStepDataPart,包含其完整輸出
  • 一個 finish 標記

將此串流傳遞至 createUIMessageStreamResponse() 或 AI SDK 的 createUIMessageStream()。