微信扫码
与创始人交个朋友
我要投稿
AgentScope 旨在帮助开发人员轻松、可靠、高性能地构建多智能体应用程序。该平台具有三种高级功能:
• 易于使用:采用纯 Python 编程,具有各种预构建的组件可立即使用,适合具有不同级别定制要求的开发人员或用户。
• 高稳健性:支持定制的容错控制和重试机制,增强应用程序的稳定性。
• 基于参与者的分布:使开发人员能够以集中式编程的方式构建分布式多代理应用程序,从而简化开发。
项目地址:https://github.com/modelscope/agentscope[1]
下面看一下 AgentScope 工作站的预览图:
我们先来了解 AgentScope 的核心概念。
消息 是 AgentScope 中通信的单位,是不同 Agent 之间进行信息交换的载体。
消息是 Python 中的字典对象,使用起来很简单,下属代码定义了两个消息:
from agentscope.message import Msg
message_from_alice = Msg("Alice", "Hi!")
message_from_bob = Msg("Bob", "What about this picture I took?", url="/path/to/picture.jpg")
智能体是系统中的活动实体,他负责负责处理信息、做出决策和采取行动。
AgentScope 通过两个主要功能定义其行为:
回复:将消息作为输入并生成相应的响应,推动对话流程。观察:处理传入消息而不生成直接回复,允许代理被动收集信息并做出相应的反应。
下面展示如何定义智能体:
dialogAgent = DialogAgent(name="assistant", model_config_name="gpt-4", sys_prompt="You are a helpful ai assistant")
userAgent = UserAgent()
智能体对话很简单,只需要把消息传入智能体,函数返回值就是智能体的回答。
result = dialogAgent(message_from_alice)
下面展示两个智能体持续对话,用户输出 exit
退出:
x = None
while True:
x = dialogAgent(x)
x = userAgent(x)
# 如果用户输入"exit",则终止对话
if x.content == "exit":
print("Exiting the conversation.")
break
记忆(memory)用于存储历史消息,从而使智能体能够根据上下文提供更加连贯,更加自然的响应。
TemporaryMemory
是 AgentScope 一个基于内存的Memory实现,
工具是智能体连接现实世界的通道,也称之为服务函数(Service Function)。
服务函数(Service function)是可以增强智能体能力工具,例如执行Python代码、网络搜索、 文件操作等。
AgentScope 内置了很多函数,通过 agentscope.service.{函数名}
可以快速调用。
虽然内置的工具函数已经足够满足很多需求,但是免不了希望贴合自身业务来创建自定义工具函数。
AgentScope 提供了创建函数的功能,新的Service函数必须满足以下要求才能被正常使用:
• 具有格式化的函数说明(推荐Google风格),以便ServiceToolkit提取函数说明。
• 函数名称应该是自解释的,这样智能体可以理解函数并正确使用它。
• 在定义函数时应提供参数的类型(例如def func(a: int, b: str, c: bool)
),以便大模型 能够给出类型正确的参数。
看一个示例:
def create_file(file_path: str, content: str = "") -> ServiceResponse:
"""
创建文件并向其中写入内容。
Args:
file_path (str): 将要创建文件的路径。
content (str): 要写入文件的内容。
Returns:
ServiceResponse: 其中布尔值指示成功与否,字符串包含任何错误消息(如果有),包括错误类型。
"""
# ... [为简洁起见省略代码]
但是对复杂应用来说,细致的描绘每一次信息交流对开发者来说是非常困难的。Pipeline 主要用于简化「描述消息传播」的编程工作。
AgentScope Studio 是一个开源的 Web UI 工具包,用于构建和监控多智能体应用程序。它提供以下功能:
• Dashboard:一个用户友好的界面,可以在其中监视正在运行的应用程序,并查看运行历史。
• Workstation:一个强大的界面,可通过拖拽的方式构建多智能体应用程序。
• Gallery:即将推出!
• Server Management:即将推出!
下面我们看一下如何运行 Studio。我直接在 Colab 上运行,速度更快一些,大家本地运行的的时候会更简单。
先安装:
pip install agentscope --pre
然后执行下面 Python 代码,访问浏览器即可:
import agentscope
agentscope.studio.init()
Colab 运行复杂一点,我这里单独讲一下。
仍然是先安装 agentscope 依赖:
!pip install --ignore-installed agentscope --pre
获取 外网地址,有下面两种方法:
!pip install ipwhois
from ipwhois import IPWhois
from requests import get
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('Public IP: ', ip)
print('CIDRs: ', cidr)
# or
!curl https://loca.lt/mytunnelpassword
生成执行脚本,
!echo "import agentscope" > run.py
!echo >> run.py
!echo "agentscope.studio.init()" >> run.py
!cat run.py
运行程序:
!python run.py & npx localtunnel --port 5000
访问即可看到如下界面:
打开工作站可以看到 示例,工作流和具体的编辑画布。
打开对话 这个例子,填入必要的 ak,
你可以从工具栏里面投入你需要的元素,
当然也可以修改模板中的内容,比如两个智能体的提示语:
点击运行,可以看到运行成功的提示:
我们现在进入 Dashboard
页面,可以看到我们的程序已经运行了:
点击程序,默认打开程序的对话页面,我们随便问个问题:
由于这个流程很简单,就是和大模型对话没啥特别的。
现在我们运行一个多人聊天的程序,
大致的流程如下:
再次来到聊天界面,我的身份是 King,先给大家放个假:
Boyu 竟然说英文,朕很生气,拖出去斩了:
话说,自己肯定不适合搞格局,上朝要是如此,我真的是能烦死。
对了,运行程序前,我们可以初始化自己的模型配置,这样就不用再到界面上维护大模型的配置了。
import agentscope
from agentscope.agents import DialogAgent
from agentscope.agents import UserAgent
from agentscope.pipelines.functional import sequentialpipeline
agentscope.init(
model_configs=[
{
"model_type": "gemini_chat",
"config_name": "gemini-pro",
"model_name": "gemini-pro",
"api_key": "xxx", # Load from env if not provided
"organization": "xxxyyy", # Load from env if not provided
"generate_args": {
"temperature": 0.5,
},
},
{
"model_type": "post_api_chat",
"config_name": "my_post_api",
"api_url": "https://xxx",
"headers": {},
},
],
)
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], # provide knowledge object directly
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 ---
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-24
「深度」O1意义被大大低估!OpenAI核心科学家重磅发声:测试时计算将引爆AGI时代!
2024-12-24
AI大牛解析o3技术路线!大模型下一步技术路线已现端倪?
2024-12-23
AI Agent智能体产品的5个级别
2024-12-23
Anthropic官方揭秘:构建AI智能体的"最强攻略"!
2024-12-23
2025年AI大模型的趋势与洞察
2024-12-23
阶跃星辰完成数亿美元 B 轮融资,发力「超级模型」+「超级应用」
2024-12-23
百川智能发布全链路领域增强金融大模型Baichuan4-Finance,金融能力领先GPT-4o近20%
2024-12-22
AI“落地”系列——Agent
2024-05-28
2024-04-26
2024-08-13
2024-08-21
2024-07-09
2024-06-13
2024-08-04
2024-04-11
2024-07-18
2024-07-01