- 大家好,我是 同学小张,日常分享AI知识和实战案例
- 欢迎 点赞 + 关注 👏,持续学习,持续干货输出。
- 一起交流💬,一起进步💪。
- 微信公众号也可搜【同学小张】 🙏
本站文章一览:
这是我们学习的第四款智能体框架了。
前面我们学习了 AutoGPT、MetaGPT、LangGraph 等智能体应用开发框架,各有优缺点。今天我们开始学习AgentScope这一款多智能体开发框架。在AI快速发展的现在,多上手体验一下各个框架,更能加深对AI大模型应用开发中各种知识的深入理解。AI界大佬吴恩达也督促大家今年关注 AI Agent 工作流的发展和应用。所以,卷起来吧,多看看,多用用,没坏处。
0. AgentScope简介
AgentScope是阿里开源的一款全新的多智能体协同的Multi-Agent应用框架,旨在帮助开发者更轻松地构建基于大语言模型的多智能体应用程序。它具有以下特点:
- 易用性:AgentScope注重易用性,为开发者提供了简洁明了的编程模式,丰富的语法工具和内置资源,使得编程多智能体应用程序变得更加轻松愉快。
- 鲁棒性:AgentScope集成了全面的服务级重试机制和规则性修正工具,以处理LLMs响应中的明显格式问题。此外,AgentScope还提供了可定制的容错配置,使开发者能够通过参数来自定义容错机制。
- 支持多模态数据:AgentScope支持多模态数据在对话呈现、消息传输和数据存储中的应用,通过统一的基于URL的属性来解耦多模态数据的传输和存储,从而最大限度地减少了消息在每个智能体内的复杂性。
- 分布式部署:针对分布式应用程序带来的额外编程难题和系统设计挑战,AgentScope也提供了支持。
1. 安装
因为我的目的是学习,不光要会用,有时候还会深入源码去看一下实现原理,所以我这里使用源码安装。其它安装方法请参考官方安装教程。
# 从GitHub上拉取AgentScope的源代码 git clone https://github.com/modelscope/agentscope.git cd agentscope # 针对本地化的multi-agent应用 pip install -e .
如果报错 Timeout:
使用以下命令重新安装:
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 快速上手 - 快速跑通第一个Demo
2.1 完整代码
老规矩,先上完整代码,大家复制粘贴,先跑通再说。
import agentscope import os openai_api_key = os.getenv('OPENAI_API_KEY') # 一次性初始化多个模型配置 openai_cfg_dict = { "config_name": "openai_cfg", # A unique name for the model config. "model_type": "openai", # Choose from "openai", "openai_dall_e", or "openai_embedding". "model_name": "gpt-3.5-turbo", # The model identifier used in the OpenAI API, such as "gpt-3.5-turbo", "gpt-4", or "text-embedding-ada-002". "api_key": openai_api_key, # Your OpenAI API key. If unset, the environment variable OPENAI_API_KEY is used. } agentscope.init(model_configs=[openai_cfg_dict]) from agentscope.agents import DialogAgent, UserAgent # 创建一个对话智能体和一个用户智能体 dialogAgent = DialogAgent(name="assistant", model_config_name="openai_cfg", sys_prompt="You are a helpful ai assistant") userAgent = UserAgent() x = None x = dialogAgent(x) print("diaglogAgent: \n", x) x = userAgent(x) print("userAgent: \n", x)
运行结果:
2.2 代码详解
下面来解释下上面的代码。
2.2.1 配置
像其它框架一样,我们也需要配置我们使用的大模型以及API Key等参数。AgentScope的配置方式是创建一个字典类型的变量,在变量里填入相应值,然后通过初始化接口传递给AgentScope:
openai_cfg_dict = { "config_name": "openai_cfg", # A unique name for the model config. "model_type": "openai", # Choose from "openai", "openai_dall_e", or "openai_embedding". "model_name": "gpt-3.5-turbo", # The model identifier used in the OpenAI API, such as "gpt-3.5-turbo", "gpt-4", or "text-embedding-ada-002". "api_key": openai_api_key, # Your OpenAI API key. If unset, the environment variable OPENAI_API_KEY is used. } agentscope.init(model_configs=[openai_cfg_dict])
注意看下配置的Key值:config_name
, model_type
, model_name
和 api_key
。通过 agentscope.init
函数设置进去。
关于配置的疑问
没搞懂的是,这里的配置是必须传入?还是只要环境变量中存在了 OPENAI_API_KEY
值就可以不用传 “api_key
” ?
- 为什么有这个疑问:因为我并没有找到在哪里设置 代理地址,而我的API Key不是原生的OpenAI Key,必须通过代理才能使用OpenAI的接口。但是以上代码在没有传递代理地址的情况下竟然运行成功了,那么,是不是只要环境变量中有了,不传递这个config也行?
- 我将
api_key
去掉,也运行成功了… - 不传模型名字倒是不行,会报错:
2.2.2 创建智能体
接下来,代码中创建了两个智能体:一个对话智能体DialogAgent
和 一个用户智能体 userAgent
# 创建一个对话智能体和一个用户智能体 dialogAgent = DialogAgent(name="assistant", model_config_name="openai_cfg", sys_prompt="You are a helpful ai assistant") userAgent = UserAgent()
2.2.3 运行智能体
然后是运行智能体:
x = None x = dialogAgent(x) print("diaglogAgent: \n", x) x = userAgent(x) print("userAgent: \n", x)
从运行效果来看,对话智能体就是与用户进行对话。用户智能体,其实就是接收用户的输入,让人参与其中进行干预。
好了,本文就先写到这里,主要是带大家认识一下AgentScope,并搭建好运行环境。运行了一个简单的示例,让大家对AgentScope的使用有一个简单的认识,没有深入。后面我们随着更多案例的实践,会逐渐深入探索AgentScope的原理及应用。
如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~
- 大家好,我是 同学小张,日常分享AI知识和实战案例
- 欢迎 点赞 + 关注 👏,持续学习,持续干货输出。
- 一起交流💬,一起进步💪。
- 微信公众号也可搜【同学小张】 🙏
本站文章一览: