54 lines
1.5 KiB
Markdown
54 lines
1.5 KiB
Markdown
# 理解步骤
|
||
|
||
步骤是工作流的构建块。每个步骤都是一个自包含的单元,它接收一些输入,处理输入,并产生输出。
|
||
|
||
## 什么是步骤?
|
||
|
||
一个步骤有三个主要部分:
|
||
|
||
1. **输入模式** - 它期望接收的数据
|
||
2. **输出模式** - 它将产生的数据
|
||
3. **执行函数** - 将输入转换为输出的逻辑
|
||
|
||
## 步骤结构
|
||
|
||
每个步骤都遵循这个模式:
|
||
|
||
```typescript
|
||
const myStep = createStep({
|
||
id: "unique-step-name",
|
||
description: "What this step does",
|
||
inputSchema: z.object({
|
||
// 定义预期的输入结构
|
||
}),
|
||
outputSchema: z.object({
|
||
// 定义输出结构
|
||
}),
|
||
execute: async ({ inputData }) => {
|
||
// 你的逻辑在这里
|
||
return {
|
||
// 返回符合输出模式的数据
|
||
};
|
||
},
|
||
});
|
||
```
|
||
|
||
## 为什么要使用模式?
|
||
|
||
模式提供了几个好处:
|
||
|
||
- **类型安全**:TypeScript 确切地知道数据如何在步骤之间流动
|
||
- **运行时验证**:无效数据会立即被捕获,并显示有用的错误消息
|
||
- **文档**:模式作为工作流的活文档
|
||
- **调试**:清晰的契约使问题识别变得容易
|
||
|
||
## 关键优势
|
||
|
||
- **可复用**:步骤可以在多个工作流中使用
|
||
- **可测试**:每个步骤都可以独立测试
|
||
- **可组合**:步骤可以以不同方式组合
|
||
- **可靠**:模式及早捕获数据流问题
|
||
- **可追踪**:每个步骤都会被追踪,因此您可以看到数据流
|
||
|
||
接下来,您将创建您的第一个步骤!
|