【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 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

相关文章
|
2天前
|
存储 人工智能 API
文心大模型的智能体(Agent)平台
文心智能体平台是百度推出的大模型开发平台,支持各类开发者创建个性化智能体(Agent)和AI插件。平台提供零代码、低代码工具,让不同能力的开发者能轻松构建智能体,同时具备大模型的强大能力,如内容创作和多模态生成。智能体具备主动思考、理解和记忆功能,可在多个场景下与用户互动。AI插件则扩展了大模型的应用,包括信息检索、多模态交互和服务自动化等。平台还提供流量分发,助力商业闭环。了解更多:[文心智能体平台介绍](https://chatgpt.ciilii.com/show/news-715.html)。
|
6天前
|
安全 API 开发者
智能体-Agent能力升级!新增Assistant API & Tools API服务接口
ModelScope-Agent是一个交互式创作空间,它支持LLM(Language Model)的扩展能力,例如工具调用(function calling)和知识检索(knowledge retrieval)。它已经对相关接口进行了开源,以提供更原子化的应用LLM能力。用户可以通过Modelscope-Agent上的不同代理(agent),结合自定义的LLM配置和消息,调用这些能力。
|
6天前
|
人工智能 数据安全/隐私保护 UED
Agent AI智能体的未来
Agent AI智能体的未来
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试中AI驱动的决策框架设计与实现
【5月更文挑战第5天】 在软件测试领域,自动化测试已成为提升测试效率和质量的关键手段。然而,随着软件系统的复杂性增加,传统的自动化测试方法面临挑战,尤其在测试用例的生成、执行及结果分析等方面。本文提出一种基于人工智能(AI)的自动化测试决策框架,旨在通过智能化的算法优化测试过程,并提高异常检测的准确率。该框架结合机器学习和深度学习技术,能够自学习历史测试数据,预测高风险变更区域,自动生成针对性强的测试用例,并在测试执行过程中实时调整测试策略。此外,通过自然语言处理(NLP)技术,该框架还能对测试结果进行语义分析,进一步提供更深入的洞察。本研究不仅增强了自动化测试工具的智能性,也为软件质量保证提
|
6天前
|
人工智能 自然语言处理 算法
分享几个.NET开源的AI和LLM相关项目框架
分享几个.NET开源的AI和LLM相关项目框架
|
6天前
|
人工智能 移动开发 小程序
uniapp框架——vue3+uniFilePicker+fastapi实现文件上传(搭建ai项目第二步)
uniapp框架——vue3+uniFilePicker+fastapi实现文件上传(搭建ai项目第二步)
62 2
|
6天前
|
人工智能 小程序 前端开发
uniapp框架——初始化vue3项目(搭建ai项目第一步)
uniapp框架——初始化vue3项目(搭建ai项目第一步)
31 1
|
6天前
|
存储 人工智能 测试技术
【AI智能体】SuperAGI-开源AI Agent 管理平台
【4月更文挑战第9天】智能体管理平台SuperAGI简介及实践
133 0
|
6天前
|
监控 Unix Windows
Zabbix【部署 04】 Windows系统安装配置agent及agent2
Zabbix【部署 04】 Windows系统安装配置agent及agent2
203 0
|
6天前
|
缓存 监控 安全
zabbix服务器监控之了解agent的启动过程
zabbix服务器监控之了解agent的启动过程
8 0