分享

【阿里AgentScope框架】5. Pipeline模块的组合使用及Pipeline模块总结

 小张学AI 2024-05-15 发布于山东

大家好,我是 同学小张,持续学习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描述
SequentialPipelinesequentialpipeline按顺序执行一系列运算符,将一个运算符的输出作为下一个运算符的输入。
IfElsePipelineifelsepipeline实现条件逻辑,如果条件为真,则执行一个运算符;如果条件为假,则执行另一个运算符。
SwitchPipelineswitchpipeline实现分支选择,根据条件的结果从映射集中执行一个运算符。
ForLoopPipelineforlooppipeline重复执行一个运算符,要么达到设定的迭代次数,要么直到满足指定的中止条件。
WhileLoopPipelinewhilelooppipeline只要给定条件保持为真,就持续执行一个运算符。
-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。这样就实现了agentPipeline以及各类Pipeline的组合使用。

所以,你也看到了,Pipeline不光能传递进去一堆 agent,还能传递进去一堆 pipeline。为什么?因为Pipeline接收的实际是一堆Operator类型,只要继承了这个类型,都可以使用Pipeline

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~点击上方公众号,关注↑↑↑


  • · 大家好,我是 同学小张,日常分享AI知识和实战案例

  • · 欢迎 点赞 + 关注 👏,持续学习持续干货输出

公众号内文章一览

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多