链式语法

链式语法是另一个我们希望提前向您介绍的 Agently Workflow 框架特性。

绘制工作流连接关系图的示例代码中可能您已经注意到了,我们在表达工作流连接方式的时候,使用了一种看起来很特别的表达方式:

链式语法示意
 # 使用()对将需要进行链式语法表达的代码段进行包裹
 (
 workflow
 # 在完成一次连接关系表达后,连接关系表达方法将返回被指向的工作块对象
 # 而这个工作块对象又携带了所有以它为起点的连接关系表达方法,这就是链式表达成立的基础
 # 你可以使用这个特性快速地接续书写下一个连接关系
 # 这和绘制工作流程图中的某一个线性分支时,我们脑内的思考方式是高度一致的
 .connect_to("user_input")
 # 而对于条件连接而言,使用链式表达的体验
 # 非常接近于我们在正常编程时使用if语法进行流程控制的体验
 # 这样的直觉性设计,将进一步降低开发过程中的思考理解成本
 .if_condition(lambda return_value, storage: return_value=="#exit")
 .connect_to("END")
 .else_condition()
 .connect_to("assistant_reply")
 .connect_to("user_input")
 )

🙋‍♂️:我不喜欢()对这种表达方式怎么办?

不使用()包裹的链式语法示意
 # 当然也是可以的,在Python语法中,如果需要使用多行表达需要在原本一行内执行的代码
 # 可以使用"\"符号进行连接,您可以自由选择自己喜欢的表达风格
 workflow\
 .connect_to("user_input")\
 .if_condition(lambda return_value, storage: return_value=="#exit")\
 .connect_to("END")\
 .else_condition()\
 .connect_to("assistant_reply")\
 .connect_to("user_input")

🙋‍♀️:不使用链式语法来表达连接关系会怎么样?

不使用链式语法示意
 # 也可以,如果我们需要编写复杂流程图的时候,也有可能将连接过程拆成一段一段进行编写
 # 根据我们具体的开发情况,灵活选择表达方式和风格即可
 # 下面的写法就是根据流程图中的连接关系,一段一段进行编写的效果
 workflow.connect_to("user_input")
 workflow.chunks["user_input"].if_condition(lambda return_value, storage: return_value=="#exit").connect_to("END")
 workflow.chunks["user_input"].else_condition().connect_to("assistant_reply")
 workflow.chunks["assistant_reply"].connect_to("user_input")

AltStyle によって変換されたページ (->オリジナル) /