【AI Agent系列】【阿里AgentScope框架】4. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 循环结构

简介: 【AI Agent系列】【阿里AgentScope框架】4. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 循环结构
  • 大家好,我是 同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:


前面我们已经初步学会了使用AgentScope中的Pipeline模块,并深入源码,阅读了其中的顺序结构Pipeline和条件分支Pipeline的实现代码。今天,我们来学习另一种经典的Pipeline结构 - 循环结构Pipeline。同样深入源码,了解其背后的实现逻辑。

目前AgentScope还处于快速迭代阶段,本文源码版本为:Successfully installed agentscope-0.0.4a0

0. 推荐前置阅读

(1)Pipeline入门 & 顺序结构Pipeline源码详解:【AI Agent系列】【阿里AgentScope框架】2. Pipeline模块入门:使用Pipeline模块实现最简单的多智能体交互

(2)Pipeline基类 & 条件结构Pipeline源码详解:【AI Agent系列】【阿里AgentScope框架】3. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 顺序结构与条件分支

1. ForLoopPipeline

这个Pipeline用来实现类似编程语言中的 for 循环结构

1.1 初始化

class ForLoopPipeline(PipelineBase):
    def __init__(
        self,
        loop_body_operators: Operators,
        max_loop: int,
        break_func: Callable[[dict], bool] = lambda _: False,
    ):
        self.loop_body_operators = loop_body_operators
        self.max_loop = max_loop
        self.break_func = break_func
        self.participants = [self.loop_body_operators]
    def __call__(self, x: Optional[dict] = None) -> dict:
        return forlooppipeline(
            loop_body_operators=self.loop_body_operators,
            max_loop=self.max_loop,
            break_func=self.break_func,
            x=x,
        )

该Pipeline的初始化接收三个参数:

  • loop_body_operators:需要循环的operators
  • max_loop:最大循环次数
  • break_func:跳出循环的条件

1.2 实现原理

重写__call__函数,调用了 forlooppipeline 函数:

def forlooppipeline(
    loop_body_operators: Operators,
    max_loop: int,
    break_func: Callable[[dict], bool] = lambda _: False,
    x: Optional[dict] = None,
) -> dict:
    for _ in range(max_loop):
        # loop body
        x = _operators(loop_body_operators, x)
        # check condition
        if break_func(x):
            break
    return x  # type: ignore[return-value]

实现原理比较简单,一个for循环,for循环中为 x = _operators(loop_body_operators, x),关于 _operators函数,我们在上篇文章已经看过源码,它就是将 loop_body_operators 执行 sequentialpipeline顺序结构。

然后if break_func(x)语句,用来判断是否提前到达了停止条件,如果到达了,则直接跳出循环。

2. WhileLoopPipeline

这个Pipeline用来实现类似编程语言中的 while 循环结构。

1.1 初始化

class WhileLoopPipeline(PipelineBase):
    def __init__(
        self,
        loop_body_operators: Operators,
        condition_func: Callable[[int, dict], bool] = lambda _, __: False,
    ):
        self.condition_func = condition_func
        self.loop_body_operators = loop_body_operators
        self.participants = [self.loop_body_operators]
    def __call__(self, x: Optional[dict] = None) -> dict:
        return whilelooppipeline(
            loop_body_operators=self.loop_body_operators,
            condition_func=self.condition_func,
            x=x,
        )

该Pipeline的初始化接收两个参数:

  • loop_body_operators:需要循环的operators
  • condition_func:跳出循环的条件

1.2 实现原理

重写__call__函数,调用了 whilelooppipeline 函数:

def whilelooppipeline(
    loop_body_operators: Operators,
    condition_func: Callable[[int, Any], bool] = lambda _, __: False,
    x: Optional[dict] = None,
) -> dict:
    i = 0
    while condition_func(i, x):
        # loop body
        x = _operators(loop_body_operators, x)
        # check condition
        i += 1
    return x  # type: ignore[return-value]

实现原理也比较简单,一个while循环,进入while循环的条件是 condition_func。循环中为 x = _operators(loop_body_operators, x),即将 loop_body_operators 执行 sequentialpipeline顺序结构。

里面的 i 变量,没看懂其存在的意义是什么,只是用来计数吗?但是又没有最大循环次数设置进来,这个 i 变量也没有传递出去。

3. 总结

本文我们学习了AgentScope框架Pipeline模块中的两种循环Pipeline,其实现原理都是比较简单的,简单理解下,可以将循环内的operators理解成一系列函数,这些函数放在了for循环或while循环中。有过一点编程经验的同学相信很容易理解。

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


  • 大家好,我是 同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

相关文章
|
1天前
|
人工智能 自然语言处理 API
深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手
深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
智能化未来:Agent AI智能体的崛起与全球挑战
智能化未来:Agent AI智能体的崛起与全球挑战
38 1
|
11天前
|
人工智能 监控 前端开发
基于ReAct机制的AI Agent
当前,在各个大厂纷纷卷LLM的情况下,各自都借助自己的LLM推出了自己的AI Agent,比如字节的Coze,百度的千帆等,还有开源的Dify。你是否想知道其中的原理?是否想过自己如何实现一套AI Agent?当然,借助LangChain就可以。
|
16天前
|
机器学习/深度学习 人工智能 分布式计算
Agent AI智能体:如何借助机器学习引领科技新潮流
Agent AI智能体:如何借助机器学习引领科技新潮流
36 0
|
17天前
|
机器学习/深度学习 人工智能 分布式计算
Agent AI智能体:如何借助机器学习引领科技新潮流
Agent AI智能体:如何借助机器学习引领科技新潮流
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
Agent AI智能体的未来角色、发展路径及其面临的挑战
Agent AI智能体的未来角色、发展路径及其面临的挑战
|
1月前
|
人工智能 数据安全/隐私保护 UED
Agent AI智能体的未来
Agent AI智能体的未来
|
2天前
|
人工智能
当AI“复活”成为产业:确保数字生命技术始终用于正途的探讨
随着科技的飞速发展,AI技术日益成熟,我们迎来了一个令人瞩目的时代——当AI“复活”不再是科幻电影的情节,而是逐渐成为现实世界的产业,这其中就包括所谓的“数字生命”技术。在这一背景下,通过人物已有影像、声音、语言等内容的学习,克隆数字化的人物形象成为了可能,创造出数字化的“复活”形象。但是正如电影《流浪地球2》所展示的那样,图恒宇将女儿的意识上传到超强计算机,创造出拥有自我意识的数字图丫丫,这一技术奇迹引发了关于伦理、法律和社会责任的深刻探讨,所以说当AI“复活”技术逐渐从实验室走向产业化,我们不得不面对一个严峻的问题:如何确保这项技术始终用于正途?那么本文就来聊聊如何确保数字生命技术始终用于
14 1
当AI“复活”成为产业:确保数字生命技术始终用于正途的探讨
|
17小时前
|
人工智能 自然语言处理 搜索推荐
AI技术创业有哪些机会?
AI技术创业有哪些机会?
5 0
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
2024通义语音AI技术图景,大模型引领AI再进化
2024通义语音AI技术图景,大模型引领AI再进化

热门文章

最新文章