大家好,我是 同学小张,持续学习C++进阶知识和AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,共同学习和进步。
前面咱们已经深入学习了AgentScope框架中Pipeline
模块的使用和实现原理,本文来总结一下这些Pipeline
,以及探索一下各种Pipeline
的组合用法。
0. 前置推荐阅读
- 【AI Agent系列】【阿里AgentScope框架】2. Pipeline模块入门:使用Pipeline模块实现最简单的多智能体交互
- 【AI Agent系列】【阿里AgentScope框架】3. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 顺序结构与条件分支
- 【AI Agent系列】【阿里AgentScope框架】4. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 循环结构
本文参考:https://modelscope.github.io/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
。
如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~
- 大家好,我是 同学小张,持续学习C++进阶知识和AI大模型应用实战案例
- 欢迎 点赞 + 关注 👏,持续学习,持续干货输出。
- +v: jasper_8017 一起交流💬,一起进步💪。
- 微信公众号也可搜【同学小张】 🙏
本站文章一览: