58 lines
1.6 KiB
Markdown
58 lines
1.6 KiB
Markdown
|
|
# 将步骤链接在一起
|
||
|
|
|
||
|
|
现在您将学习如何将您的步骤链接在一起以创建一个完整的工作流。
|
||
|
|
|
||
|
|
## 创建工作流
|
||
|
|
|
||
|
|
将此工作流定义添加到您的文件中:
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { createWorkflow } from "@mastra/core/workflows";
|
||
|
|
|
||
|
|
export const contentWorkflow = createWorkflow({
|
||
|
|
id: "content-processing-workflow",
|
||
|
|
description: "Validates and enhances content",
|
||
|
|
inputSchema: z.object({
|
||
|
|
content: z.string(),
|
||
|
|
type: z.enum(["article", "blog", "social"]).default("article"),
|
||
|
|
}),
|
||
|
|
outputSchema: z.object({
|
||
|
|
content: z.string(),
|
||
|
|
type: z.string(),
|
||
|
|
wordCount: z.number(),
|
||
|
|
metadata: z.object({
|
||
|
|
readingTime: z.number(),
|
||
|
|
difficulty: z.enum(["easy", "medium", "hard"]),
|
||
|
|
processedAt: z.string(),
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
})
|
||
|
|
.then(validateContentStep)
|
||
|
|
.then(enhanceContentStep)
|
||
|
|
.commit();
|
||
|
|
```
|
||
|
|
|
||
|
|
## 理解工作流
|
||
|
|
|
||
|
|
- **输入模式**:定义工作流期望的数据
|
||
|
|
- **输出模式**:定义工作流将返回的内容
|
||
|
|
- **步骤**:使用 `.then()` 按它们应该执行的顺序链接
|
||
|
|
- **提交**:完成工作流定义
|
||
|
|
|
||
|
|
## 数据如何流动
|
||
|
|
|
||
|
|
1. 工作流接收与输入模式匹配的输入
|
||
|
|
2. 第一个步骤处理输入并输出验证过的数据
|
||
|
|
3. 第二个步骤将第一个步骤的输出作为其输入接收
|
||
|
|
4. 工作流返回最终步骤的输出
|
||
|
|
|
||
|
|
## 模式验证
|
||
|
|
|
||
|
|
工作流自动验证:
|
||
|
|
|
||
|
|
- 输入数据与工作流的输入模式匹配
|
||
|
|
- 每个步骤的输出与下一个步骤的输入模式匹配
|
||
|
|
- 最终输出与工作流的输出模式匹配
|
||
|
|
|
||
|
|
您的工作流现在已准备就绪!接下来,您将测试完整的工作流。
|