|
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 StudioAgentScope 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 ---
|