跳转至

工作流的基本构成要素

一张最基础的大模型应用工作流图

%%{ init: { 'theme': 'neutral' } }%%
graph LR
    START[START] --> user_input[User Input]
    user_input[User Input] --> if_condition{If}
    if_condition{If} -->|input == #exit| END
    if_condition{If} -->|else| assistant_reply[Assistant Reply]
    assistant_reply[Assistant Reply] --> user_input

上图展示了AI大模型应用的一种最基础的工作流程:可根据条件停止的多轮对话。

工作流执行过程解析

将上面的工作流图转换成文字版的执行过程描述:

  • START处开始工作流程
  • User Input环节处获得用户输入内容
  • 进入If判断环节
    • 如果用户输入为"#exit":
      • 进入END结束工作流程
    • 如果用户输入为其他:
      • Assistant Reply环节处返回模型生成内容
      • 回到User Input环节处继续获得用户输入内容

工作流构成要素

观察上面的工作流程图和解析,我们可以总结构成工作流的关键要素:

  • 工作块(Chunk)

    决定当前工作环节需要进行的具体工作内容,如上图中的User InputAssistant Reply两个方块就是典型的工作块

    [阅读工作块部分了解更多>>>]

  • 连接关系(Connection)

    决定工作块之间的执行顺序和编排逻辑,通常用有方向指示的连接线表示,根据需要表达的执行顺序编排条件的不同,可进一步分为:

  • 数据传递方式(Communication)

    在上面的工作流程描述中,还隐含了一个保障工作流能够被正确推进的关键的要素,即在工作流中流转的信息或数据,它们应该以什么样的数据传递方式进行流转?仔细想想,如果没有使用合适的数据传递方式进行信息传递,上图中的If判断环节Assistant Reply环节又应该如何知道在User Input环节用户到底输入了什么?在工作流中,常见的信息传递方式包括:

    • 块间传递:即数据通过连接关系的设定,从前一个工作块直接传递给下一个工作块,或是进行如列表分发连接时,将列表拆解成单项进行传递
    • 工作流全局传递:即指定的数据更新会直接让工作流内所有后续需要使用该数据的环节都获得新的数据值
    • 跨工作流传递:在多个工作流协同(如在工作流中嵌套子工作流)时,有些时候需要为工作流之间的数据传递和共享提供支持,确保多个工作流能够共同维护同一份数据信息

    [阅读数据传递方式部分了解更多>>>]