71 lines
1.8 KiB
Markdown
71 lines
1.8 KiB
Markdown
|
|
# 添加第三个步骤
|
||
|
|
|
||
|
|
让我们通过添加第三个步骤来扩展您的工作流,该步骤生成内容摘要。
|
||
|
|
|
||
|
|
## 创建摘要步骤
|
||
|
|
|
||
|
|
将此新步骤添加到您的工作流文件中:
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
const generateSummaryStep = createStep({
|
||
|
|
id: "generate-summary",
|
||
|
|
description: "Creates a summary of the content",
|
||
|
|
inputSchema: 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(),
|
||
|
|
}),
|
||
|
|
}),
|
||
|
|
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(),
|
||
|
|
}),
|
||
|
|
summary: z.string(),
|
||
|
|
}),
|
||
|
|
execute: async ({ inputData }) => {
|
||
|
|
const { content, type, wordCount, metadata } = inputData;
|
||
|
|
|
||
|
|
// Create a simple summary from first sentence
|
||
|
|
const sentences = content
|
||
|
|
.split(/[.!?]+/)
|
||
|
|
.filter((s) => s.trim().length > 0);
|
||
|
|
const firstSentence = sentences[0]?.trim() + ".";
|
||
|
|
|
||
|
|
// Generate summary based on content length
|
||
|
|
let summary = firstSentence;
|
||
|
|
if (wordCount > 50) {
|
||
|
|
summary += ` This ${type} contains ${wordCount} words and takes approximately ${metadata.readingTime} minute(s) to read.`;
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log(`📝 Generated summary: ${summary.length} characters`);
|
||
|
|
|
||
|
|
return {
|
||
|
|
content,
|
||
|
|
type,
|
||
|
|
wordCount,
|
||
|
|
metadata,
|
||
|
|
summary,
|
||
|
|
};
|
||
|
|
},
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
## 理解模式
|
||
|
|
|
||
|
|
注意此步骤如何:
|
||
|
|
|
||
|
|
- 将前一个步骤的输出作为输入
|
||
|
|
- 添加新数据(`summary`)同时保留现有数据
|
||
|
|
- 遵循与其他步骤相同的结构
|
||
|
|
|
||
|
|
您的第三个步骤已准备就绪!接下来,您将更新工作流以包含所有三个步骤。
|