初始化2
This commit is contained in:
192
content/docs/ai/workflow.md
Normal file
192
content/docs/ai/workflow.md
Normal file
@@ -0,0 +1,192 @@
|
||||
---
|
||||
title: AI 工作流配置
|
||||
description: 使用工作流引擎,构建定时任务与自动化业务流。
|
||||
category: ai
|
||||
order: 3
|
||||
---
|
||||
|
||||
# AI 工作流配置
|
||||
|
||||
> 使用工作流引擎,构建定时任务与自动化业务流。
|
||||
|
||||
## 🔄 什么是工作流?
|
||||
|
||||
工作流(Workflow)是预定义的一系列自动化步骤,可以:
|
||||
|
||||
- ⏰ **定时执行**:每天早上发送报表
|
||||
- 🔗 **事件触发**:用户注册后自动发送欢迎邮件
|
||||
- 🔁 **条件分支**:根据条件执行不同操作
|
||||
- 📊 **数据处理**:批量处理数据
|
||||
|
||||
## 🏗️ 核心概念
|
||||
|
||||
| 概念 | 说明 |
|
||||
|------|------|
|
||||
| **触发器 (Trigger)** | 工作流的启动条件 |
|
||||
| **节点 (Node)** | 工作流中的单个步骤 |
|
||||
| **连接 (Edge)** | 节点之间的数据流向 |
|
||||
| **变量 (Variable)** | 存储和传递数据 |
|
||||
| **执行日志** | 每次运行的记录 |
|
||||
|
||||
## 🚀 创建第一个工作流
|
||||
|
||||
### 代码定义
|
||||
|
||||
```typescript
|
||||
import { WorkflowBuilder } from '@websopy/ai-sdk'
|
||||
|
||||
const workflow = new WorkflowBuilder({
|
||||
name: '每日数据报告',
|
||||
description: '每天早上 9 点生成数据报告'
|
||||
})
|
||||
|
||||
// 添加触发器:定时执行
|
||||
workflow.addTrigger({
|
||||
type: 'schedule',
|
||||
config: {
|
||||
cron: '0 9 * * *', // 每天 9:00
|
||||
timezone: 'Asia/Shanghai'
|
||||
}
|
||||
})
|
||||
|
||||
// 添加节点:获取数据
|
||||
workflow.addNode('fetch-data', {
|
||||
type: 'http-request',
|
||||
config: {
|
||||
url: 'https://api.analytics.com/daily-stats',
|
||||
method: 'GET'
|
||||
}
|
||||
})
|
||||
|
||||
// 添加节点:生成报告
|
||||
workflow.addNode('generate-report', {
|
||||
type: 'ai-agent',
|
||||
config: {
|
||||
prompt: '根据以下数据生成日报:{{fetch-data.output}}'
|
||||
}
|
||||
})
|
||||
|
||||
// 添加节点:发送邮件
|
||||
workflow.addNode('send-email', {
|
||||
type: 'email',
|
||||
config: {
|
||||
to: ['team@company.com'],
|
||||
subject: '📊 每日数据报告',
|
||||
body: '{{generate-report.output}}'
|
||||
}
|
||||
})
|
||||
|
||||
// 节点连接
|
||||
workflow.connect('fetch-data', 'generate-report')
|
||||
workflow.connect('generate-report', 'send-email')
|
||||
|
||||
// 保存
|
||||
const created = await client.workflow.create(workflow.toJSON())
|
||||
console.log('工作流 ID:', created.id)
|
||||
```
|
||||
|
||||
### 可视化编辑器
|
||||
|
||||
在控制台 → AI 功能 → 工作流,点击「新建工作流」打开可视化编辑器。
|
||||
|
||||
## 📦 节点类型
|
||||
|
||||
| 节点类型 | 说明 |
|
||||
|----------|------|
|
||||
| `http-request` | HTTP 请求 |
|
||||
| `ai-agent` | AI 智能体 |
|
||||
| `condition` | 条件分支 |
|
||||
| `loop` | 循环 |
|
||||
| `delay` | 等待/延迟 |
|
||||
| `webhook` | Webhook 通知 |
|
||||
| `transform` | 数据转换 |
|
||||
| `email` | 发送邮件 |
|
||||
|
||||
## 🔔 触发器类型
|
||||
|
||||
### 定时触发
|
||||
|
||||
```typescript
|
||||
workflow.addTrigger({
|
||||
type: 'schedule',
|
||||
config: {
|
||||
cron: '0 */4 * * *', // 每 4 小时
|
||||
interval: 'daily', // daily, weekly, monthly
|
||||
time: '09:00'
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### Webhook 触发
|
||||
|
||||
```typescript
|
||||
workflow.addTrigger({
|
||||
type: 'webhook',
|
||||
config: {
|
||||
// 创建后获得 webhook URL
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### 事件触发
|
||||
|
||||
```typescript
|
||||
workflow.addTrigger({
|
||||
type: 'event',
|
||||
config: {
|
||||
events: [
|
||||
'user.created',
|
||||
'order.completed',
|
||||
'ai.task.failed'
|
||||
]
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
## 📊 执行与监控
|
||||
|
||||
### 手动执行
|
||||
|
||||
```typescript
|
||||
const run = await client.workflow.run(workflowId, {
|
||||
input: { date: '2024-01-15' }
|
||||
})
|
||||
|
||||
console.log('执行 ID:', run.id)
|
||||
```
|
||||
|
||||
### 查看执行日志
|
||||
|
||||
```typescript
|
||||
const logs = await client.workflow.getRunLogs(run.id)
|
||||
|
||||
for (const log of logs) {
|
||||
console.log(`[${log.timestamp}] ${log.node}: ${log.status}`)
|
||||
if (log.error) {
|
||||
console.log(' 错误:', log.error)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## ❓ 常见问题
|
||||
|
||||
### Q: 工作流执行失败怎么办?
|
||||
|
||||
1. 查看执行日志定位问题节点
|
||||
2. 检查输入数据格式
|
||||
3. 查看节点配置是否正确
|
||||
4. 联系支持时提供执行 ID
|
||||
|
||||
### Q: 可以嵌套工作流吗?
|
||||
|
||||
是的,可以在一个工作流中调用另一个工作流:
|
||||
|
||||
```typescript
|
||||
workflow.addNode('sub-workflow', {
|
||||
type: 'workflow',
|
||||
config: {
|
||||
workflowId: 'wf-xxx',
|
||||
input: '{{current-data}}'
|
||||
}
|
||||
})
|
||||
```
|
||||
Reference in New Issue
Block a user