返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

AgentScope:可视化的多 Agent 平台

[复制链接]
链载Ai 显示全部楼层 发表于 2 小时前 |阅读模式 打印 上一主题 下一主题

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">AgentScope 旨在帮助开发人员轻松、可靠、高性能地构建多智能体应用程序。该平台具有三种高级功能:

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin-left: 8px;padding-left: 1em;list-style: circle;color: rgb(63, 63, 63);" class="list-paddingleft-1">
  • •易于使用:采用纯 Python 编程,具有各种预构建的组件可立即使用,适合具有不同级别定制要求的开发人员或用户。

  • •高稳健性:支持定制的容错控制和重试机制,增强应用程序的稳定性。

  • •基于参与者的分布:使开发人员能够以集中式编程的方式构建分布式多代理应用程序,从而简化开发。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding: 8px 12px;border-radius: 0px;color: rgba(0, 0, 0, 0.5);background: rgb(244, 238, 255);margin-right: 8px;margin-left: 8px;border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;border-left-color: rgb(201, 132, 255) !important;">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1em;letter-spacing: 0.1em;color: rgb(80, 80, 80);">项目地址:https://github.com/modelscope/agentscope[1]

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">下面看一下 AgentScope 工作站的预览图:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;color: rgb(63, 63, 63);">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 20px;font-weight: bold;display: table;margin: 2em auto 1.5em;padding-top: 6px;padding-bottom: 6px;padding-left: 16.7472px;background-image: linear-gradient(135deg, rgb(113, 23, 234), rgba(113, 23, 234, 0.667), rgba(234, 96, 96, 0.533), rgba(217, 57, 205, 0.267), rgba(217, 57, 205, 0));background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;color: rgb(255, 255, 255);border-radius: 8px;width: 318.246px;">AgentScope 核心概念

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">我们先来了解 AgentScope 的核心概念。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;font-weight: bold;margin: 2em 8px 0.75em;border-left: 5px solid rgb(161, 27, 218);color: rgb(63, 63, 63);padding: 6px 8px;">消息

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">消息 是 AgentScope 中通信的单位,是不同 Agent 之间进行信息交换的载体。

消息是 Python 中的字典对象,使用起来很简单,下属代码定义了两个消息:

fromagentscope.messageimportMsg

message_from_alice=Msg("Alice","Hi!")

message_from_bob=Msg("Bob","WhataboutthispictureItook?",url="/path/to/picture.jpg")

智能体(代理)

智能体是系统中的活动实体,他负责负责处理信息做出决策采取行动

AgentScope 通过两个主要功能定义其行为:

回复:将消息作为输入并生成相应的响应,推动对话流程。观察:处理传入消息而不生成直接回复,允许代理被动收集信息并做出相应的反应。

下面展示如何定义智能体:

dialogAgent=DialogAgent(name="assistant",model_config_name="gpt-4",sys_prompt="Youareahelpfulaiassistant")
userAgent=UserAgent()

智能体对话

智能体对话很简单,只需要把消息传入智能体,函数返回值就是智能体的回答。

result=dialogAgent(message_from_alice)

下面展示两个智能体持续对话,用户输出exit退出:

x=None
whileTrue:
x=dialogAgent(x)
x=userAgent(x)

#如果用户输入"exit",则终止对话
ifx.content=="exit":
print("Exitingtheconversation.")
break

记忆 Memory

记忆(memory)用于存储历史消息,从而使智能体能够根据上下文提供更加连贯,更加自然的响应。

TemporaryMemory是 AgentScope 一个基于内存的Memory实现,

工具(服务)

工具是智能体连接现实世界的通道,也称之为服务函数(Service Function)。

服务函数(Service function)是可以增强智能体能力工具,例如执行Python代码、网络搜索、 文件操作等。

AgentScope 内置了很多函数,通过agentscope.service.{函数名}可以快速调用。

创建新的函数

虽然内置的工具函数已经足够满足很多需求,但是免不了希望贴合自身业务来创建自定义工具函数。

AgentScope 提供了创建函数的功能,新的Service函数必须满足以下要求才能被正常使用:

  • •具有格式化的函数说明(推荐Google风格),以便ServiceToolkit提取函数说明。

  • •函数名称应该是自解释的,这样智能体可以理解函数并正确使用它。

  • •在定义函数时应提供参数的类型(例如def func(a: int, b: str, c: bool)),以便大模型 能够给出类型正确的参数。

看一个示例:


defcreate_file(file_path:str,content:str="")->ServiceResponse:
"""
创建文件并向其中写入内容。

Args:
file_path (str):将要创建文件的路径。
content (str):要写入文件的内容。

Returns:
ServiceResponse:其中布尔值指示成功与否,字符串包含任何错误消息(如果有),包括错误类型。
"""
#...[为简洁起见省略代码]

工作流(Pipeline)

但是对复杂应用来说,细致的描绘每一次信息交流对开发者来说是非常困难的。Pipeline 主要用于简化「描述消息传播」的编程工作。

Agent Scope Studio

AgentScope Studio 是一个开源的 Web UI 工具包,用于构建和监控多智能体应用程序。它提供以下功能:

  • • Dashboard:一个用户友好的界面,可以在其中监视正在运行的应用程序,并查看运行历史。

  • • Workstation:一个强大的界面,可通过拖拽的方式构建多智能体应用程序。

  • • Gallery:即将推出!

  • • Server Management:即将推出!

下面我们看一下如何运行 Studio。我直接在 Colab 上运行,速度更快一些,大家本地运行的的时候会更简单。

本地运行

先安装:

pipinstallagentscope--pre

然后执行下面 Python 代码,访问浏览器即可:

importagentscope

agentscope.studio.init()

Colab 运行

Colab 运行复杂一点,我这里单独讲一下。

仍然是先安装 agentscope 依赖:

!pipinstall--ignore-installedagentscope--pre

获取 外网地址,有下面两种方法:

!pipinstallipwhois

fromipwhoisimportIPWhois
fromrequestsimportget

ip=get('https://api.ipify.org').text
whois=IPWhois(ip).lookup_rdap(depth=1)
cidr=whois['network']['cidr']
name=whois['network']['name']

print('\n')
print('Provider:',name)
print('PublicIP:',ip)
print('CIDRs:',cidr)

#or
!curlhttps://loca.lt/mytunnelpassword

生成执行脚本,

!echo"importagentscope">run.py
!echo>>run.py
!echo"agentscope.studio.init()">>run.py
!catrun.py

运行程序:

!pythonrun.py&npxlocaltunnel--port5000

访问即可看到如下界面:

打开工作站可以看到示例工作流和具体的编辑画布

对话流程

打开对话这个例子,填入必要的 ak,

你可以从工具栏里面投入你需要的元素,

当然也可以修改模板中的内容,比如两个智能体的提示语:

点击运行,可以看到运行成功的提示:

我们现在进入Dashboard页面,可以看到我们的程序已经运行了:

点击程序,默认打开程序的对话页面,我们随便问个问题:

由于这个流程很简单,就是和大模型对话没啥特别的。

多人对话

现在我们运行一个多人聊天的程序,

大致的流程如下:

再次来到聊天界面,我的身份是 King,先给大家放个假:

Boyu竟然说英文,朕很生气,拖出去斩了:

话说,自己肯定不适合搞格局,上朝要是如此,我真的是能烦死。

对了,运行程序前,我们可以初始化自己的模型配置,这样就不用再到界面上维护大模型的配置了。

importagentscope
fromagentscope.agentsimportDialogAgent
fromagentscope.agentsimportUserAgent
fromagentscope.pipelines.functionalimportsequentialpipeline

agentscope.init(
model_configs=[
{
"model_type":"gemini_chat",
"config_name":"gemini-pro",
"model_name":"gemini-pro",
"api_key":"xxx",#Loadfromenvifnotprovided
"organization":"xxxyyy",#Loadfromenvifnotprovided
"generate_args":{
"temperature":0.5,
},
},
{
"model_type":"post_api_chat",
"config_name":"my_post_api",
"api_url":"https://xxx",
"headers":{},
},
],
)

RAG 智能体

RAG 智能体是可以基于检索到的知识生成答案的智能体。

可以在 Agent 初始化的时候传入一个 knowledge 的列表:

knowledge=knowledge_bank.get_knowledge(knowledge_id)
agent=LlamaIndexAgent(
name="rag_worker",
sys_prompt="{your_prompt}",
model_config_name="{your_model}",
knowledge_list=[knowledge],#provideknowledgeobjectdirectly
similarity_top_k=3,
log_retrieval=False,
recent_n_mem_for_retrieve=1,
)

Knowledge bank 构建也很简单,比如读取./doc/tutorial目录下的所有 「.md」 文件作为知识库:

knowledge_bank.add_data_as_knowledge(
knowledge_id="agentscope_tutorial_rag",
emb_model_name="qwen_emb_config",
data_dirs_and_types={
"./docs/tutorial":[".md"],
},
)

而 Knowledge Bank 是一组 Knowledge 的组合,Knowledge 包含以下关键属性:

  • •knowledge_id: 每个knowledge模块的唯一标识符;

  • •emb_model_config_name: embedding模型的名称;

  • •chunk_size: 对文件分块的默认大小;

  • •chunk_overlap: 文件分块之间的默认重叠大小;

  • • data_processing: 一个list型的数据处理方法集合。

最后,知识模块目前只支持 LlamaIndex, 后续会提供对 LangChain 的支持。


--- END ---


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ