AI Agent工程师认证-学习笔记(2)——【多Agent】AgentScope

news2024/11/24 7:18:20

基础学习链接:【多Agent】AgentScope学习指南

速通攻略:零基础做个多智能体游戏

Agentscope入门文档:AgentScope 初探

应用开发进阶:AgentScope应用开发入门

AgentScope官方文档:AgentScope官方文档

AgentScope开源仓库(觉得不错,Star一下):AgentScope

视频课程合集:从零开始学多智能体应用开发

Multi-Agent分享:Multi-Agent最新开源进展分享

AgentScope框架 

安装AgentScope 

        为了安装AgentScope,您需要安装Python 3.9或更高版本。

        1、创建虚拟环境

(1)使用Conda

# 使用Python 3.9创建一个名为"agentscope"的新虚拟环境
conda create -n agentscope python=3.9

# 激活虚拟环境
conda activate agentscope

(2)使用Virtualenv

         先安装Virtualenv,然后再创建一个虚拟环境

# 如果尚未安装virtualenv,请先安装它
pip install virtualenv

# 使用Python 3.9创建一个名为"agentscope"的新虚拟环境
virtualenv agentscope --python=python3.9

# 激活虚拟环境
source agentscope/bin/activate  # 在Windows上使用`agentscope\Scripts\activate`

        2、安装AgentScope

(1) 源码安装【强烈建议!!!】

# 从GitHub上拉取AgentScope的源代码
git clone https://github.com/modelscope/agentscope.git
cd agentscope

# 针对本地化的multi-agent应用
pip install -e .
# 为分布式multi-agent应用
pip install -e .[distribute]  # 在Mac上使用`pip install -e .\[distribute\]`

注意[distribute]选项安装了分布式应用程序所需的额外依赖项。在运行这些命令之前,请激活您的虚拟环境。 

(2)pip安装

# 针对本地化的multi-agent应用
pip install agentscope --pre

# 为分布式multi-agent应用
pip install agentscope[distribute] --pre  # 在Mac上使用`pip install agentscope\[distribute\] --pre`

配置model_config

        1、基础参数

(1)model_type

        对应ModelWrapper的类型,不同model_type需要填的model_config内容不同

        举例:如果model_typeopenai,那么它内部会找到agentscope\src\agentscope\models\openai_model.py文件里面的class 

(2)config_name

        相当于自己定义的一个配置的名字,后面设置Agent的model_config_name会与model进行绑定

        2、通过model_configs.json初始化AgentScope 

model_configs.json文件

[
    {
        "model_type": "dashscope_chat",
        "config_name": "qwen",
        "model_name": "qwen-72b-chat",
        "api_key": "sk-",
        "generate_args": {
            "temperature": 0.5
        }
    },
    {
        "model_type": "openai",
        "config_name": "deepseek",
        "model_name": "deepseek-chat",
        "api_key": "sk-",
        "generate_args": {
            "temperature": 0.5
        },
        "client_args": {
            "base_url": "https://api.deepseek.com/v1"
        }
    },
    {
        "model_type": "openai",
        "config_name": "gpt-3.5",
        "model_name": "gpt-3.5-turbo-0125",
        "api_key": "sk-",
        "generate_args": {
            "temperature": 0.5 
        }
    }
]
import agentscope

# 初始化了多个大模型
agentscope.init(
    model_configs="./model_configs.json"
)

 配置agent_config

        1、直接定义一个对话Agent(DialogAgent)

from agentscope.agents import DialogAgent
import agentscope

# 初始化了多个大模型
agentscope.init(
    model_configs="./model_configs.json"
)

# 使用qwen大模型初始化一个对话agent
dialog_agent_qwen = DialogAgent(
    name="Assistant_qwen",
    sys_prompt="You're a helpful assistant.",  # sys_prompt可以自行定义,不能为空
    model_config_name="qwen",  # 这里的qwen和前面的model_config.json文件中的config_name要一一对应,否则Agent找不到大模型会报错
)

# 使用deepseek大模型初始化一个对话agent
dialog_agent_deepseek = DialogAgent(
    name="Assistant_deepseek",
    sys_prompt="You're a helpful assistant.",
    model_config_name="deepseek",
)

# 使用gpt-3.5大模型初始化一个对话agent
dialog_agent_gpt = DialogAgent(
    name="Assistant_deepseek",
    sys_prompt="You're a helpful assistant.",
    model_config_name="gpt-3.5",
)

# 简单实用 可以当作一个api
from agentscope.message import Msg

msg = Msg(name = "贾维斯",content = "你好")

dialog_agent_deepseek (msg)
dialog_agent_gpt(msg)

        2、通过配置文件创建多个Agent 

agent_configs.json文件

[
    {
        "class": "DialogAgent",
        "args": {
            "name": "Assistant_qwen",
            "sys_prompt": "You're a helpful assistant.",
            "model_config_name": "qwen",
            "use_memory": true
        }
    },
    {
        "class": "DialogAgent",
        "args": {
            "name": "Assistant_deepseek",
            "sys_prompt": "You're a helpful assistant.",
            "model_config_name": "deepseek",
            "use_memory": true
        }
    },
    {
        "class": "DialogAgent",
        "args": {
            "name": "Assistant_gpt",
            "sys_prompt": "You're a helpful assistant.",
            "model_config_name": "gpt-3.5",
            "use_memory": true
        }
    }
]
import agentscope

# 初始化了多个大模型和多个Agent
agents = agentscope.init(
    model_configs="./model_configs.json",  # 前面创建的model_configs.json文件
    agent_configs="./agent_configs.json",
)


# 对应配置文件agent_configs.json中的顺序
dialog_agent_qwen = agents[0]
dialog_agent_deepseek = agents[1]
dialog_agent_gpt = agents[2]

Agent之间相互对话

        1、Pipeline 方式(按顺序一个接着一个讨论)

举例:成语接龙

[
    {
        "class": "DialogAgent",
        "args": {
            "name": "player_qwen",
            "sys_prompt": "作为成语接龙的参与者,您的任务是根据前一个玩家提供的成语的最后一个字来提出一个新的成语。限制:你仅需说出一个四字中文成语,其他的话不需要说;请确保您的成语是四字成语。",
            "model_config_name": "qwen",
            "use_memory": true
        }
    },
    {
        "class": "DialogAgent",
        "args": {
            "name": "player_deepseek",
            "sys_prompt": "作为成语接龙的参与者,您的任务是根据前一个玩家提供的成语的最后一个字来提出一个新的成语。限制:你仅需说出一个四字中文成语,其他的话不需要说;请确保您的成语是四字成语。",
            "model_config_name": "deepseek",
            "use_memory": true
        }
    },
    {
        "class": "DialogAgent",
        "args": {
            "name": "player_gpt",
            "sys_prompt": "作为成语接龙的参与者,您的任务是根据前一个玩家提供的成语的最后一个字来提出一个新的成语。限制:你仅需说出一个四字中文成语,其他的话不需要说;请确保您的成语是四字成语。",
            "model_config_name": "gpt-3.5",
            "use_memory": true
        }
    }
]
import agentscope
from agentscope.pipelines import SequentialPipeline
from agentscope.message import Msg

# 初始化了多个大模型和多个Agent
agents = agentscope.init(
    model_configs="./model_configs.json",  # 前面创建的model_configs.json文件
    agent_configs="./agent_configs.json",
)

# 对应配置文件agent_configs.json中的顺序
player_agent_qwen = agents[0]
player_agent_deepseek = agents[1]
player_agent_gpt = agents[2]

# 创建一个SequentialPipeline
pipe = SequentialPipeline([player_agent_qwen, 
                           player_agent_deepseek, 
                           player_agent_gpt])

msg = Msg("Moderator", "游戏规则:请回答一个四字中文成语,不要添加其他文字。请按规则接龙。本轮成语接龙起始词为「水落石出」")

# 启动Pipeline
pipe(msg)

 结果展现:

        2、MsgHub 方式(群聊讨论)

举例:座谈会

#初始化四个Agent
import agentscope
from agentscope.pipelines import SequentialPipeline
from agentscope.message import Msg


agent_configs = [
    {
        "class": "DialogAgent",
        "args": {
            "name": "agent1",
            "sys_prompt": "你是一个得力帮手,你是agent1。",
            "model_config_name": "qwen",
            "use_memory": True
        }
    },
    {
        "class": "DialogAgent",
        "args": {
            "name": "agent2",
            "sys_prompt": "你是一个得力帮手,你是agent2。",
            "model_config_name": "qwen",
            "use_memory": True
        }
    },
    {
        "class": "DialogAgent",
        "args": {
            "name": "agent3",
            "sys_prompt": "你是一个得力帮手,你是agent3。",
            "model_config_name": "qwen",
            "use_memory": True
        }
    },
    {
        "class": "DialogAgent",
        "args": {
            "name": "agent4",
            "sys_prompt": "你是一个得力帮手,你是agent4。",
            "model_config_name": "qwen",
            "use_memory": True
        }
    },
    {
        "class": "DialogAgent",
        "args": {
            "name": "HostAgent",
            "sys_prompt": "你是一个主持agent,需要做一个决策。除了决策外不要输出任何东西。",
            "model_config_name": "qwen",
            "use_memory": True
        }
    }
]
# 初始化了多个大模型和多个Agent
agents = agentscope.init(
    model_configs="./model_configs.json",  # 前面创建的model_configs.json文件
    agent_configs=agent_configs,
)

agent1  = agents[0]
agent2  = agents[1]
agent3  = agents[2]
agent4  = agents[3]
#四类通信方式
from agentscope.message import Msg

msg = Msg(name = "贾维斯",content = "请带上自己的名字进行传话,传话内容“你好”")
# 顺序执行
msg = agent1(msg)
print(msg)
msg = agent2(msg)
print(msg)
msg = agent3(msg)
print(msg)
msg = agent4(msg)
print(msg)

##{……'name': 'agent1','content': '我是来自阿里云的超大规模语言模型,我的名字是通义千问。现在帮您传话:“你好”'}
##{……'name': 'agent2','content': '您好!我是通义千问,来自阿里云的超大规模语言模型,很高兴为您服务,并向您问候:“你好”。'}
##{……'name': 'agent3','content': '您好!作为阿里云的超大规模语言模型通义千问,我非常荣幸能与您交流并提供服务。同样向您致以亲切的问候:“你好”!'}
##{…… 'name': 'agent4', 'content': '您好!非常高兴能与您交流互动。作为阿里云的超大规模语言模型通义千问,我的确具备强大的自然语言处理能力,可以为您提供广泛的知识问答、技术咨询、场景应用等各类服务。请随时告诉我您需要了解的内容或遇到的问题,我会全力以赴为您提供帮助!'}


# loop情况
msg = Msg("system","选择是否退出")
msg1 = Msg("system","none")
def ifBreak(msg):
    return "退出" not in msg.content
while ifBreak(msg1):
    msg1 = hostAgent(msg)
    print(msg1.content)
    msg = agent1(msg)
    print(msg.content)
    msg = agent2(msg)
    print(msg.content)


# 选择情况 
msg = hostAgent(Msg("system","agent1 和 agent2 应该选择谁退出?我建议 agent1 退出。"))
print(msg)
if "agent1" in msg.content :
    msg = agent1(msg)
else:
    msg = agent2(msg)
print(msg)
    

msg_send = Msg("system","重新选择退出或继续运行,你只需要回答肯定的指令")

def ifBreak(msg):
    return ("退出" or "结束") not in msg.content
# 复杂形势
msg = hostAgent(msg_send)
print(msg)
while ifBreak(msg):
    msg1 = hostAgent(Msg("system","agent1 和 agent2 应该选择谁发言?,你只需要回答是谁的名字"))
    msg2 = Msg("system","请发言,发言后请告诉主持人退出")

    if "agent1" in msg1.content :
        msg2 = agent1(msg2)
    else:
        msg2 = agent2(msg2)
    print(msg2)
    msg = hostAgent(msg_send)
    print(msg)

hahaha都看到这里了,要是觉得有用的话那就辛苦动动小手点个赞吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ghidra:开源软件逆向工程框架

Ghidra 是一个软件逆向工程 (SRE) 框架 Ghidra 是一种尖端的开源软件逆向工程 (SRE) 框架,是美国国家安全局 (NSA) 研究局的产品。 Ghidra 该框架具有高端软件分析工具,使用户能够分析跨各种平台(包括 Windows、macOS 和 Linux&#xff09…

【区块链+金融服务】港融区域股权服务平台 | FISCO BCOS应用案例

中国证监会在 2020 年启动了区块链建设试点工作,提出建设基于区块链的场外市场登记系统和交易报告库,利 用区块链去中心化、不易篡改、安全稳定等技术特点,构建区域性股权市场数字化信任机制,为区域性股权市场 提供基础支撑设施。…

【网编】——UDP编程

宏观操作 服务器:socket创套接字—bind绑定连接—recvfrom接收数据/sendto发送数据 客户端:socket创套接字—sendto发送数/recvfrom接收数据—close关闭套接字 函数 recv ssize_t recvfrom ( int sockfd , void * buf , size_t len , int flags , str…

【秋招笔试】8.11大疆秋招(第三套)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

实时推荐算法的架构

1. 实时推荐算法的架构设计 偷得浮生半日闲,跟大家一起聊一聊大家最喜欢的实时推荐算法架构,具体如图1.1,架构的详解则见下一章节《2. 实时推荐算法架构设计详解》。 图 1.1 实时推荐算法的架构设计 2. 实时推荐算法架构设计详解 2.1 数据源…

MySQL 数据类型详解及SQL语言分类-DDL篇

在数据库开发中,选择合适的数据类型和理解SQL语言的分类是非常重要的。今天详细介绍MySQL中的数据类型,包括数值类型、字符串类型和日期类型,并解释SQL语言的四大分类:DDL、DML、DQL和DCL。 1.MySQL 数据类型 SQL语言是不区分大…

C++ 126类和对象_ 运算符重载_仿函数调用

126类和对象_ 运算符重载_仿函数调用 学习内容 仿函数调用 结果 代码 #include<iostream> using namespace std;//cout 在这里&#xff0c;没有它会报错 #include<string>//126类和对象_ 运算符重载_仿函数调用 //学习内容 //仿函数调用class MyPrint { …

【在线+sdwebui】在线免费运行stable-diffusion-webui (无需配置环境)

在线运行平台: https://platform.virtaicloud.com/gemini_web/auth/register 一、进入项目页面启动环境 项目&#xff1a;https://open.virtaicloud.com/web/project/detail/460841914028511232 1.1 点击运行 1.2 克隆环境到注册后的平台 1.3 自动适配项目最低配置的显卡 &…

Java面试题--JVM大厂篇之高并发Java应用的秘密武器:深入剖析GC优化实战案例

引言: 晚上好,Java开发者们!在高并发的现代应用中,垃圾回收器(GC)是Java性能优化的重要环节。尤其在CMS(Concurrent Mark-Sweep)GC曾经担任主角的日子里,适当的调优和优化措施至关重要。本篇文章将通过三个实际案例,探讨如何在不同场景中优化CMS GC,为你揭示Java性能…

前端如何使用Nginx代理dist网页,代理websocket,代理后端

本文将指导您如何配置Nginx以代理前后端分离的项目&#xff0c;并特别说明了对WebSocket的代理设置。通过本教程&#xff0c;您将能够实现一次性配置&#xff0c;进而使项目能够在任意局域网服务器上部署&#xff0c;并可通过IP地址或域名访问服务。 笔者建议 先速览本文了解大…

再见Figma!!新的设计,代码协作神器!【送源码】

软件介绍 Penpot 是一款专门用来帮助设计师和开发者更好地合作的软件。它可以让设计师轻松地做出漂亮的设计稿&#xff0c;还能让这些设计稿变成真正的网站或者应用的一部分。这样&#xff0c;设计师和开发者之间就不会因为沟通不畅而产生麻烦了。 Penpot 专为设计师与开发者之…

Android 下载安装配置

文章目录 Android Studio 下载安装配置1. 下载JDK2. JDK环境配置&#xff1a;3. 测试JDK是否安装成功&#xff1a;4. 下载Android Studio:5. 配置Android Studio:6. android studio提速方法1&#xff08;不行&#xff09;方法2&#xff1a;(很行&#xff09; Android Studio 下…

OpenDDS集中发现服务DCPSInfoRepo联邦机制

OpenDDS在提供DCPSInfoRepo集中发现服务的基础上&#xff0c;又提供了集中发现服务DCPSInfoRepo的联邦功能&#xff0c;实际上就是集群功能。 联邦Federation间的通信主题&#xff0c;用于Federation联邦节点间DDS对象的资源库一致性迁移&#xff0c;包括 1&#xff09;OwnerUp…

力扣热题100_图论_994_腐烂的橘子

文章目录 题目链接解题思路解题代码 题目链接 994. 腐烂的橘子 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周…

数据可视化实用干货分享

在当今的数字化时代&#xff0c;数据已成为企业决策的重要基石。然而&#xff0c;面对海量的数据&#xff0c;如何高效地理解、分析和应用这些数据&#xff0c;成为企业面临的一大挑战。数据可视化作为一种将数据转化为图形或图表的技术&#xff0c;为企业提供了强有力的支持。…

第八季完美童模全球人气总冠军【杜姗珊】至高加冕 见证星芒风采!

7月20-23日&#xff0c;2024第八季完美童模全球总决赛在青岛圆满落幕&#xff0c;在盛大的颁奖典礼上&#xff0c; 全球观众网友通过现场参与和网络直播的方式&#xff0c;共同见证了新一代“模”王诞生&#xff01;在众多优秀的小超模中&#xff0c;来自上海的女孩杜姗珊从本次…

SRGAN:使用生成对抗网络对图像进行超分辨率重构

SRGAN&#xff1a;使用生成对抗网络对图像进行超分辨率重构 前言相关介绍SRGAN 的工作原理核心思想主要组件训练目标 优点缺点总结 实验环境项目地址LinuxWindows 项目结构具体用法准备数据集进行训练进行测试测试基准数据集测试单张图像测试单个视频 参考文献 前言 由于本人水…

深度剖析:Jenkins构建任务无法中断的原因及解决方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

20240814使用串口控制MC-105Q的机芯确认变焦

20240814使用串口控制MC-105Q的机芯确认变焦 2024/8/14 20:44 缘起&#xff1a;使用的是LVDS OUT的MC-105Q的机芯&#xff0c;最近需要查看光学/电子变焦。 打开电子变焦&#xff1a;81 01 04 06 02 ff 放大&#xff1a;81 01 04 07 02 FF 缩小&#xff1a;81 01 04 07 03 FF 串…

想要在数据治理领域脱颖而出?了解CDGA认证的重要性

CDGA认证是专注于数据治理领域的专业资格证明。 CDGA&#xff08;即认证数据治理助理&#xff09;是数据管理专家认证的一部分&#xff0c;旨在验证和展示个人在数据治理方面的专长和技巧。 下面是关于CDGA认证的详细说明&#xff1a; 1. CDGA认证的组织背景&#xff1a;DAM…