AgentScope Studio
AgentScope Studio 是一个开源的 Web UI 工具包,用于构建和监控多智能体应用程序。它提供以下功能:
Dashboard:一个用户友好的界面,可以在其中监视正在运行的应用程序,并查看运行历史。
Workstation:一个强大的界面,可通过拖拽的方式构建多智能体应用程序。
Server Manager:一个简单易用的监控与管理工具,用于管理大规模分布式的多智能体应用程序。
Gallery:即将推出!
启动 AgentScope Studio
要启动 Studio,请首先确保已安装了最新版本的 AgentScope。然后,可以通过运行以下 Python 代码:
import agentscope
agentscope.studio.init()
或者,可以在终端中运行以下命令:
as_studio
之后,可以在 http://127.0.0.1:5000
访问 AgentScope Studio。
当然,AgentScope Studio的 IP 地址和端口都可以更改,并且可以通过以下方式引入应用的运行记录:
import agentscope
agentscope.studio.init(
host="127.0.0.1", # AgentScope Studio 的 IP 地址
port=5000, # AgentScope Studio 的端口号
run_dirs = [ # 您的运行历史目录
"xxx/xxx/runs",
"xxx/xxx/runs"
]
)
Dashboard
Dashboard 是一个 Web 界面,用于监视正在运行的应用程序,并查看运行历史。
注意
目前,Dashboard 存在以下限制,我们正在努力改进。欢迎任何反馈、贡献或建议!
运行的应用程序和 AgentScope Studio 必须在同一台机器上运行,以保持 URL 和路径的一致性。如果需要在其它机器上访问 AgentScope Studio,可以尝试通过在远程机器上运行以下命令将端口转发到远程机器:
# 假设 AgentScope 在 {as_host}:{as_port} 上运行,远程机器的端口为 {remote_machine_port} ssh -L {remote_machine_port}:{as_host}:{as_port} [{user_name}@]{as_host}
对于分布式应用程序,支持单机多进程模式,但尚不支持多机多进程模式。
注册应用程序
启动 AgentScope Studio 后,可以通过指定 agentscope.init()
函数中的 studio_url
参数来注册应用程序:
import agentscope
agentscope.init(
# ...
project="xxx",
name="xxx",
studio_url="http://127.0.0.1:5000" # AgentScope Studio 的 URL
)
注册后,可以在 Dashboard 中查看正在运行的应用程序。为了区分不同的应用程序,可以指定应用程序的 project
和 name
。
注意:一旦注册了应用程序,
agentscope.agents.UserAgent
中的用户输入就会转移到 AgentScope Studio 的 Dashboard 中,您可以在 Dashboard 中输入。
引入运行历史
在 AgentScope 中,运行历史默认会保存在 ./runs
目录下。为了引入运行历史,可以在 agentscope.studio.init()
函数中指定 run_dirs
参数:
import agentscope
agentscope.studio.init(
run_dirs = ["xxx/runs",]
)
Workstation
Workstation 是为零代码用户设计的,可以通过拖拽的方式构建多智能体应用程序。
注意:Workstation 仍处于快速迭代阶段,界面和功能可能会有所变化。欢迎任何反馈、贡献或建议!
快速使用
AgentScope Studio中,拖过点击 workstation 图标进入 Workstation 界面。 它由侧边栏、工作区和顶部工具栏组成。
侧边栏:提供预构建的示例,帮助开发者熟悉工作站,并提供可拖动的组件来构建应用程序。
工作区:主要工作区,可以在其中拖放组件来构建应用程序。
顶部工具栏:包含导出、加载、检查和运行等功能。
内置样例
对于初学者,建议从预构建的示例开始,可以直接点击示例以将其导入到中央工作区。或者,为了获得更有结构化的学习体验,您可以选择跟随每个示例链接的教程。这些教程将逐步引导您如何在 AgentScope Workstation 上构建每个多智能体应用程序。
构建应用程序
要构建应用程序,请按照以下步骤操作:
选择和拖动组件:从侧边栏中选择您想要的组件,然后将其拖放到中央工作区。
连接节点:大多数节点都有输入和输出点。单击一个组件的输出点,然后将其拖动到另一个组件的输入点,以创建消息流管道。这个过程允许不同的节点传递消息。
配置节点:将节点拖放到工作区后,单击任何节点以填写其配置设置。可以自定义提示、参数和其他属性。
运行应用程序
构建应用程序后,单击“运行”按钮。 在运行之前,Workstation 将检查您的应用程序是否存在任何错误。如果有任何错误,您将被提示在继续之前纠正它们。 之后,应用程序将在与 AgentScope Studio 相同的 Python 环境中执行,并且可以在 Dashboard 中找到它。
导入/导出应用程序
AgentScope Workstation 支持导入和导出应用程序。 单击“导出 HTML”或“导出 Python”按钮,以生成可以分发给社区或本地保存的代码。 如果要将导出的代码转换为 Python,请按以下步骤将 JSON 配置编译为 Python 代码:
as_workflow config.json --compile ${YOUR_PYTHON_SCRIPT_NAME}.py
需要进一步编辑应用程序,只需单击“导入 HTML”按钮,将之前导出的 HTML 代码上传回 AgentScope Workstation。
检查应用程序
构建应用程序后,可以单击“检查”按钮来验证应用程序结构的正确性。将执行以下检查规则,不用担心这些规则过于复杂,Workstation 将会自动执行检查并给出提示。
Model 和 Agent 的存在:每个应用程序必须包含至少一个 model 节点和一个 agent 节点。
单连接策略:每个组件的输入不应该有多个连接。
必填字段验证:所有必填字段必须填充,以确保每个节点具有正确运行所需的参数。
一致的配置命名:Agent 节点使用的“Model config name”必须对应于 Model 节点中定义的“Config Name”。
节点嵌套正确:ReActAgent 等节点应仅包含工具节点。类似地,IfElsePipeline 等 Pipeline 节点应包含正确数量的元素(不超过 2 个),而 ForLoopPipeline、WhileLoopPipeline 和 MsgHub 应遵循一个元素的规则(必须是 SequentialPipeline 作为子节点)。
Server Manager
阅读本节内容需要先了解 AgentScope 分布式 的基本概念及用法。
Server Manager 是一个用于监控和管理 AgentScope 智能体服务器进程(Server)以及大规模分布式应用的图形化界面。
注册 Server 进程
在初始化 RpcAgentServerLauncher
时传入 studio_url
参数即可实现注册。
# import some packages
server = RpcAgentServerLauncher(
# ...
studio_url="http://studio_ip:studio_port", # connect to AgentScope Studio
)
更具体的注册方法请参考 分布式 中 连接 AgentScope Studio 部分。
管理 Server 进程
从 AgentScope Studio 主页面或侧边栏中的 Server Manager 按钮即可进入 Server Manager 页面。 当前 Server Manager 页面由 Servers 列表, Agents 列表, Memory 列表三个部分构成。
Servers 列表
注册到 Studio 的智能体服务器进程(Server)都会显示在 Server Manager 页面的 Servers 列表中,列表中会不仅会显示每个 Server 的 ID
, Hostname
, Port
, Created Time
,还会显示每个 Server 的状态以及计算资源使用情况,包括 Status
, CPU Usage
, Memory Usage
。
其中 Status
有以下几种:
- running
:表示 Server 正在运行。
- dead
:表示 Server 已停止运行。
- unknown
:表示目前无法正常访问 Studio 服务。
只有在 running
状态的 Server 才会显示 CPU 和 Memory 的使用情况。用户可以点击 Servers 栏左边的刷新按钮来刷新 Servers 列表,同时也能够通过点击 Servers 栏右侧的删除按钮来一键删除所有已经处于 dead
状态的 Server。
Servers 列表每行的最后一列都提供了删除按钮,用于关闭并删除 Server,需要注意的是该操作是无法恢复的,因此需要谨慎使用。
Agents 列表
在点击任意处于 running
状态的 Server 行后,会在页面中展开 Agents 列表,该列表中会显示该 Server 下所有 Agent,列表中会显示每个 Agent 的 ID
, Name
, Class
, System Prompt
以及 Model
。
用户同样可以通过 Agents 列表栏左侧的刷新按钮来刷新 Agents 列表。并且用户也可以通过每个 Agent 行最右侧的删除按钮来删除该 Agent,并通过 Agents 列表栏右侧的删除按钮来批量删除 Server 中所有的 Agent。这里的删除操作都是不可恢复的,因此需要谨慎使用。
Memory 列表
在点击任意 Agent 行后,会在页面中展开 Memory 列表,该列表中会显示该 Agent 的 Memory 中的所有消息,每条消息会在左侧显示其 Name
和 Role
属性值,在点击后会在列表右侧显示该消息的具体内容。
这里同样可以点击 Memory 列表栏左侧的刷新按钮来刷新当前的 Memory 列表。