首页 > 其他分享 >AI Agent工程师认证-学习笔记(2)——【多Agent】AgentScope

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

时间:2024-08-15 15:25:30浏览次数:15  
标签:name AI Agent AgentScope agent msg model agentscope configs

基础学习链接:【多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都看到这里了,要是觉得有用的话那就辛苦动动小手点个赞吧!

标签:name,AI,Agent,AgentScope,agent,msg,model,agentscope,configs
From: https://blog.csdn.net/qq_74869852/article/details/140939723

相关文章

  • linux 同时tail 多个文件并过滤多个关键字
    多个文件  过滤多个关键字或的关系tail-fcdc-adapter/err_cdc-adapter.logcdc-admin/err_cdc-adapter.logcdc-dpm/err_cdc-dpm.logcdc-extractor/err_cdc-extractor.log|grep-E'.log|ERROR'==>cdc-adapter/err_cdc-adapter.log<==[2024-08-1514:59:25.905......
  • 【AiDocZh.com】Scikit-Learn1.6官方文档中文翻译上线啦
    【AiDocZh.com】Scikit-Learn1.6官方文档中文翻译上线啦网站地址:http://www.aidoczh.com/scikit-learn/一、scikit-learn官方文档翻译自从有了想翻译scikit-learn官方文档的想法,已经有了半年时间,现在终于翻译和校验完了。由于精力有限,难免会有一些错误,请大家见谅。scikit......
  • 【学术会议征稿】第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024)
    第三届人工智能、物联网和云计算技术国际会议(AIoTC2024)20243rd InternationalConferenceonArtificialIntelligence,InternetofThingsandCloudComputingTechnology第三届人工智能、物联网与云计算技术国际会议(AIoTC2024)将于2024年9月13日-15日在中国武汉举行......
  • 你要了解的2种AI思维链
    我们使用的AI助手,一般是经过了预训练和微调这2个步骤,尽管训练出的模型能回答许多通用类问题,但是在遇到复杂问题时还是束手无策。直到有人提出了思维链方式,才解决了模型在面对复杂问题时的推理能力。1、什么是思维链思维链(ChainofThought,CoT)是用于提高AI模型推理能力的方式......
  • 容器引擎说明——Contianerd与Docker的区别以及Containerd换源操作
    容器引擎是Kubernetes最重要的组件之一,负责管理镜像和容器的生命周期。Kubelet通过ContainerRuntimeInterface(CRI)与容器引擎交互,以管理镜像和容器。表1容器引擎对比Containerd和Docker组件常用命令对比表2镜像相关功能表3容器相关功能表4Pod相关功能说明:Cont......
  • SLF4J: Class path contains multiple SLF4J bindings. 运行报错 表示在您的应用程序
    java使用SLF4J时出现下面的错误,是因为项目中使用了多个SLF4J的类库SLF4J:ClasspathcontainsmultipleSLF4Jbindings.SLF4J:Foundbindingin[jar:file:/D:/%e5%bd%93%e5%89%8d%e5%b7%a5%e4%bd%9c/SipPBX%e8%ae%af%e6%97%b6/JoinCallOMCC/JoinCallOMCC/out/artifacts/......
  • 为您的网站或博客添加AI:智能优化提升用户体验
    前提一个网站或者一个博客可以下载插件安装插件插件部署创建工具把插件安装到WordPress并启用。填写回调密钥,回调密钥是随便写的,主要用于认证。到LeaflowAmber中点击左侧菜单中的登录来登录LeaflowUserLand账户。登录后点击左侧 工具,然后 新建一个工具,工具名称你可......
  • Android笔试面试题AI答之Kotlin(6)
    文章目录24.以下代码执行的结果是什么?25.解释一下下述Kotlin代码有什么问题?26.如何在Kotlin中创建常量?示例注意事项总结27.Koltin可以互换使用IntArray和Kotlin中的Array吗?IntArrayArray<Int>互换使用从IntArray到Array<Int>从Array<Int>到IntArra......
  • 新工种,AI商业化变现思路
    本文由ChatMoney团队出品AI变现,你我都能成为创收高手!不必是科技大咖,也无需深厚背景,让我们一起探索Chatmoney全能知识库AI的奥秘,轻松步入收益之门!想象一下,你的智慧和创意通过ChatmoneyAI技术转化为可观的收益,这一切并非遥不可及。现在,就让我们揭开ChatmoneyAI变现的神秘面......
  • AI大模型零基础入门学习路线(非常详细)从入门到精通,看这篇就 够了
    学习AI大模型从零基础入门到精通是一个循序渐进的过程,涉及到理论知识、编程技能和实践经验。下面是一份详细的指南,帮助你从头开始学习并逐步掌握AI大模型的构建与应用。第一阶段(10天):初阶应用该阶段让大家对大模型AI有一个最前沿的认识,对大模型AI的理解超过95%的人,可......