AgentScope是通义实验室开源的multi-agent编程框架,专为开发人员设计,提供了丰富的组件, 全面的文档和广泛的兼容性。同时,AgentScope Workstation提供了在线拖拉拽编程和在线小助手(copilot)功能,帮助开发者迅速上手!支持自定义的容错控制和重试机制,以提高应用程序的稳定性,支持以中心化的方式构建分布式多智能体应用程序。
github链接
: https://github.com/modelscope/agentscope
论文链接
:AgentScope: A Flexible yet Robust Multi-Agent Platform
在这里插入图片描述
- 更多介绍参考
:
- 打造可靠的多智能体生态系统:从集成到部署AgentScope为多智能体应用提供的全面支持方案
- 解决多Agent信息传递难题:AgentScope实现分布式架构下的高效协作与优化跨机器通信与任务调度,扩展性提升
1.1 安装
- 从github上clone AgentScope仓库( https://github.com/modelscope/agentscope),安装最新代码
git clone git@github.com:modelscope/agentscope.git
cd AgentScope
# On mac
pip install -e .\[full\]
# On windows
pip install -e .[full]
#从pip安装的AgentScope-推荐
pip install agentscope
1.2 配置模型
- 在AgentScope中配置DashScope支持的通义(qwen-max)模型配置or 其他配置:
import os
"""
在环境变量中设置了'DASHSCOPE\_API\_KEY':
命令行中执行:export DASHSCOPE\_API\_KEY='替换成你的apikey'
可以通过命令行:echo $DASHSCOPE\_API\_KEY 来检查是否真的设置成功
"""
dashscope\_example\_config ={
"model\_type":"dashscope\_chat",
"config\_name":"tongyi\_qwen\_config",
"model\_name":"qwen-max",
"api\_key":f"{os.environ.get('DASHSCOPE\_API\_KEY')}",
}
除了DashScope的API,在AgentScope中也可以配置其他流行的模型
# 使用OpenAI模型(gpt-4o,或者替换成其他openai模型)的配置
# 相似的可以echo $OPENAI\_API\_KEY 来检查OPENAI\_API\_KEY是否设置成功
openai\_example\_config ={
"model\_type":"openai",
"config\_name":"gpt-4o-config",
"model\_name":"gpt-4o",
"api\_key":f"{os.environ.get('OPENAI\_API\_KEY')}",
"generate\_args":{
"temperature":0.5,
},
}
# 其他可以通过post 访问的LLM接口
# 下面的my\_postapi\_config可以对应的open ai的post ai端口规则
# curl $YOUR\_URL\_TO\_MODEL \
# -H "Content-Type: application/json" \
# -H "Authorization: Bearer $YOUR\_API\_KEY\_IF\_ANY" \
# -d '{
# "model": "XXX",
# "messages": [
# .....
# ]
# }'
postapi\_example\_config ={
"model\_type":"post\_api\_chat",
"config\_name":"my\_postapi\_config",
"api\_url":"$YOUR\_URL\_TO\_MODEL",
"headers":{
"Content-Type":"application/json",
"Authorization":"Bearer YOUR\_API\_KEY\_IF\_ANY"
},
"messages\_key":"messages",
"json\_args":{
"model":"XXX",
}
}
- 目前推荐直接配置一个model_configs.json文件
这里使用零一万物主要是新用户免费 🐶
[ { "config\_name":"yi-lightning", "model\_name":"yi-lightning", "model\_type":"yi\_chat", "api\_key":"57c7959c" }, { "config\_name":"yi-vision-v2", "model\_name":"yi-vision-v2", "model\_type":"yi\_chat", "api\_key":"57a28cbc7959c" }, { "model\_type":"openai\_chat", "config\_name":"gpt-4o", "model\_name":"gpt-4o", "api\_key":"sk-", "client\_args":{ "base\_url":"http://xxx.com:4000" } }, { "model\_type":"openai\_chat", "config\_name":"gemini-2.0-flash", "model\_name":"google\_ai\_studio/gemini-2.0-flash-001", "api\_key":"sk-", "client\_args":{ "base\_url":"http://:4000" } }, { "model\_type":"openai\_chat", "config\_name":"gemini-2.5-flash", "model\_name":"google\_ai\_studio/gemini-2.5-flash-preview-04-17", "api\_key":"sk-", "client\_args":{ "base\_url":"http://:4000" } } ]
1.3 初始化,创建dialog_agent
显示和隐式看个人喜好,
import agentscope
# 让config生效
agentscope.init(
model\_configs=[
dashscope\_example\_config,
openai\_examaple\_config,
# 其他模型配置也可以继续添加在这里~
],
)
# or
agentscope.init(model\_configs="agentscope/model\_configs.json")
作为最基础的一种agent,DialogAgent可能是最简单上手的一个agent。创建一个实例,只需要给dialog agent命名、简单的系统提示词和一个模型的配置(config)的名字
from agentscope.agents import DialogAgent
dialog\_agent = DialogAgent(
name="Assistant",
sys\_prompt="You're a helpful assistant.",
model\_config\_name="gemini-2.0-flash",# 其中一个你在上面步骤准备好的配置名字(config\_name对应的值)
)
1.4 创建user_agent
有了一个有记忆、能和你对话的智能体dialog_agent,现在我们创建一个user_agent作为你在电子世界的代理,用来接收用户输入信息。
from agentscope.agents.user\_agent import UserAgent
user\_agent = UserAgent()
# start the conversation between user and assistant
x =None
while x isNoneor x.content !="exit":
x = dialog\_agent(x)
x = user\_agent(x)
1.5 UI可视化
AgentScope 支持基于 AgentScope Studio 和 Gradio 的网页可视化,同时支持用户对接自定义或第三方的可视化平台。
AgentScope Studio
AgentScope Studio 是基于 React(vite) 和 NodeJS 开发的 WebUI 工具,用于应用的可视化,和监控应用运行,监控 API 调用以及 Token 使用情况。
在这里插入图片描述
- 首先需要安装 npm
# MacOS
brew install node
# Ubuntu
sudo apt update
sudo apt install nodejs npm
# Windows 请访问 https://nodejs.org/ 进行安装
通过以下命令进行安装
npm install -g @agentscope/studio
- 在命令台通过如下命令启动
as\_studio
在这里插入图片描述
启动 AgentScope 的 Python 程序时,通过 agentscope.init 函数中的 studio_url 字段连接 AgentScope Studio。
import agentscope
agentscope.init(
# ...
studio\_url="https://localhost:3000" # 替换成你本地的 AgentScopeStudio 地址
)
# ...
备注:一旦连接,Python 程序中所有智能体对象调用 speak 函数打印出的输出都将转发 到 AgentScope Studio,同时程序中的 UserAgent 的输入操作也将从终端转移到 AgentScope Studio 的 Dashboard 面板中。
Studio 中的 Dashboard 页面将按照 agentscope.init 函数中传入的 project 参数对程序 进行分组,点击后即可查看该项目分组内所有历史运行情况。
需要用户进行输入时,对话界面的输入按键会进行提示,不需要输入时,输入按钮会处于禁用状态。
完整代码
:
from agentscope.agents import DialogAgent, UserAgent
import agentscope
agentscope.init(model\_configs="agentscope/agentscope/examples/test\_ting/test/model\_configs.json",
studio\_url="http://127.0.0.1:5000")
# 创建对话Agent和用户Agent
dialog\_agent = DialogAgent(
name="Assistant",
sys\_prompt="你是一个AI助手,你会回答用户的问题。",
model\_config\_name="gpt-4o",
)
user\_agent = UserAgent()
# 开始对话 user and assistant
x =None
while x isNoneor x.content !="exit":
x = dialog\_agent(x)
x = user\_agent(x)
在这里插入图片描述
在这里插入图片描述
Gradio
首先,请确保已安装完整版本的 AgentScope, 其中包含 Gradio 包。
# From pypi
pip install agentscope[full]
# From source code
cd agentscope
pip install .[full]
之后,请确保您的应用程序被封装在一个 main 函数中。
from agentscope.agentsimportDialogAgent,UserAgent
import agentscope
def main():
# Your code here
agentscope.init(model\_configs={
"config\_name":"my-qwen-max",
"model\_type":"dashscope\_chat",
"model\_name":"qwen-max"
})
agent =DialogAgent(
name="Alice,
model\_config\_,
sys\_prompt="You're a helpful assistant named Alice."
)
user =UserAgent(agent)
msg =None
whileTrue:
msg =agent(msg)
msg =user(msg)
if msg.content=="exit":
break
然后在终端执行以下命令启动 Gradio UI:
as\_gradio {path\_to\_your\_python\_code}
最后,您可以访问 Gradio UI,如下所示:
自定义可视化
自定义可视化主要分为两个组成部分
- 消息显示:将智能体中 speak 函数打印的输出转发到需要显示的地方
- 用户输入:将 UserAgent 中的 ** 输入操作 ** 转移到目标平台,这样用户可以从目标平台进行输入
上述两个操作分别是通过 AgentScope 中的钩子函数 pre_speak_hook,以及 UserAgent 中 的 override_input_method 完成(AgentScope 中的 Studio 和 Gradio 也是 通过同样的方法实现)。
更多内容参考文档:自定义可视化
- AgentScope Workstation =========================
2.1 Workstation
首先确保您已安装最新版本的 AgentScope。
执行以下 Python 代码来启动 AgentScope Studio:
import agentscope
agentscope.studio.init()
或在终端中运行以下 bash 命令:
然后访问 https://127.0.0.1:5000 进入 AgentScope Studio,并点击侧边栏中的 Workstation 图标进入。
- 中央工作区 :您可以在这个主要区域拖拽组件来构建应用程序。
- 顶部工具箱 :用于导入、导出、检查和运行您的应用程序。
- 内置示例
对于初学者,我们强烈建议从预构建的示例开始。您可以直接单击示例将其导入到中央工作区。或者,为了获得更加结构化的学习体验,您也可以选择跟随每个示例链接的教程。这些教程将一步步指导如何在 AgentScope Workstation 上构建多智能体应用。
- 构建应用
要构建应用程序,请执行以下步骤:
- 选择并拖拽组件:从侧边栏中单击并拖拽所选组件到中央工作区。
- 连接节点:大多数节点都有输入和输出点。单击一个组件的输出点并拖拽到另一个组件的输入点,以创建消息流管道。这样不同的节点就可以传递消息。
- 配置节点:将节点放入工作区后,单击任意一个节点来填写其配置设置。您可以自定义提示、参数和其他属性。
- 运行应用
构建完应用程序后,单击 "运行" 按钮。在运行之前,Workstation 会检查应用程序中是否有任何错误。如果有错误,系统会提示您在继续之前进行修正。之后,您的应用程序将在与 AgentScope Studio 相同的 Python 环境中执行,您可以在 Dashboard 中找到它。
- 导入 / 导出应用
Workstation 支持导入和导出您的应用程序。单击 "导出 HTML" 或 "导出 Python" 按钮可生成代码,您可以将其分发给社区或本地保存。如果要将导出的代码转换为 Python 代码,可以使用以下命令将 JSON 配置编译为 Python 代码:
# 编译
as\_workflow config.json--compile ${YOUR\_PYTHON\_SCRIPT\_NAME}.py
如果您想直接运行本地配置,可以使用以下命令:
# 运行
as\_gradio config.json
想要进一步编辑您的应用程序吗?只需单击 "导入 HTML" 按钮,将以前导出的 HTML 代码重新上传到 AgentScope Workstation 即可。
- 检查应用
构建应用程序后,您可以单击 "检查" 按钮来验证应用程序结构的正确性。将执行以下检查规则:
- 模型和智能体存在检查:每个应用程序必须至少包含一个模型节点和一个智能体节点。
- 单连接策略:每个组件的每个输入不应该有多于一个连接。
- 必填字段验证:所有必填输入字段都必须填写,以确保每个节点都有正确运行所需的参数。
- 配置命名一致性:智能体节点使用的 "模型配置名称" 必须与模型节点中定义的 "配置名称" 相对应。
- 适当的节点嵌套:像 ReActAgent 这样的节点应该只包含工具节点。同样,像 IfElsePipeline 这样的管道节点应该包含正确数量的元素(不超过 2 个),而 ForLoopPipeline、WhileLoopPipeline 和 MsgHub 应该遵守只有一个元素的规则(必须是 SequentialPipeline 作为子节点)。
2.2 快速使用
- 案例教学
在这里插入图片描述
- 自动转化代码
在这里插入图片描述
点击运行后可以在
Dashboard
查看效果