Skip to content

工作流设计模式

本页面介绍一些常用的工作流设计模式,帮助你更好地组织和构建工作流。

基础模式

简单对话模式

最基本的对话处理模式。

yaml
name: "基础对话"
triggers:
  - type: message
    pattern: ".*"
steps:
  - type: llm
    model: gpt-3.5-turbo
    prompt: |
      你是一个友好的助手。
      请回答用户的问题:{{message}}

命令处理模式

处理特定命令的模式。

yaml
name: "命令处理"
triggers:
  - type: message
    pattern: "^/"
steps:
  - type: condition
    if: "{{message.startsWith('/help')}}"
    then:
      - type: message
        content: "可用命令列表:..."

高级模式

多轮对话模式

处理需要多个步骤的对话。

yaml
name: "问卷调查"
triggers:
  - type: message
    pattern: "开始调查"
steps:
  - type: state
    action: set
    key: step
    value: 1
  - type: message
    content: "请问你的年龄是?"
  - type: wait
    for: message
  - type: state
    action: set
    key: age
    value: "{{message}}"
  - type: message
    content: "你的职业是?"
  # ... 更多步骤

工作流链式调用

多个工作流相互调用。

yaml
name: "用户注册"
steps:
  - type: workflow
    name: "验证信息"
  - type: workflow
    name: "创建账号"
  - type: workflow
    name: "发送欢迎消息"

特殊场景

定时任务模式

定期执行的工作流。

yaml
name: "每日提醒"
triggers:
  - type: schedule
    cron: "0 9 * * *"
steps:
  - type: message
    content: "早上好!今天的任务是..."

事件处理模式

响应系统事件的工作流。

yaml
name: "新成员欢迎"
triggers:
  - type: event
    event: member_join
steps:
  - type: message
    content: "欢迎 {{event.member.name}} 加入!"

模式示例

客服机器人

yaml
name: "客服机器人"
triggers:
  - type: message
    pattern: ".*"
steps:
  - type: condition
    if: "{{!context.started}}"
    then:
      - type: message
        content: "你好!我是客服机器人,请问有什么可以帮你?"
      - type: context
        action: set
        key: started
        value: true
  - type: llm
    model: gpt-3.5-turbo
    prompt: |
      你是一个专业的客服代表。
      历史对话:{{context.history}}
      用户问题:{{message}}

游戏助手

yaml
name: "游戏助手"
triggers:
  - type: message
    pattern: "^/game"
steps:
  - type: switch
    value: "{{message}}"
    cases:
      "/game start":
        - type: workflow
          name: "开始游戏"
      "/game status":
        - type: workflow
          name: "查看状态"
      "/game help":
        - type: workflow
          name: "游戏帮助"

最佳实践

  1. 工作流组织

    • 按功能分类
    • 保持单一职责
    • 适当拆分模块
  2. 状态管理

    • 清晰的状态转换
    • 合理的数据存储
    • 异常状态处理
  3. 错误处理

    • 优雅的错误提示
    • 状态回滚机制
    • 日志记录
  4. 性能优化

    • 避免重复操作
    • 合理使用缓存
    • 控制调用链长度
  5. 可维护性

    • 清晰的命名
    • 完整的注释
    • 模块化设计