【AI Agent系列】【阿里AgentScope框架】2. Pipeline模块入门:使用Pipeline模块实现最简单的多智能体交互

简介: 【AI Agent系列】【阿里AgentScope框架】2. Pipeline模块入门:使用Pipeline模块实现最简单的多智能体交互
  • 大家好,我是 同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:


上篇文章(【AI Agent系列】【阿里AgentScope框架】1. 深入源码:详细解读AgentScope中的智能体定义以及模型配置的流程)我们深入学习了AgentScope框架中的agent模块,并在最开始的时候创建了两个智能体实例,并运行了智能体实例得到了结果。

今天我们在之前代码的基础上,稍微修改一下,引入AgentScope框架的Pipeline模块,实现一个最简单的多智能体交互流程,以此来入门AgentScope中的Pipeline模块。

0. 之前的代码

代码详解请看我之前的文章:【AI Agent系列】【阿里AgentScope框架】0. 快速上手:AgentScope框架简介与你的第一个AgentScope程序

import agentscope
import os
openai_api_key = os.getenv('OPENAI_API_KEY')
# 一次性初始化多个模型配置
openai_cfg_dict = {
    "config_name": "openai_cfg", # A unique name for the model config.
    "model_type": "openai",         # Choose from "openai", "openai_dall_e", or "openai_embedding".
    "model_name": "gpt-3.5-turbo",   # The model identifier used in the OpenAI API, such as "gpt-3.5-turbo", "gpt-4", or "text-embedding-ada-002".
    "api_key": openai_api_key,       # Your OpenAI API key. If unset, the environment variable OPENAI_API_KEY is used.
}
agentscope.init(model_configs=[openai_cfg_dict])
from agentscope.agents import DialogAgent, UserAgent
# 创建一个对话智能体和一个用户智能体
dialogAgent = DialogAgent(name="assistant", model_config_name="openai_cfg", sys_prompt="You are a helpful ai assistant")
userAgent = UserAgent()
x = None
x = dialogAgent(x)
print("diaglogAgent: \n", x)
x = userAgent(x)
print("userAgent: \n", x)

这个代码的最后:

x = None
x = dialogAgent(x)
print("diaglogAgent: \n", x)
x = userAgent(x)
print("userAgent: \n", x)

我们简单的使用了一下这两个智能体实例,这其中也让这两个智能体之间有了一点交互:dialogAgent 的回复传给了 userAgent。但是 userAgent 并没有给 dialogAgent 发送消息,

1. 加入智能体之间的交互

为了使以上两个智能体间产生交互,能相互对话,我们可以这样改:

x = None
while True:
    x = dialogAgent(x)
    x = userAgent(x)
    # 如果用户输入"exit",则终止对话
    if x.content == "exit":
        print("Exiting the conversation.")
        break

加入一个while循环,让dialogAgent的结果给userAgentuserAgent的结果给dialogAgent

那根据上篇文章中我们看的智能体的实现,可以知道这个x传递给了智能体,就相当于加到了这个智能体的memory中:这样就有对方和自己的信息在上下文中了。

if self.memory:
    self.memory.add(x)

2. 使用Pipeline模块实现智能体间的交互

2.1 Pipeline是什么? - 个人简单理解

AgentScope为了方便大家对智能体间交互逻辑的编排,特地封装了 Pipeline 模块,其中包含了一系列地 Pipeline ,就像编程语言中的控制结构:顺序结构、条件分支、循环结构等。利用这些 Pipeline ,大家可以很方便地实现多智能体间的交互逻辑控制。

2.2 上手使用 Pipeline

引入 Pipeline ,改写以上代码为:

from agentscope.pipelines.functional import sequentialpipeline
# 在Pipeline结构中执行对话循环
x = None
while x is None or x.content != "exit":
  x = sequentialpipeline([dialogAgent, userAgent], x)

这里利用了 sequentialpipeline,这个Pipeline是让智能体间的信息流顺序地传递。利用 sequentialpipeline 就轻松实现了两个智能体间的信息交互。

2.3 sequentialpipeline 源码阅读

sequentialpipeline 实现源码如下:

def sequentialpipeline(
    operators: Sequence[Operator],
    x: Optional[dict] = None,
) -> dict:
    """Functional version of SequentialPipeline.
    Args:
        operators (`Sequence[Operator]`):
            Participating operators.
        x (`Optional[dict]`, defaults to `None`):
            The input dictionary.
    Returns:
        `dict`: the output dictionary.
    """
    if len(operators) == 0:
        raise ValueError("No operators provided.")
    msg = operators[0](x)
    for operator in operators[1:]:
        msg = operator(msg)
    return msg

接收两个参数:

  • operators:按顺序排列好的 agent 列表
  • x:给智能体的输入信息,可选,没有输入,那多个智能体间就是自己玩儿自己的了

然后里面的实现逻辑,其实就跟第1小节中下面的传递过程一样了:

x = dialogAgent(x)
x = userAgent(x)

3. 最终代码和实现效果

3.1 完整代码

import agentscope
# import os
# openai_api_key = os.getenv('OPENAI_API_KEY')
# 一次性初始化多个模型配置
openai_cfg_dict = {
    "config_name": "openai_cfg", # A unique name for the model config.
    "model_type": "openai",         # Choose from "openai", "openai_dall_e", or "openai_embedding".
    "model_name": "gpt-3.5-turbo",   # The model identifier used in the OpenAI API, such as "gpt-3.5-turbo", "gpt-4", or "text-embedding-ada-002".
    # "api_key": openai_api_key,       # Your OpenAI API key. If unset, the environment variable OPENAI_API_KEY is used.
}
agentscope.init(model_configs=[openai_cfg_dict])
from agentscope.agents import DialogAgent, UserAgent
# 创建一个对话智能体和一个用户智能体
dialogAgent = DialogAgent(name="assistant", model_config_name="openai_cfg", sys_prompt="You are a helpful ai assistant")
userAgent = UserAgent()
from agentscope.pipelines.functional import sequentialpipeline
# 在Pipeline结构中执行对话循环
x = None
while x is None or x.content != "exit":
  x = sequentialpipeline([dialogAgent, userAgent], x)

3.2 运行效果

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


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

本站文章一览:

相关文章
|
3天前
|
存储 人工智能 测试技术
Minstrel自动生成结构化提示,让AI为AI写提示词的多代理提示生成框架
在人工智能迅速发展的背景下,有效利用大型语言模型(LLMs)成为重要议题。9月发布的这篇论文提出了LangGPT结构化提示框架和Minstrel多代理提示生成系统,旨在帮助非AI专家更好地使用LLMs。LangGPT通过模块化设计提高提示的泛化能力和可重用性,Minstrel则通过多代理协作自动生成高质量提示。实验结果显示,这两种方法显著提升了LLMs的性能,特别是在大规模模型上效果显著。
15 2
Minstrel自动生成结构化提示,让AI为AI写提示词的多代理提示生成框架
|
13天前
|
人工智能 JSON 数据格式
RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
【9月更文挑战第6天】RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验
|
9天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
527 6
|
15天前
|
人工智能 算法 自动驾驶
用AI自动设计智能体,数学提分25.9%,远超手工设计
【9月更文挑战第18天】《智能体自动设计(ADAS)》是由不列颠哥伦比亚大学等机构的研究者们发布的一篇关于自动化设计智能体系统的最新论文。研究中提出了一种创新算法——“Meta Agent Search”,此算法通过迭代生成并优化智能体设计,从而实现更高效的智能体系统构建。实验表明,相比人工设计的智能体,Meta Agent Search生成的智能体在多个领域均有显著的性能提升。然而,该方法也面临着实际应用中的有效性与鲁棒性等挑战。论文详细内容及实验结果可于以下链接查阅:https://arxiv.org/pdf/2408.08435。
58 12
|
7天前
|
存储 人工智能 算法
AI伦理学:建立可信的智能系统框架
【9月更文挑战第26天】随着AI技术的迅猛发展,其在各领域的应用日益广泛,但也带来了算法偏见、数据隐私泄露、就业替代等伦理和法律挑战。本文探讨AI伦理学的核心议题,包括数据隐私保护、算法公平性与透明度、机器决策责任归属及对就业市场的影响,并提出建立可信智能系统框架的建议,如强化法律法规、技术创新、建立监督机制、行业自律和公众教育,以确保AI技术的可持续发展和社会接受。
|
7天前
|
人工智能 自然语言处理 API
深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手
我们小时候都玩过乐高积木。通过堆砌各种颜色和形状的积木,我们可以构建出城堡、飞机、甚至整个城市。现在,想象一下如果有一个数字世界的乐高,我们可以用这样的“积木”来构建智能程序,这些程序能够阅读、理解和撰写文本,甚至与我们对话。这就是大型语言模型(LLM)能够做到的,比如 GPT-4,它就像是一套庞大的乐高积木套装,等待我们来发掘和搭建。
|
19天前
|
消息中间件 人工智能 运维
|
23天前
|
存储 机器学习/深度学习 人工智能
深入浅出 AI 智能体(AI Agent)|技术干货
随着人工智能技术的发展,智能体(AI Agents)逐渐成为人与大模型交互的主要方式。智能体能执行任务、解决问题,并提供个性化服务。其关键组成部分包括规划、记忆和工具使用,使交互更加高效、自然。智能体的应用涵盖专业领域问答、资讯整理、角色扮演等场景,极大地提升了用户体验与工作效率。借助智能体开发平台,用户可以轻松打造定制化AI应用,推动AI技术在各领域的广泛应用与深度融合。
277 0
|
5天前
|
人工智能
AI工具:Gnomic智能体
AI工具:Gnomic智能体
16 0
|
6天前
|
人工智能 前端开发 Java
Spring Cloud Alibaba AI,阿里AI这不得玩一下
🏀闪亮主角: 大家好,我是JavaDog程序狗。今天分享Spring Cloud Alibaba AI,基于Spring AI并提供阿里云通义大模型的Java AI应用。本狗用SpringBoot+uniapp+uview2对接Spring Cloud Alibaba AI,带你打造聊天小AI。 📘故事背景: 🎁获取源码: 关注公众号“JavaDog程序狗”,发送“alibaba-ai”即可获取源码。 🎯主要目标:
16 0

热门文章

最新文章

下一篇
无影云桌面