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

本站文章一览:

相关文章
|
5月前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
1827 1
|
5月前
|
机器学习/深度学习 数据采集 人工智能
通义实验室Mobile-Agent-v3开源,全平台SOTA的GUI智能体,支持手机电脑等多平台交互
近日,通义实验室MobileAgent团队正式开源全新图形界面交互基础模型 GUI-Owl,并同步推出支持多智能体协同的自动化框架 Mobile-Agent-v3。该模型基于Qwen2.5-VL打造,在手机端与电脑端共8个GUI任务榜单中全面刷新开源模型性能纪录,达成全平台SOTA。
1783 2
|
5月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
2382 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
4月前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
1865 17
构建AI智能体:一、初识AI大模型与API调用
|
5月前
|
人工智能 数据处理 云栖大会
云栖现场|让评测与标注成为AI进化引擎!阿里发布全新评测平台,3大创新评测集亮相
云栖现场|让评测与标注成为AI进化引擎!阿里发布全新评测平台,3大创新评测集亮相
709 9
云栖现场|让评测与标注成为AI进化引擎!阿里发布全新评测平台,3大创新评测集亮相
|
5月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
758 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
4月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
848 23
|
4月前
|
存储 人工智能 搜索推荐
拔俗AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教融合大语言模型、教育知识图谱、多模态感知与智能体技术,重构“教、学、评、辅”全链路。通过微调LLM、精准诊断错因、多模态交互与自主任务规划,实现个性化教学。轻量化部署与隐私保护设计保障落地安全,未来将向情感感知与教育深度协同演进。(238字)
487 0

热门文章

最新文章