AgentScope是用来构建智能体的框架,其Agent模块是构建智能体的主要组件。AgentScope的agent模块提供哪些能力?如何使用?本文我们就来一起了解一下。
1.AgentScope的Agent模块
智能体是能够与环境和其他智能体交互,并采取行动改变环境的自主实体,需要具备如下能力:
交互能力:能够接收输入消息,并根据消息内容生成响应消息。
角色扮演:通过提示词等方式指定Agent承担的角色,例如“你是一个Python专家”,从而让其按照指定角色进行交互。
记忆功能:用于存储和利用对话历史,使智能体能够根据上下文提供更加准确的响应。
多模态支持:可以处理包含多模态数据(如图像、视频)的消息。
Agentscope中的agent模块,封装了上述能力,并提供以下方法帮助开发者快速构建自己的Agent:
AgentBase:是AgentScope为所有自定义Agent提供的基类,负责维护所有agent的通用行为,定义了所有agent都应该遵循的基本规则和功能。
AgentPool:各种不同功能agent的集合,每个agent都是为了完成特定目的而设计的,用户可以从这个池中选择适合自己需求的agent。
定制Agent:允许用户定制自己的agent,确保它能够满足用户项目的具体需求。
2.AgentScope的Agent构建
2.1.AgentBase
2.1.1.关键特性和方法
AgentBase
是构成所有 agent 结构的基础,提供了一个包含基本属性和方法的模板。该类中的属性和方法支撑了任何会话 agent 的核心功能,确保它们能够有效地进行交互和处理任务。同时,它作为所有自定义 agent 的超类,可以保证不同 agent 之间的一致性和兼容性。
- 关键特性
- memory(记忆):让agent能够记住之前的对话内容,让对话更连贯,响应更准确。
- model(模型):agent的“大脑”,负责处理信息并做出反应,它根据记忆和接收到的新信息来决定怎么回应。
- sys_prompt和 engine(系统提示和引擎):系统提示是给agent的指令,引擎则负责根据情况动态生成合适的提示,帮助智能体更好地互动。
- to_dist(分布式):让智能体能够和其他智能体一起工作,提高效率。
- 关键方法
- observe():允许 agent 注意到消息而不立即回复,从而根据观察到的消息更新它的记忆。
- reply():定义了 agent 对于传入消息的响应行为,封装了 agent 输出的逻辑。
2.1.2.代码解读
AgentBase
基类定义了一个智能体的基本框架,开发者需要根据这个框架来创建具体的智能体:
AgentBase
继承自另一个名为Operator
的类,这意味着AgentBase
可以使用Operator
类中的方法和属性。AgentBase
类的3个重要的部分:初始化方法
__init__
:创建一个新的
AgentBase
对象时被调用。它接受几个参数,比如
name
(agent的名字)、sys_prompt
(系统提示)、model_config_name
(模型配置的名字)和use_memory
(是否使用记忆功能)。
观察方法
observe
:这是一个可选方法,用于根据agent观察到的信息来更新它的内部状态。
如果智能体启用了记忆功能,这个方法会将观察到的信息添加到记忆中。
回复方法
reply
:这是agent必须实现的核心方法,用于处理接收到的信息并生成一个合适的回复。
如果没有实现这个方法,程序会抛出一个错误,提示缺少必需的
reply
函数。
|
|
2.2.AgentPool
AgentScope还提供了AgentPool(agent池),它是agent的集合,目的是提供具备不同功能agent的模板,帮助开发者更快地开发应用。
AgentPool中已经预置的agent包括:
AgentBase:这是所有智能体的“爸爸”类,提供了智能体需要的基本属性和方法。
DialogAgent:这个智能体擅长理解和管理对话,它能够根据上下文生成合适的回复。
DictDialogAgent:和DialogAgent类似,但它回复的消息是Json格式的,方便程序理解。
UserAgent:这个智能体负责和用户互动,收集用户的输入,然后生成可能包含链接或额外信息的消息。
ReActAgent:这个智能体使用了一种叫做ReAct的算法,能够自动调用工具来处理复杂的任务。
AgentScope还在持续增加新的agent,以适应各种不同的应用需求。
总的来说,AgentPool就像是一个大家庭,里面有各种不同特长的智能体,开发者可以根据需要选择合适的智能体来帮助他们开发应用。
2.3.定制Agent
开发人员可以基于AgentPool中提供的agent,稍加配置,就可以快速实现一个满足需要的agent。
以DialogAgent
为例,我们来定制一个用于客户服务的"聊天智能体”。
- 导入
DialogAgent
类。 - 配置
DialogAgent
,包括设置智能体的名字、使用的模型、系统提示等。 - 创建并配置你的
DialogAgent
。 - 代码示例:
|
|
3.总结
本文介绍了AgentScope框架中的agent模块,其提供一系列预置agent类,可以帮助开发者快速构建agent。
主要内容包括:
AgentBase基类的特性和代码解读;
AgentPool:各种不同特长agent的集合,池子中已预置的agent类有:
AgentBase
DialogAgent
DictDialogAgent
UserAgent
ReActAgent
基于AgentPool提供的类定制agent。
参考:https://arxiv.org/pdf/2402.14034