大家好,我是 同学小张,持续学习C++进阶知识和AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,共同学习和进步。
前面咱们已经深入学习了AgentScope框架中Pipeline 模块的使用和实现原理,本文来总结一下这些Pipeline ,以及探索一下各种Pipeline 的组合用法。 0. 前置推荐阅读本文参考:https://modelscope./agentscope/zh_CN/tutorial/202-pipeline.html
1. Pipeline的使用方式总结1.1 两种Pipeline分装从前面的文章可以看出,AgentScope提供了两种Pipeline 的使用方式,分别为类类型的Pipeline 和函数式的Pipeline 。 以顺序式Pipeline为例,你既可以使用 SequentialPipeline 这种类类型的Pipeline : # 实例化并调用 pipeline = SequentialPipeline([agent1, agent2, agent3]) x = pipeline(x)
又可以使用 sequentialpipeline 这种函数式的Pipeline : # 直接调用 x = sequentialpipeline([agent1, agent2, agent3], x)
1.2 内置Pipeline类型一览类类型Pipeline | 函数式Pipeline | 描述 | SequentialPipeline | sequentialpipeline | 按顺序执行一系列运算符,将一个运算符的输出作为下一个运算符的输入。 | IfElsePipeline | ifelsepipeline | 实现条件逻辑,如果条件为真,则执行一个运算符;如果条件为假,则执行另一个运算符。 | SwitchPipeline | switchpipeline | 实现分支选择,根据条件的结果从映射集中执行一个运算符。 | ForLoopPipeline | forlooppipeline | 重复执行一个运算符,要么达到设定的迭代次数,要么直到满足指定的中止条件。 | WhileLoopPipeline | whilelooppipeline | 只要给定条件保持为真,就持续执行一个运算符。 | - | placeholder | 在流控制中不需要任何操作的分支,如 if-else/switch 中充当占位符。 |
1.3 Pipeline模块存在的意义提供了一种多智能体间交互流程的控制逻辑封装,简化了代码。 下面是官方文档中展示的使用Pipeline 和不使用Pipeline 的代码对比: 可以看到,它简化了代码,其实也就是将原本需要用户写的控制语句,封装到了Pipeline 中,省掉的这部分代码,与Pipeline 中的实现源码基本一致。 以上示例省掉的那简单的几行控制逻辑可能看不出多大的作用,但是当逻辑复杂之后,这个Pipeline 的作用就会显现出来。 2. Pipeline的组合使用示例from agentscope.pipelines import SequentialPipeline, IfElsePipeline # 创建一个按顺序执行智能体的 Pipeline pipe1 = SequentialPipeline([agent1, agent2, agent3]) # 创建一个条件执行智能体的 Pipeline pipe2 = IfElsePipeline(condition, agent4, agent5) # 创建一个按顺序执行 pipe1 和 pipe2 的 Pipeline pipe3 = SequentialPipeline([pipe1, pipe2]) # 调用 Pipeline x = pipe3(x)
以上示例代码中,首先创建了一个顺序执行的Pipeline ,然后创建了一个条件Pipeline ,最后通过顺序Pipeline 来执行前面的两个Pipeline 。这样就实现了agent 、Pipeline 以及各类Pipeline 的组合使用。 所以,你也看到了,Pipeline 不光能传递进去一堆 agent ,还能传递进去一堆 pipeline 。为什么?因为Pipeline 接收的实际是一堆Operator 类型,只要继承了这个类型,都可以使用Pipeline 。 如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~点击上方公众号,关注↑↑↑
公众号内文章一览
|